D.if(a);a++;elsea--;正确
9.若变量已正确定义,语句“if(a>b)k=0;elsek=1;”和______等价。
A.k=a<=b?
0:
1;错误
B.k=(a>b)?
1:
0;错误
C.k=a<=b;正确
D.k=a>b;错误
10.假设i已定义为整型变量,以下程序段中,while循环的循环次数是______。
i=0;
while(i<10)
{if(i%2)continue;
if(i==5)break;
i++;
}
A.10错误
B.6错误
C.死循环,不能确定次数正确
D.1错误
11.C++语言中while和do-while循环的主要区别是__。
A.while的循环控制条件比do-while的循环控制条件严格错误
B.do-while允许从外部转到循环体内错误
C.do-while的循环体至少无条件执行一次而while的循环体可能一次也不执行正确
D.do-while的循环体不能是复合语句错误
12.若intI=10;执行下列程序后,变量I的正确结果是__。
switch(I){case9:
I++;
case10:
I++;
case11:
I++;break;
default:
I++;}
A.10错误
B.13错误
C.11错误
D.12正确
13.下面有关switch语句的不正确描述是______。
A.switch后面的圆括号内的表达式可以是整型或字符型部分正确
B.switch结构可能执行多个分支中的语句错误
C.switch中每个case后的常量的值必须唯一错误
D.switch结构中每个case必须以break结束正确
14.为了避免嵌套的if-else语义的二义性,C++语言规定else总是与__。
A.同一行上的if错误
B.在其之前未配对的最近的if正确
C.在其之前未配对的if错误
D.缩排位置相同的if错误
15.已知:
inta=0,b=2;对于下列if语句正确的是______。
if(a=b)cout<<"AisequaltoB\n";
A.无输出错误
B.编译出错错误
C.输出:
AisequaltoB,a等于b;正确
D.输出:
AisequaltoB,但a不等于b;错误
16.若a=3,b=0,执行下列语句后,b的值是__。
if(a>=2)
if(a!
=2)b=3;
elseb=2;
elseb=1;
A.0错误
B.1错误
C.3正确
D.2错误
17.有语句定义:
intx,y;则以下程序段中内循环体的执行次数是__。
for(i=5;i;i--)
for(j=0;j<4;j++){…循环体….}
A.30错误
B.25错误
C.24错误
D.20正确
18.以下关于switch语句和break语句的描述中正确的是__。
A.在switch语句中可以不使用break语句正确
B.在switch语句中必须使用break语句错误
C.break语句只能用于switch语句体中错误
D.break语句只能用于循环语句中错误
19.以下程序段__。
x=-1;
do{x=x*x;}while(!
x);
A.是死循环错误
B.循环执行二次错误
C.有语法错误错误
D.循环执行一次正确
20.在while(x)语句中的x与下面的表达式等价的是__。
A.x==0错误
B.x!
=1错误
C.x==1错误
D.x!
=0正确
第3次自测:
复杂数据及运算
1.若有以下定义和语句,则选项中错误的语句是__。
inta=4,b=3,*p,*q,*w;
p=&a;q=&b;w=q;q=NULL;
A.*p=*w;错误
B.*q=0;正确
C.w=p;错误
D.*p=b;错误
2.以下不能正确进行字符串初始化的语句是。
A.char*str="good!
";错误
B.charstr[6]={'g','o','o','d',’!
’,’\0’};错误
C.charstr[]={"good!
"};错误
D.charstr[5]="good!
";正确
3.设int*p,x,a[5]={1,2,3,4,5};p=a;能使x的值为2的语句是。
选择一个答案
A.x=a[2];错误
B.a++;x=*a;错误
C.x=*(p+2);错误
D.x=*(a+1);正确
4.strlen(”a\012b\xab\\bcd\n”)的值为。
选择一个答案
A.10错误
B.11错误
C.9正确
D.13错误
5.下列程序段运行后,i的正确结果为。
inti=0;char*s=“a\041#041\\b”;while(*s++)i++;
A.8正确
B.5错误
C.11错误
D.12错误
6.以下二维数组a的正确说明是。
A.floata(3)(4)错误
B.doublea[2][4]正确
C.floata(3,4)错误
D.inta[3][]错误
7.下列正确的一维数组初始化是。
A.inta[2]={1,2,3,4,5};错误
B.inta[5]={1,2};正确
C.int*a={1,2,3,4,5};错误
D.inta[5]={,,1,2};错误
8.设charstr[100];inti=5;则下列哪一个能正确表示数组的某一个元素。
A.str[i+95]错误
B.(str+i)错误
C.*((str++)+i)错误
D.*(str+i-1)正确
9.设int*p,i;以下正确的语句是__。
A.i=p;错误
B.i=*p;错误
C.*p=10;错误
D.p=&i;正确
10.已有定义intk=2;int*ptr1=&k,*ptr2=&k;,下面不能正确执行的赋值语句是__。
A.k=*ptr1*(*ptr2);错误
B.ptr2=k;正确
C.ptr1=ptr2;错误
D.k=*ptr1+*ptr2;错误
11.若定义intm[10]={9,4,12,8,2,10,7,5,1,3};则m[m[4]+m[8]]的值是_____。
A.10错误
B.12错误
C.8正确
D.7错误
12.若有说明:
inta[]={15,12,-9,28,5,3},*p=a,则下列哪一种表达错误______
A.*(a+*(a+5))错误
B.*(p=p+3)错误
C.p[p[4]]错误
D.*(a=a+3)正确
13.设intx[]={1,2,3,4,5,6},*p=x;则值为3的表达式是__。
A.p+=3;*p;错误
B.p+=2;++*p;错误
C.p+=2;*++p;错误
D.p+=2;*p++正确
14.若有说明:
int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是__。
A.p1=&m;p2=&p1;错误
B.p1=&m;p2=p1;正确
C.p1=&m;*p2=*p1;错误
D.p1=&m;*p1=*p2;错误
15.若有语句int*point,i=4;和point=&i;下面均代表地址的一组选项是__。
A.&*i,&i,*point错误
B.*&point,*point,&i错误
C.&a,&*point,point正确
D.i,point,*&i错误
16.设ints[10];*p=s;以下不正确的表达式是__。
A.p=s+5;错误
B.*p=s[0];错误
C.s[2]=p[4];错误
D.s=p+s;正确
17.执行下面的程序段后,ab的值为__。
int*var,ab;
ab=100;var=&ab;*var+=10;ab+=10;
A.0错误
B.110错误
C.120正确
D.100错误
18.设变量定义为“intx,*p=&x;”,则&*p相当于__。
A.&x正确
B.x错误
C.*p错误
D.*&x错误
19.设int*ptr,x,array[5]={5,2,4,3,1};ptr=array;能使x的值为2的语句是__。
A.x=*(array+1);正确
B.array++;x=*array;错误
C.x=*(ptr+2);错误
D.x=array[2];错误
20.以下一维数组a的正确定义是__。
A.intn;cin>>n;inta[n];错误
B.inta(10);错误
C.intn=10,a[n];错误
D.#defineSIZE10inta[SIZE];正确
21.假设已定义chara[10];char*p;下面的赋值语句中,正确的是。
A.a=”abcdef”;错误
B.p=a;正确
C.*p=”abcdef”;错误
D.p=*a;错误
22.下列对指针p的操作,正确的是。
A.inta,*p=&a;正确
B.floata[5];int*p=a;错误
C.inta[5]={1,2,3,4,5},*p=&a;*p=5;错误
D.int*p;*p=2;错误
23.下面判断字符串str1是否大于str2,正确的表达式是。
A.if(strcmp(str1,str2))错误
B.if(strcmp(str1,str2)>0)正确
C.if(strcmp(str2,str1)>0)错误
D.if(str1>str2)错误
24.以下程序给数组所有元素输入数据,填入__能完成该功能。
#include
usingnamespacestd;
intmain()
{
intarray[5],i=0;
while(i<5)
cin>>__;
return0;
}
A.array+(i++)正确
B.&array[++i]错误
C.&array[i+1]错误
D.array+i错误
25.以下对二维数组a进行正确初始化的是。
A.intarray[][3]={1*6};正确
B.intarray[2][3]={{1,2},{3,4},{5,6}};错误
C.intarray[2][]={1,2,3,4,5,6};错误
D.intarray[2][3]={{},{1}};错误
第4次自测:
抽象与分类
1.C++语言中class和struct的区别仅在于缺省不同。
A.私有部分错误
B.访问权限正确
C.函数成员错误
D.数据成员错误
2.以下不属于类的访问权限的是。
A.public错误
B.static正确
C.private错误
D.protected错误
3.设有函数f的定义如下,若在main函数中调用f函数,则正确的调用语句是__。
voidf(intx,int*y)
{*y=x*x*x;}
intmain()
{inti,c[4]={1,2,3,4},s[4]={0};
for(i=0;i<4;i++)
{______/*调用f函数*/
cout<
return0;
}
A.f(c,s);错误
B.f(c+i,s+i);错误
C.f(*(c+i),&s[i]);正确
D.f(c[i],s[i]);错误
4.对于C++语言的函数,下列叙述中正确的是__。
A.函数的定义和调用都不能嵌套错误
B.函数的定义不能嵌套,但函数调用可以嵌套正确
C.函数的定义可以嵌套,但函数调用不能嵌套错误
D.函数的定义和调用都可以嵌套错误
5.若有以下程序:
#include
voidf(intn);
intmain()
{
voidf(intn);
f(5);
return0;
}
voidf(intn)
{cout<则以下叙述中不正确的是__。
A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f错误
B.函数f无返回值,所以可用void将其类型定义为无类型错误
C.对于以上程序,编译时系统会提示出错信息:
提示对f函数重复说明正确
D.若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f错误
6.以下关于构造函数的叙述不正确的是
A.在一个类中构造函数有且仅有一个正确
B.构造函数无任何函数类型错误
C.构造函数在定义对象时自动执行错误
D.构造函数名必须和类名一致错误
7.下列特点不是类与结构共有的。
A.是封装的一种形式错误
B..关键字private和public的顺序和次数可以是任意的错误
C.不能在说明中对数据成员使用表达式初始化错误
D.在缺省情况下,所有成员都是私有的正确
8.是析构函数的特征。
A.析构函数名与类名完全相同错误
B.析构函数可以有一个或多个参数错误
C.析构函数的定义只能在类体内错误
D.一个类中只能定义一个析构函数正确
9.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是__。
A.地址传递错误
B.由实参传给形参,再由形参传回实参错误
C.单向值传递正确
D.传递方式由用户指定错误
10.以下函数调用语句中含有__个实参。
func((exp1,exp2),(exp3,exp4,exp5));
A.5错误
B.4错误
C.2正确
D.1错误
11.下列有关类和对象的说法不正确的是。
A.任何一个对象只能属于一个具体的类错误
B.一个类只能有一个对象正确
C.对象是类的一个实例错误
D.类与对象的关系类似于数据类型与变量的关系错误
根据教材3.2节内容,类是相同属性的抽象,可以定义若干个实体对象。
12.若有声明“longfun(int*x,intn,long*s);inta[4]={1,2,3,4};longb,c;”,则以下函数调用形式中正确的是__。
A.c=fun(a,4,b);错误
B.c=fun(a[4],4,b);错误
C.c=fun(a[],4,&b);错误
D.c=fun(a,4,&b);正确
13.有以下函数定义:
void