《VC程序设计》期末复习题集学生用Word文件下载.docx
《《VC程序设计》期末复习题集学生用Word文件下载.docx》由会员分享,可在线阅读,更多相关《《VC程序设计》期末复习题集学生用Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
’\n’;
}
程序的输出第一行是3,第二行是0。
7.[程序](2分)
intf(char*s)
{char*p=s;
while(*p)p++;
returnp-s;
}
f(“ABCDEF”);
程序的输出是6,函数f的功能是求字符串的长度。
8.[程序](2分)
voidf(int*s)
{staticintj;
do{s[j]+=s[j+1];
}while(++j<
2);
voidmain(void)
{intk,a[10]={1,2,3,4,5};
for(f(a),k=0;
k<
5;
k++)cout<
a[k];
cout<
endl;
for(f(a),k=0;
程序输出的第一行是35345,程序输出的第二行是35745。
9.[程序](3分)
intk=1;
voidf(intm)
{m+=k;
k+=m;
{chark=’B’;
cout<
k-‘A’<
m<
’,’<
k<
{inti=4;
f(i);
i<
程序的输出第一行是1,第二行是5,6,第三行是4,6。
10.[程序](2分)
classA{
protected:
intx;
public:
int&
Access(){returnx;
};
classB{
classC:
publicA,publicB{
inty;
C(inta,intb,intc)
{A:
:
x=a;
B:
x=b;
y=c;
Accessy(){returny;
classD:
publicC{
intz;
D(inta,intb,intc,intd):
C(a,b,c){z=d;
Accessz(){returnz;
voidmain()
{Dd(35,100,300,500);
d.A:
Access()+=20;
d.B:
Access()+=d.B:
Access();
d.A:
Access()<
'
'
d.B:
\n'
d.Accessy()<
d.Accessz()<
程序的输出第一行是55,200,第二行是300,500。
11.[程序](2分)
classShape{
Shape(){}
virtualintArea()=0;
classCircle:
publicShape{
intr;
Circle(intc){r=c;
intArea(){returnint(3.1415*r*r);
classRectangle:
inth,w;
Rectangle(intc,intd){h=c;
w=d;
intArea(){returnh*w;
voidfun(Shape&
s){cout<
s.Area()<
{Circlec(4);
fun(c);
Rectangler(10,2);
fun(r);
程序的输出第一行是50,第二行是20。
●完善程序题,共12分
12.下面的程序是统计学生中A类学生与B类学生各多少。
A类学生的标准
是平均分在80分以上,其余都是B类学生。
[程序](5分)
int&
level(intgrade[]或int*grade,intsize,int&
tA,int&
tB)
{inti,sum;
for(i=0,sum=0;
size;
i++)sum+=grade[i];
sum/=size;
if(sum>
=80)returntA;
elsereturntB;
{inta[][4]={{60,80,90,75},{75,85,65,77},{80,88,90,98},
{89,100,78,81},{62,68,69,75},{86,85,77,91}};
inti,A=0,B=0;
for(i=0;
sizeof(a)/sizeof(a[0]);
i++)
level(a[i],4,A,B)++;
A类学生人数为"
A<
B类学生人数为"
B<
13.以下程序中,数组类DArr通过重载运算符“<
”实现数组元素的顺序查找。
顺序查找法的思路是:
从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。
若找到,返回此元素的下标;
否则返回-1。
classDArr{
int*a,n;
//分别为动态数组的指针和元素个数
DArr(constint*b=0,constintm=0)
{if(b)
{a=newint[n=m];
for(inti=0;
n;
i++)a[i]=b[i];
}elsea=0,n=0;
~DArr(){delete[]a;
Elem(inti){returna[i];
intoperator<
(intf)//在当前对象中顺序查找值为f的元素
{for(inti=0;
if(a[i]==f)returni;
return-1;
voidmain(void)
{inti,a[5]={1,2,5,0,-1};
DArrd(a,5);
if((i=d<
2)!
=-1)//在d中查找值为2的元素
cout<
找到指定元素,其下标为"
,值为"
d.Elem(i)<
elsecout<
未找到指定元素\n"
14.下列程序使用递归算法实现单向链表操作,具有创建、显示、释放链表的功能。
structLnode
{doubledata;
Lnode*next;
voidShowList(Lnode*list)
{if(list)
{cout<
list->
data<
if(list->
next)ShowList(list->
next);
voidAddToEnd(Lnode*New,Lnode*&
head)
{if(head==NULL)head=New;
elseAddToEnd(New,head->
next);
voidDeleteList(Lnode*&
head)
{Lnode*p=head;
if(p)
{head=p->
next;
deletep;
if(head)DeleteList(head);
{Lnode*head=NULL,*temp;
temp=newLnode;
while(temp)
{temp->
next=NULL;
data?
cin>
>
temp->
data;
if(temp->
data>
0)AddToEnd(temp,head);
elsebreak;
temp=newLnode;
ShowList(head);
DeleteList(head);
一、填空题(30x2=60)
1.1、设有inta,b;
执行语句:
b=(a=2+3,a*4),a+5;
后,a+b的值为25
。
2、设指针p指向单向链表的某节点,p->
next指向p节点的下一个节点。
节点p是链表的倒数第三个节点的条件是:
p->
next->
next==NULL
3、执行下列语句序列后,变量i的值为,变量j的值为。
找不到匹配的答案
chars[20]=”123\0abc”;
inti=strlen(s),j=sizeof(s);
4、下列程序的运行结果是。
#include<
voidsub(int*x,intn,intk)
{if(k<
=n)sub(x,n,3*k);
*x+=k;
}
voidmain()
{intx=0;
sub(&
x,6,2);
x<
5、下列程序输出的第