《C++语言程序设计》综合练习与期末复习题
说明:本综合练习题中的各数据类型长度均参照16位编译系统的相关规定。例如:整型(int)数据占用2个字节的存储单元。
一、语法选择题
1.由C++源程序文件编译而成的目标代码文件的缺省扩展名为( )。 A.cpp B.exe C.obj D.lik
2.设x和y均为bool类型,则x&&y为真的条件是( )。 A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假
3.设有int i;则表达式i=1,++i,++i||++i;i的值为 ( )。 A.1 B.2 C.3 D.4
4.设有int i;则表达式i=1,++i, i++&&++i; i的值为 ( )。 A.1 B.2 C.3 D.4
5.设有int a[ ]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是 ( )。
A.10,11,12 B.11,12,12 C.10,12,12 D.11,11,12 6.设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&k 的值为 ( )。 A.1 B.2 C.63 D.0
7.设有说明int s[2]={0,1},*p=s; 则下列错误的C++语句是( )。 A.s+=1; B.p+=1; C.*p++; D. (*P)++;
8.若有char a[3]= {?A?,?\\0?,?D?},*P=a,i=2,j=4;则下列表达式值不是1的有( )。
A.strlen (a); B.j‖j; C.* (P+1); D.- -ⅰ; 9.表达式4‖3‖2‖1的值为( )。 A.1 B.2 C.3 D.4 10.表达式1&3&5&7的值为( )。 A.1 B.3 C.5 D.7
11.设a、b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是( )。
A.'A'&&'B' B.a<=b
C.c>=b||b+c&&b-c D. a<=b+c&&c>=a+b 12.若x和y都是int型变量,x=100,y=200,则下面程序片段cout<<(x,y)< 1 A.200 B.100 C.100 200 D.输出格式符不够,输出不确定的值 13.下面各语句中,能正确进行字符串赋值操作的语句行是( )。 A.char s[4][5]={\ B. char s[5]={'A','B','C','D','E'} C. Char *s; s=\D. char *s; cin>>s; 14.若有:int a[6]={4,5,6,9,5,7},*p=a, *q=p; 则对数组元素的错误引用是( )。 A. a[4] B. *(p+4) C. *a++ D. *q++ 15.下列不正确的转义字符是( )。 A.'\\\\' B.'\\\ C.'074' D.'\\0' 16.若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c*b值的类型为( )。 A. float B. int C. char D. double 17.表示关系x<=y<=z的C++语言表达式为( )。 A. (x<=y)&&(y<=z) B. (x<=y)AND(y<=z) C. (x<=y<=z) D. (x<=y)&(y<=z) 18.设x和y均为int型变量,则执行下面的循环后,y值为( )。 for(y=1,x=1;y<=50;y++) { if(x>=10)}break; if (x%2==1) { x+=5; continue;} x-=3; } A.2 B. 4 C. 6 D. 8 19.给出以下定义: char x[ ]=\ char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为( )。 A.数组X和数组Y等价 B.数组X和数组Y的长度相同 C.数组X的长度大于数组Y的长度 D.数组X的长度小于数组Y的长度 20.以下叙述中不正确的是( )。 A.在不同的函数中可以使用相同名字的变量 2 B.函数中的形式参数是局部变量 C.在一个函数内定义的变量只在本函数范围内有效 D.在一个函数内的复合语句中定义的变量在本函数范围内有效 21.假定a和b为int型变量,则执行以下语句后b的值为( )。 a=1; b=10; do { b-=a; a++; } while (b--<0); A. 9 B. –2 C. -1 D. 8 22.对于结构中定义的成员,其隐含访问权限为( )。 A. public B. protected C. private D. static 23.设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )。 A.k=*P1+*P2; B.p2=k; C.P1=P2; D.K=*P1 * (*P2); 24.设有如下定义: int arr[]={6,7,8,9,10}; int * ptr; 则下列程序段的输出结果为( )。 ptr=arr; * (ptr+2)+=2; cout<<*ptr<<*(ptr+2)< A.8,10 B.6,8 C.7,9 D.6,10 25.执行以下程序段后,m的值为( )。 int a[2][3]={ {1,2,3},{4,5,6} }; int m,*p; p=&a[0][0]; m=(*p)*(*(p+2))*(*(p+4)); A. 15 B. 14 C. 13 D. 12 26.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。 A. ios::in B. ios::out C. ios::in | ios::out D.没有 27.设有定义 int (*ptr)(); 则以下叙述中正确的是( )。 A. ptr是指向一维数组的指针变量 B. ptr是指向int型数据的指针变量 C. ptr是指向函数的指针,该函数返回一个int型数据 3 D.ptr是一个函数名,该函数的返回值是指向int型数据的指针 28.设有以下说明和定义: typedef union { long i; int k[5]; char c; }DATE; struct date { int cat; DATE cow; double dog; } too; DATE max; 则下列语句的执行结果是( )。 cout<<(sizeof (struct date ) +sizeof(max))< { char a[]=\, b[]=\ char *p1,*p2; int i; p1=a; p2=b; for(i=0;i<7;i++) if(*(p1+i)==*(p2+i)) cout<<*(p1+i); } 输出结果是( )。 A. gm B. rg C. or D. ga 30.执行以下程序后的输出结果为( )。 viod fun (int a,int b,int c) { a=4; b=5; c=6;a=b+c;b=c+a;c=a+b;} main() { int x=10, y=20,z=30; fun (x,y,z); cout< A.30,20,10 B.10,20,30 C.11,17,28 D.4,5,6 31.执行以下程序后的输出结果为( )。 int fun(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } main() { int a, b, c, d; a=30; b=50; fun(a,b,&c,&d); 4 cout< A.50,30 B.30,50 C.80,-20 D.80,20 32.设x和y均为int型变量,则以下语句x+=y; y=x-y; x-=y; 的功能是( )。 A.把x和y按从大到小排列 B.把x和y按从小到大排列 C.无确定结果 D.交换x和y中的值 33.以下程序的输出结果是( )。 main() { int a=12,b=12; cout<<(--a)<<” ”<<(++b)< A.10 10 B.12 12 C.11 10 D.11 13 34.以下程序运行后,输出结果是( )。 main() { char *s=\ s+=2; cout< A.cde B.字符c的ASCII码值 C.字符c的地址 D.出错 35.当执行以下程序段时( )。 x=-1; do { x=x*x;} while( !x); A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无限次 D.系统将提示有语法错误 36.执行以下程序后,输出的结果是( )。 main() { int y=10; do {y--;} while(--y); cout<<(y--)< A.-1 B.1 C.8 D.0 37.若有 int a; 则表达式语句 a+=a -=a*a; 等价于下列哪组表达式语句( )。 A. a+a; a*a; B.a=a+a; a=a-a*a; 5