c++复习题(选择题)
- 格式:doc
- 大小:66.00 KB
- 文档页数:7
第一单元程序设计和C语言一、选择题1.C语言的基本构成单位是: A 。
A. 函数B. 函数和过程C. 超文本过程D. 子程序2.一个C语言程序总是从 B 开始执行。
A. 主过程B. 主函数C. 子程序D.主程序3.C语言的程序一行写不下时,可以。
A. 用逗号换行B. 用分号换行C. 在任意一空格处换行D. 用回车符换行4.以下叙述不正确的是: C 。
A. 在C程序中,语句之间必须要用分号";"分隔B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数C. 在C程序中,无论是整数还是实数都能正确无误地表示D. 在C程序中,%是只能用于整数运算的运算符5.以下不正确的C语言标识符是 D 。
A. ABCB. abcC. a_bcD. ab.c6.下列字符串是标识符的是: A 。
A. _HJB. 9_studentC. longD. LINE 17.以下说法中正确的是: C 。
A. C语言程序总是从第一个定义的函数开始执行B. 在C语言程序中,要调用的函数必须放在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分8.不合法的常量是: D 。
A. ...\2‟ B. "" C. ...3‟ D. (483)9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是: A 。
int k,a,b;unsigned long w=5;double x=1.422;A. x%(-3)B. w+=-2C. k=(a=2,b=3,a+b)D. a+=a=+(b=4)*(a=3)10.在C语言中,字符型数据在内存中以 D 形式存放。
A. 原码B. BCD码C. 反码D. ASCII码11.若有定义:int a=7; float x=2.5; y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是: A 。
c语言复习题一、单项选择题1.以下叙述中错误的是? A.用户所定义的标识符允许使用关键字B.用户所定义的标识符应尽量做到“见名知意”C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识2、c语言数据的基本类型包括()A、整型、字符型、实型B、整型、字符型、实型、枚举类型C、整型、实型、枚举类型、指针类型 D、整型、字符型、实型、数组类型3.以下不合法的字符常量是A.’\019’B.’\’’’C.’\\’D.’\xcc’4、c语言允许使用的变量标识符是()A、x#yB、12shC、j_c_tD、char5.设有以下语句。
int a=1,b=2,c;c=a^(b<<2);执行后,c的值为 A.6 B.7 C.8 D.96、c语言中合法的字符常量是()A、‘\084’B、‘\X43’C、‘ab’D、“\0”7.下列标识符中,合法的变量名有? A.a.b B.$888 C.A1 D.3x568、若定义x和y为double型,则表达式:x=1,y=x*3/2的值是()A、1B、2C、 2.0D、1.59、若有以下类型说明语句:char w;int x;float y;double z;则表达式 w*x+z-y的结果为()类型A、floatB、char C 、int D、double10、下列表达式中,()可以正确表示x<=0或x>=1的关系A、(x>1)or (x<=0)B、x>1 || x<=0C、x>1 or x<=0D、x>=1 || x<=011.下列不正确的表达式是A.10%3+5%3B.10/3+5/3C.10%3/2D.(10.0/3.0%3)/212.以下四个选项中,不能看作一条语句的是A.{;}B.a=0,b=0,c=0;C.a>0;D.m=1;n=2;13.设x为int 型变量,则执行以下语句后,x的值为x=10;x+=x-=x-x;A.10B.20C.40D.3014、若定义a为整型数据变量则a=-2 L;printf(“%d\n”,a);以上语句结果为()A、赋值语句不合法B、输出值为-2C、输出值为不确定值D、输出值为215、现已定义整型变量int i=1;执行循环语句“while(i++<5)后i的值变为()A、1B、5C、6D、以上三个答案均不正确16、若执行下述程序时,从键盘输入数据3和4,则程序的输出结果是()main(){ int a ,b ,s;scanf(“%d%d”,&a,&b);s=a;if(a<b)< p="">s=b;s=s*s ;printf(“%d”,s);}A、14 B、16 C、18 D、2017、若数组名作为函数参数传递给函数,作为实参的数组名被处理为()A、该数组的长度 B、该数组的元素个数C、该数组中各元素的值 D、该数组的首地址18、c语言允许函数值类型缺省定义,此时该函数值隐含的类型是()A、float型B、int型C、long型D、double型19、在c语言中,存储类型为()的变量只在使用它们的时候才占用存储空间A、static和autoB、register和autoC、static和registerD、register和extern20、下面程序片段的输出结果是()char str[]=“abcd”,*p=str;printf(“%d\n”,*(p+4));A、68 B、0 C、字符‘d’的地址D、不确定的值21、设有以下说明,已知int类型占2个字节,则下列叙述正确的是()struct st{int a;int b[2];} a;A、结构变量名a和结构成员a同名,不合法B、程序运行时将为结构体st分配6个字节的内存单元C、程序运行时不为结构体st分配内存单元D、程序运行时将为结构体变量a分配6个字节的内存单元22、求字符串长度的函数是()A、strcat B、strcpy C、strcmpD、strlen 23.现已定义整型变量 int i=1;执行循环语句“while(i++<5);”后,i的值为A.1B.5C.6D.以上三个答案均不正确24.以下叙述中错误的是A.C语句必须以分号结束B.复合语句在语法上被看作一条语句C.空语句出现在任何位置都不会影响程序运行D.赋值表达式末尾加分号就构成赋值语句25.设有定义:int a=2,b=3,c=4;时,以下选项中值为0的表达式是A.(!a= =1)&& (!b= =0)B.aC. a&&bD.a||(b+b)&&(c-a)26.C语言中,定义PI为一个符号常量,正确的是A.#define PI 3.14B.define PI 3.14C.#include PI 3.14D.include PI 3.1427.下面关于switch语句和break语句的结论中,只有是正确的A.break语句是switch语句中的一部分B.在swtich语句中可以根据需要使用或不使用break语句C.在swtich语句中必须使用break语句D.以上三个结论中有两个是正确的28.有以下程序:main(){int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是 A.自然数1~9的累加和 B.自然数1~10的累加和C.自然数1~9中的奇数之和D.自然数1~10的偶数之和29.在C语言函数的定义和引用中,以下描述正确的是A.必须有形式参数B.也可以没有形式参数 C.数组名不能作为形式参数 D.形式参数必须是变量名30.下列关于return语句的说法,正确的是A.必须在每个函数中都出现B.只能在除主函数之外的函数中出现一次C.可以在同一个函数中多次出现D.在主函数和其他函数中都可以出现31.下列说法不正确的是A.形式参数是局部变量B.主函数main 中定义的变量在整个文件或程序中都又效C.在一个函数的内部,可以在复合语句中定义变量D.不同的函数中,可以使用相同名字的变量32.以下叙述正确的是A.do-while语句构成的循环不能用其它语句构成的循环来代替B.do-while语句构成的循环只能用break语句退出C.用do-while语句构成的循环,在while后的表达式为非零时结束循环D.用do-while语句构成的循环,在while后的表达式为零时结束循环33.下列数组定义语句正确的是A.int a[][]={1,2,3,4,5,6};B.char a[2][3]=’a’,’b’C.int a[][3]={1,2,3,4,5,6};D.static int a[][]={{1,2,3},{4,5,6}}; 34.若定义int a[3][4];则下列选项不能表示数组元素a[1][1]地址的是A.a[1]+1B.&a[1][1]C.*(a+1)[1]D.*(a+5)35.已知int 和double类型分别占2个和8个字节,若有如下定义:Struct data{ int i;char ch;double f;}b;则结构变量b占用内存的字节数是 A.7 B.2 C.8 D.1136.对于以下递归函数f,调用f(4),其返回值为int f(int n){ return f(n-1)+n;}A.10 B.11 C.0 D.以上均不是37.有以下程序:main(){int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf(“%d\n”,*p+*q);}程序运行后的输出结果是 A.16 B.10 C.8 D.638.C语言中操作文件的正确顺序是A.读写,关闭,打开B.打开,读写,关闭C.打开,关闭,读写D.读写,打开,关闭39.定义union s{int w,x,y,z;char c[6];};,请问执行sizeof(union s)=A.2B.6C.8D.1440.说明语句int *f();中的标识符f代表A.一个用于指向整型数据的指针变量B.一个用于指向一维数组的行指针C.一个用于指向函数的指针变量D.一个返回值为指针型的函数名二、填空题1.设有程序段:int k=10;while(k=0) k=k-1;则循环体语句执行次。
C期末考试复习题(答案)C语言复习题一、单项选择题1、C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( C )的文件。
A).c B).obj C).exe D).bas2、)完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( B )A)连接、编译B)编译、连接 C)连接、运行D)运行3、关于C语言的叙述中,不正确的是(D)A)C程序可由一个或多个函数组成B)C程序必须包含一个main ()函数C)C程序的基本组成单位是函数D)注释说明只能位于一条语句的后面4、一个C程序的执行是从(A )。
A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序的main函数开始,到本程序文件的最后一个函数结束D) 本程序文件的第一个函数开始,到本程序main函数结束5、以下正确的叙述是(C )A) 在C语言中,main函数必须位于文件的开头B) C语言每行中只能写一条语句C) C语言本身没有输入、输出语句D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误6、下列选项中,不能用作标识符的是( D)。
A) _1234_ B) _1_2 C) int_2_ D) 2_int_7、常数的书写格式决定了常数的类型和值,0x1011是( C )A)8进制整型常量B)字符常量 C)16进制整型常数D)2进制整型常数8、以下4组用户定义标识符中,全部合法的一组是( A )A)_total clu_1 sum B)if -max turbC)txt REAL 3COM D)int k_2 _0019、_( D )是合法的用户自定义标识符。
A) b-b B)float C)123a D) _isw10、以下选项中不正确的整型常量是( C )。
A) 12L B) -10 C) 1,900 D) 123U11、表达式( C )的值是0。
选择题复习1.表达式“(a=4*5, b=a*2), b-a, a+=2”的值是(C)。
A.2 B.20 C.22 D.422.以下是一个自定义函数的头部,其中正确的是(C )。
A.int fun(int a[ ], b) B.int fun(int a[ ], int a)C.int fun(int*a, int b) D.int fun(char a[ ][ ], int b)3.以下数组声明语句中正确的是(D )。
A.int n, a[n]; B.int a[ ];C.int a[2][3]={{l},{2},{3}}; D.int a[ ][3]={{l},{2},{3}};4.已知在某C语言编译系统中表达式sizeof(int)的值是2,如果希望将常量-70 000正确地保存在一个变量a中,该变量声明语句应当是(B )。
A.int a; B.long int a; C.unsigned int a; D.unsigned int a;5.以下声明语句中,用于声明一个行指针变量的是(C )。
A.int *p(int); B.int *p; C.int (*p)[3]; D.int (*p)(int);6.在以下程序中,需要在fun函数中声明一个int型的变量,以下选项中(A )不能用做该变量的名字。
#include <math.h>int y;main( ){ int a=1;fun(a);}int fun(int x){_______; /*int型变量声明语句位置*/… /*若干执行语句*/}A.x B.y C.fabs D.fun7.如有语句“int x,y=0,z,*p[3]; p[0]=&x; p[1]=&y; p[2]=&z;”,以下表达式中有语法错误的是(B )。
A.y++ B.p++ C.*++p[0] D.(*p[0])++8.设有声明语句“int a[3][3]={1,2,3,4,5,6,7,8,9};”,以下语句中除(D )外均能输出a[1][2]的值。
《C语言》复习题一、选择题(1) 有如下程序main(){ int y=3,x=3,z=1;printf(“%d %d\n”,(++x,y++),z+2);}运行该程序的输出结果是: DA) 3 4 B) 4 2 C) 4 3 D) 3 3(第三章输出语句)(2)当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是: CA)c=b=a;B)(a=c)‖(b=c);C)(a=c)&&(b=c);D)a=c=b;(第四章关系表达式)(3)在以下一组运算符中,优先级最高的运算符是: CA)<= B)=C)% D)&&(第四章运算符的优先级)(4) 请选出合法的C语言赋值语句: BA) a=b=58 B) i++;C) a=58,b=58 D) k=int(a+b)(第三章赋值语句)(5)以下说法中正确的是: CA)#define和printf都是C语句B)#define是C语句,而printf不是C)printf是C语句,但#define不是D)#define和printf都不是C语句(第三章语句概述)(6)若有以下定义: Dchar a; int b;float c; double d;则表达式a*b+d-c值的类型为A) float B) int C) char D) double(第二章类型混合运算)(7)若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是: CA)1 B)2C)2.0 D)2.5(第二章类型混合运算)(8)有以下程序#includemain(){ int a,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}输出结果是: AA) 2,1 B) 3,2 C) 4,3 D) 2,-1(第四章逻辑运算符)(9) 以下程序运行后,输出结果是: CA) cde B) 字符c的ASCII码值C) 字符c的地址D) 出错main(){ char *s="abcde";s+=2;printf("%ld\n",s);}(第九章指针的概念)(10)若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为:DA)a<>0 B)!aC)a=0 D)a(第4章条件表达式)(11)有如下程序段,其输出结果是什么: Amain( ){int a=1,b=3,c=5;if (c=a+b)printf ("yes\n");else printf("no\n"); }A) yes B) no C) yes\n D) no\n(第4章条件语句)(12) 假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表1示代数式----- 的表达式是: DabcA) 1/a*b*cB) 1/(a*b*c)C) 1/a/b/(float)cD) 1.0/a/b/c(第二章类型混合运算)(13)若i ,j已定义为int类型,则以下程序段中内循环体的总的执行次数是: Afor (i=5;i;i--)for(j=0;j<4;j++){...}A)20 B)15C)24 D)16(第五章for循环语句)(14)下面哪个程序段不是死循环: C(A) a=0; sum=0;while(a=1){sum=sum+a;a++;}(B) {int I,sum=0;For(i=1;i<=3;sum++)sum+=I;}(C) sum=0;for(i=1;i<10;i++);sum=sum+i;(D) sum=0;for(i=1; ;i++)sum=sum+i;(第五章for循环语句)15、设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0]则下列能够正确表示数组元素a[1][2]的表达式是: DA)*((*prt+1)[2]) B)*(*(p+5))C)(*prt+1)+2 D)*(*(a+1)+2)16、不能把字符串:Hello!赋给数组b的语句是: BA)char b[10]={'H','e','l','l','o','!'};B)char b[10];b="Hello!";C)char b[10];strcpy(b,"Hello!");D)char b[10]="Hello!";17、设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0]则下列能够正确表示数组元素a[1][2]的表达式是: DA)*((*prt+1)[2]) B)*(*(p+5))C)(*prt+1)+2 D)*(*(a+1)+2)18、请选出以下语句的输出结果: Aprintf("%d\n",strlen("\t\"\065\xff\n"));A) 5 B) 14 C) 8 D) 输出项不合法,无正常输出(19)假定所有变量均已正确说明,下列程序段运行后x的值是: Ba=b=c=0;x=35;if(!a)x--;else if(b);if(c)x=3;else x=4;A)34 B)4 C)35 D)3(第四章if语句)(20) 运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为: CA) 2,0 B) 5,0 C) 5,5 D) 2,5#include<stdio,h>main(){ int v1=0,v2=0;char ch;while((ch=getchar())!='#')switch(ch){ case 'a';case 'h';default; v1++;case '0'; v2++;}printf("%d,%d\n",v1,v2);}(第四章switch语句)(21) 执行以下程序段时: AA) 循环体将执行一次B) 循环体将执行两次C) 循环体将执行无限次D) 系统将提示有语法错误x=-1;do {x=x*x; } while(! x);(第五章do_whule语句)(22)执行下面的程序后,a的值为: Bmain(){ int a,b;for (a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}A)7 B)8C)9 D)10(第5章break,continue 语句)23) 下面能正确进行字符串赋值操作的语句是: CA) char s[5]={"ABCDE"}; B) char s[5]={'A','B','C','D','E'};C) char *s;s="ABCDEF"; D) char *s; scanf("%s",s);(第6章字符数组的定义;第9章字符串指针)(24)不能把字符串:Hello!赋给数组b的语句是: BA)char b[10]={'H','e','l','l','o','!'};B)char b[10];b="Hello!";C)char b[10];strcpy(b,"Hello!");D)char b[10]="Hello!";(第6章字符数组的使用)(25)函数调用:strcat(strcpy(str1,str2),str3)的功能是: CA)将串str1复制到串str2中后再连接到串str3之后B)将串str1连接到串str2之后再复制到串str3之后C)将串str2复制到串str1中后再将串str3连接到串str1之后D)将串str2连接到串str1之后再将串str1复制到串str3中(第6章字符串处理函数)(26)给出以下定义:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为: CA) 数组X和数组Y等价B) 数组x和数组Y的长度相同C) 数组X的长度大于数组Y的长度D) 数组X的长度小于数组Y的长度(第6章字符数组的定义)(27)以下程序的输出结果是: DA)AfghdEFG B)Abfhd C)Afghd D)Afgd#includemain( ){ char *p1,*p2,str[50]="ABCDEFG";p1="abcd";p2="efgh";strcpy(str+1,p2+1);strcpy(str+3,p1+3);printf("%s",str);}(第6章字符串处理函数;第9章字符串指针)(28)下面哪个程序段编译会出错: DA) max(int x,int y,int *z) B) max(int x, int y){ *z=x>y?x:y;} {return x>y?x:y;}C) max(int x,int y) D) int max(int x, y){ int z; { int zz=x>y?x:y; z=x>y?x:y;return z;} return z;}(29)下列程序执行后输出的结果是: D#include 〈stdio.h〉f(int a){ int b=0;static c=3:a=c+ +,b+ +;returu(a);}main( ){ int a=2,i,k;for(i=0;i<2;i+ +)k=f(a+ +);printf("%d\n",k);}A)3 B)0 C)5 D)4(第7章静态变量)(30)下列程序执行后输出的结果是: Aint d=1;fun (int q){ int d=5;d + =q+ +;printf("%d".d);}main( ){ int a=3;fun(a);d + = a + +;printf("%d\n",d);}A)8 4 B)9 6 C)9 4 D)8 5(第7章函数调用;第3章复合赋值运算符)(31)以下程序的输出结果是: Dmain(){ int x=10,y=10;printf("%d %d\n",x--,--y);}A)10 10 B)9 9C)9 10 D)10 9(第7章函数调用时,参数结合方式:右结合)(32)有以下程序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);printf("%d,%d\n", c, d);}输出结果是: CA)50,30 B)30,50 C)80,-20 D)80,20(第7章函数调用;第9章指针变量做参数)(33)执行下面的程序后,a的值是: B#define SQR(X) X*Xmain( ){ int a=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A)10 B)1 C)9 D)0(第8章带参宏定义)(34) 以下有关宏替换的叙述不正确的是: DA) 宏替换不占用运行时间 B)宏名无类型C)宏替换只是字符替换 D)宏名必须用大写字母表示(第8章宏定义)(35)C语言的编译系统对宏命令的处理是: DA) 在程序运行时进行的B) 在程序连接时进行的C) 和C程序中的其它语句同时进行编译的D) 在对源程序中其它成份正式编译之前进行的(第8章宏定义运行特点)(36)若有宏定义如下:#define X 5#define Y X+1#define Z Y * X / 2则执行以下printf语句后,输出结果是: Dint a; a=Y;Printf("%d\n", Z);Printf("%d\n", - - a);A) 7 B) 12 C) 12 D) 76 6 5 5(第7章函数调用;第8章带参宏定义)37、若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是: DA) &t[3][2]B) t[3][2] C) t[1][0] D) t[2]+138、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是: CA)1 B)2C)2.0 D)2.539、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是: CA)c=b=a;B)(a=c)‖(b=c);C)(a=c)&&(b=c);D)a=c=b;40、C语言的编译系统对宏命令的处理是: DA) 在程序运行时进行的B) 在程序连接时进行的C) 和C程序中的其它语句同时进行编译的D) 在对源程序中其它成份正式编译之前进行的(41)请读程序:#define ADD(x) x+xmain(){int m=1, n=2, k=3;int sum=ADD(m+n) * k;printf("sum=%d", sum);}上面程序的运行结果是: BA) sum=9 B) sum=10 C) sum=12 D) sum=18(第8章带参宏定义)(42)在宏定义 #define PI 3.14159中,用宏名PI代替一个: DA) 常量 B)单精度数 C)双精度数 D)字符串(第8章宏定义)(43)设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0]则下列能够正确表示数组元素a[1][2]的表达式是: DA)*((*prt+1)[2]) B)*(*(p+5))C)(*prt+1)+2 D)*(*(a+1)+2)(第9章数组指针与指向主组的指针)44、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假“的表达式是___C____。
复习A:一、单项选择题1、如果要把常量327存入变量a中,a不能定义的类型是哪一个? ( )A)int B)char C)long D)float2、若x 为unsigned int 型变量,则执行下列语句后x值为()x = 65535;printf(“%d\n”,x);A)65535 B)1 C)无定值D)-13、有以下程序main(){int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf(″%d,%d\n″,k,m);}程序运行后的输出结果是()A)0,0 B)0,1 C)1,0 D)1,14、在C语言中,如果下面的变量都是int类型,则输出的结果是()。
sum=pad=5; pAd=sum + + ,pAd + +, + + pAd;printf("%d\n",pad);A) 7 B) 6 C) 5 D) 45、以下程序的输出结果是()。
main(){ int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A)1 B)0 C)非0的数D)-16、当执行以下程序段时()。
x=-1;do{x=x*x;}while(!x);A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误7、全局变量的存储类型可以定义为()。
A)auto或static B)extern或registerC)auto或extern D)extern或static8、定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是()。
A)auto B)registerC)extern D)static9、已知:int a, x; 则正确的赋值语句是()。
A)a=(a[1]+a{2})/2; B)a*=*a+1; C)a=(x=1, x++, x+2); D)a="good";10、已知:int a, *p=&a; 则下列函数调用中错误的是()。
C语言考试期末考试复习题及答案一、选择题(1) 一个C语言程序总是从(C )开始执行A) 书写顺序的第一个函数B) 书写顺序的第一条执行语句C) 主函数main()D) 不确定(2) 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( D )A) ‘x’&&’y’B) x||y+z&&y-z C) x<=yD) !((x<y)&&!z||1)(3) 执行以下程序段后,i的值是 ( C )int i=10。
switch(i+1){ case 10: i++。
break。
case 11: ++i。
case 12: ++i。
break。
default : i=i+1。
}A) 11 B) 13 C) 12 D) 14(4) 语句while(!e)。
中的条件!e等价于 ( A )A) e==0 B)e!=1 C) e!=0D) 运行时出错(5) 用 int a[4]={1,2}。
对数组进行初始化后,数组元素a[3]的值是 ( B )A) 随机值B) 0 C) 1 D) F(6) 在执行char str[10]=“china\0”; strlen(str)的结果是 ( A )A)5 B) 6 D) 7 D 9(7) 若有定义,char *p=”computer”。
则语句printf(“%c”,*(p+2))运行结果是( B )A) 随机值B) m C)o D) omputer(8) 在以下函数调用语句中fun1(x,10,(x,10),fun2(y,10,(y,10)))。
函数fun1参数的个数为 ( B )A) 8 B) 4C) 5 D) 编译出错(9) 在说明一个结构体变量时系统分配给它的存储空间是( D )A)该结构体中第一个成员变量所需存储空间 B) 该结构体中最后一个成员变量所需存储空间C)该结构体中占用最大存储空间的成员变量所需存储空间D) 该结构体中所有成员变量所需存储空间的总和1. 用C语言编写的代码程序( B )A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行2. C语言中用于结构化程序设计的三种基本结构是( A )A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do-while D)if、for、continue3. 以下定义语句中正确的是( C )A)char a='A'b='B'。
C程序设计综合复习题目录一、单项选择题 (1)二、填空题 (8)三、程序分析题 (9)四、程序填充题 (16)五、编程题 (21)1.分支结构 (21)2.循环结构 (22)3.数组、函数、指针 (22)4.结构体 (22)一、单项选择题1.可以作为自定义标识符的是()A. 2x B • breakC. m-n D • m_n2.C语言的保留字(关键字)是()A. defineB. enumC. mainD. includc3 •错误的实型(浮点型)常数是()• •A. 0B. 0.E0C. 0.0D. 0E4-0.04.无条件转移语句的一般形式是:goto语句标号;,其中的语句标号可以是()A.整型数B.标识符C.保留字D.实型数5.正确的变量定义是()A. unsigned long d=1000;B. float ml=m2=10.0;C. char cl=,A,,c2=A; D・ double x=0.618,x=3.14;6.表达式的值为0的是()A. 5/5%5B. 5>2C・!4 D・ 0x7&77•设int a;侧表达式a=2,4,a+l的值是()A.lB.2C.3D.4&设int i; Hoat f; double d; long int c;,则表达式10+' a' +i*f-d/c 结果的类型是()A.doubleB.longC. intD. float9.设int a;,则语句for(a=0;a==0;a++);和语句for(a=0;a=0;a++);执行循环的次数分别是()A.0, 0B.0, 1C.l, 0D.l, 110.if(表达式)和while(表达式)中的“表达式”()A.只能是逻辑的B.只能是关系的C.只能是算术的D.以上三种都可以11.设int a=0,b=0,m=0,n=0;,则执行(m=a==b) II (n=b==a)后m 和n 的值分别是()A.0, 0B.0, 112. 设int a ?b;为使变量a 和b 分别获得数据10和20,则下列正确的是()A. scanf (”%d,%d”,&a,&b );输入数据:10, 20<回车〉B. scanf (”%d,%d”,&a,&b );输入数据:10 20<回车〉C. scanf (”%d,%d”,&a,&b );输入数据:D. scanf ("%d,%d", a,b );输入数据:13. 对于函数,正确的说法是()C •必须有返回语句 14•设 int a [3] [4];,则与元素 aD •必须有形式参数[0] [0]不等价的表达形式是()■D. 2设char s[10]=n abcde H ,t[ ]=M 12345°;,则s 和t 在内存中分配的字节数分别是() 6和5 B. 6和6设 int a=10,*p=&a;,则执行 printf(n %d\n M ,*p+a);的结果是( )A.可以嵌套定义 B •定义时有些函数名前可以带星号A.*aB.* *aD.*(*(a+O)+O)C.*a[0] 15.设 char si [ ] ={,a ,;b';c ,},s2 [ ] ="abc";,则数组 si 和 s2 的长度分别是()A.2, 3B.3, 3C.3, 4D.4, 416. A. 设int a=l,b=2;,则执行a=b+2,a++,a+b ;后a 和b 的值分别是()1和2 B. 3和2C. D. 5 和 217. 设 int a=2,b=3,c=4;,则表达式 a>b&&b<c||b 的值是A. -1B. 0a=10, b=20<冋车〉10, 20<回车〉C. 18. A. C. 设int a=2,b=3,x,y;,则能正确执行的语句是( )scanf(z , %d,%d" ,x ・y,x+y); B. printf(,/ printf(" ,a+b); D. scanf(" %d\n" ,a%b);%d,%d" ,x,y);19. A. C. 10和5 D. 10 和 6 20. A. 10 B. 20C. 30D. 4021. 自定义函数中形式参数的作用域是()A. 本文件B.本函数C. main 函数D.整个程序设 int b[ ][5]={1,2,3,4,567} — 则元素b[l][2]的值是()A. B.C. D.23. 对函数而言,叙述正确的是(A. 函数中只能有一个return 语句B.当函数的形参是数组时形实结合为值传递方式C.程序中只能有一个main函数D.无参函数的函数体内不能出现return语句24.执行下列程序段后输出的结果是()int x,y,z=l;for(x= 1 ,y=・ 1 ;x<y;x++,y・・)z++;printf(M%d\n M,z);A. 1B. 2C. 5D. 625.设static int a[3]={l,2,3};int*p[ ]={&a[0],&a[l],&a[2]};则与数组元素a[l]等价的是()A. *p[l] B・ p[l]C. *p+lD. p+126.设struct{char name[10];int age;}stu[2]={{ ” Tom" ,25},{〃Mary" ,26}}?p=stu;则执行语句printf(" %s%d\rT ,p->name,stu[ 1 ].age);后输出结果是( ) A. Tom25 B・ Tom26C. Mary25D. Mary2627.设typedef double DB;,则与DB u[5];的等价形式是()A. double db[5]; B・double DB[5];C. double u;D. double u[5];2&设char ch,str [4], *strp;,则正确的赋值语句是()A. ch=”MBA”;B. str=n MBA n;C. stip=”MBA“;D. *strp=”MBA”;29.设typedef char *POINT;POINT p,q [3] ,*r;,则p、q和1•分别是字符型的()A.变量、一维数组和指针变量B.变量、二维数组和指针变量C.指针变量、一维数组指针和二级指针变量D.指针变量、一维指针数组和二级指针变量30.若变量定义时未初始化,则其值不确定的是()■A.静态全局变量B.局部变量C.静态局部变量D.全局变量31.设struct{int a; char b;}Q,*p=&Q;,则够谡的表达式是()B. (*p).b D. p->a32.在某文件中,若全局变量与局部变量同名,贝!)()A.视为同一个变量 B.变量作用域不确定 C.不允许 D.允许 33•设宏定义#define P (x ) x/x则执行语句printf (u %d\n n ,P (4+6));后的输出结果是()A.lB.8.5D.11.534•屈于C 语言基本数据类型的是(B ) A.指针型 C.数组型 B.无符号整型D.结构型35.C 语言的长整型数值在计算机中占用的字节个数是() A.1 C.3 36.C 语言屮, A.1 C.4 B.2D.4”\x3d”在内存屮占用的字节数是(B )B.2D.537•设 int x;则执行 printf(n %x\n H ^x A x);的结果是()A.OB.1C. ffD.ffff38. 对于while 语句,错误的说法是()• • • A. 用条件控制循环体的执行次数B. 循环体至少要执行一次C. 循坏体有可能一次也不执行D. 循环体中可以包含若干条语句39. 设 int a=9,b=20;则 printf (,'%d,%d,%d\n ,,,a+b,a —的输出结果是() A 、2&9,19 B 、29,9,20 40.执行下列语句int a=8,b=7,c=6;if(a<b)if(b>c){a=c;c=b;} printf("%d,%d,%d\n",a,b,c);后输出的结果是()A.6, 7, 7B.6, 7, 8C.8, 7, 6D.8, 7, 841. 设 static char x[ ]=,,12345,,;char y[ ;那么()A 、 x 数组的长度等于y 数组的长度B 、 x 数组的长度大于y 数组的氏度C 、 x 数组的长度少于y 数组的长度D 、 x 数组与y 数组的存储区域相同42. 设 int i,x[3][3]={l,2,3,4,5,6,7,8,9};则下面语句 A. *p.bC ・ Q.a C.11 C 、28,10,19D 、30,10,20for(i=0;i<3;i++)printfC %d" ,x[i][2-i]); 的输出结果是()A.l 4 7B.l 5 9C.3 5 7D.3 6 943.设 intb[]={l,2,3,4}, y,*p=b;则执行语句y=*p++;之后,变量y 的值为()A.lB.2C.3D.444. 设inta,*p ;则语句p=&a;中的运算符“&”的含义是()A.位与运算B.逻辑与运算C.取指针内容D.取变量地址45. 若函数能被其它编译单位引用,那么函数定义时的存储类型应选用()A.autoB.staticC.externD.register46.下面函数定义有错误的是()• • • A ・fl(xl,x2) int xl,x2; int xl;int x2;{函数体} {函数体}47.C 语言屮计算a?正确的表达是( ){函数体} {函数体}C.fl(int x 1 ,x2)D.fl(int x 1 Jnt x2) A.a A 3 C.a**3 4&下列定义正确的是( A.anum t={a,b}x; C.anum {'+T —'}x; B.pow(a,3)D.power(a,3))B.enum t{l,2}x;um t{a ,b}x;49•设有定义:union u{int a[4];float b[3]};char c[16];}aa;则 printf(/, %d\n" ,sizeof(aa));的输出是()A.32B.16C.12D.850.在下列有关宏替换的叙述中,正确的说法是()A. 宏替换占用运行时间B. 宏名有类型C. 带参数的宏替换和函数等价D. 宏替换只是字符替换51•下列程序的运行结果是()# define A 5# define B A+lmain(){int a; a=B;printf(" %d\n,f a—);}A.6B.5C.4 D•出错52.设有如下定义:struct sk{ int a;float b;{data; int *p;若要使p指向data中的a成员,正确的赋值语句是()A. p=&a; B・ p=data.a; C・ p=&data.a; D. *p=data.a;53.下列四组选项中,均是合法转义字符的选项是()A. 'n‘\\’B. •Mil1‘\017‘C.‘\01& '\f '\x4b, C.'\\0' '\ior '\xaf54.设int x=0,*px;,则经过()后,*px的值为0。
选择题1.C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()。
A.面向过程B.面向对象C.安全性D.复用性2.C++源程序文件的扩展名为()。
A.CPP B.C C.DLL D.EXE3.下列字符串中可以用作C++标识符的是()。
A._256 B.class C.delete D.5char4.下列C++标点符号中表示行注释开始的是()。
A.# B.; C.// D.}5.每个C++程序都必须由且仅有一个()。
A.预处理命令B.主函数C.函数D.语句6.下列关于C++函数的描述中正确的是()。
A.主函数是程序的入口,它是由用户定义的函数调用。
B.函数是C++中面向对象程序设计框架的基本组成元素。
C.函数在调用前必须先被声明。
D.每个用户定义函数只能被其它函数调用一次。
7.下列关键字中,()既在C语言中使用,又在C++语言中使用。
A.inline B.break C.private D.public8.for(int x=0,y=0;!x&&y<=5;y++)语句中循环执行的次数是()。
A.0 B.5C.6 D.无次数9.当一个函数无返回值时,函数的类型应定义为()。
A.void B.任意C.int D.无10. 已知:int k=1000;下列表示引用的方法中,()是正确的。
A.char &y; B.int &x=k; C.int &z=1000; D.float &t=&k; 11.在传值调用中,要求()。
A.形参和实参类型任意,个数相等B.实参和形参类型都完全一致,个数相等C.实参和形参对应的类型一致,个数相等D.实参和形参对应的类型一致个数任意12.一个函数功能不太复杂应选用()。
A.内联函数B.重载函数C.递归函数D.嵌套函数13.C++语言的跳转语句中,对于break和continue说法正确的是()A.break语句只应用于循环体中B.continue语句只应用于循环体中C.break是无条件跳转语句,continue不是D.break和continue的跳转范围不够明确,容易产生问题14.下面关于break语句的描述中,不正确的是()。
A.break可以用于循环体内B.break语句可以在for循环语句中出现多次C.break语句可以在switch语句中出现多次D.break语句可用于if条件判断语句内15.C++语言中,while和do-while循环的主要区别是()A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句16.下列关于switch语句的描述中,()是正确的。
A.switch语句中default子句可以没有,也可有一个B.switch语句中每个语句序列中必须有break语句C.switch语句中default子句只能放在最后D.switch语句中case子句后面的表达式可以是整型表达式17.for(int x=0,y=0;!x&&y<=5;y++)语句中循环执行的次数是()A.0 B.5C.6 D.无次数18. 如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:c<d?c:d”的值为( )A. 3B. 2C. 1D. 419.下面函数调用语句中实参的个数是()。
xxx((v1,v2),(v3,v4,v5),v6);A.3 B.4 C.5 D.620.考虑函数原型void test(int a,int b=7,char c=’*’),下面的函数调用中,属于不合法调用的是()。
A.test(5); B.test(5,8); C.test(6,"#") D.test(0,0,’*’);21.存在定义int a[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的?()A.x=*pa; B.x=*(a+l); C.x=*(pa+1); D.x=a[1];22.有如下定义:const char * ptr; 则ptr 应该是()A.指向字符的指针B.指向字符的常量指针C.指向字符串常量的指针D.指向字符串的常量指针23.对于int *pa[5]的描述,()是正确的。
A.pa是一个指向数组的指针,所指向的数组是5个int型元素B.pa是一个指向某数组中的第5个元素的指针,该元素是int型变量C.pa[5]表示某个数组的第5个元素的值D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针24.当一个函数无返回值时,函数的类型应定义为()。
A.void B.任意C.int D.无25.在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是( )。
A.3 B.2 C.6 D.426.下列给字符数组进行初始化中,()是正确的。
A.char s1[]="abcd";B.char s2[3]="xyz";C.char s3[][]={'a','x','y'};D.char s4[2][3]={ "xyz","mnp"};27.所有在函数中定义的变量,连同形式参数,都属于( )。
A.全局变量B.局部变量C.静态变量D.寄存器变量28.下面关于类概念的描述中()是错误的。
A.类是抽象数据类型的实现B.类是具有共同行为的若干对象的统一描述体C.类是创建对象的样板D.类就是C语言中的结构体类型29.有关类的说法不正确的是()。
A.类是一种用户字定义的数据类型。
B.只有类中的成员函数才能存取类中的私有成员。
C.在类中,如果不做特别说明,所指的数据均为私有类型。
D.在类中,如果不做特别说明,所指的成员函数均为公有类型。
30.下列不正确的选项是()。
A.C++语言是一种面向对象的程序设计语言,它支持面向对象思想中的3个主要特征B.标点符号是在程序中起分割内容和界定范围作用的一类单词C.iostream是一个标准的头文件,定义了一些输入输出流对象D.类与类之间不可以进行通信和联络31.关于C++类的描述中错误的是()A.类与类之间可以通过一些手段进行通信和联络B.类用于描述事物的属性和对事物的操作C.类与类之间可以通过封装而具有明确的独立性D.类与类之间必须是平等的关系,而不能组成层次关系32.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()A.public B.protected C.private D.static33.下面说法中正确的是()A.一个类只能定义一个构造函数,但可以定义多哥析构函数B.一个类只能定义一个析构函数,但可以定义多个构造函数C.构造函数与析构函数同名,知识名字前加了一个求反符号(~)D.构造啊函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以34.下列关于构造函数的描述中,错误的是()。
A.构造函数可以设置默认参数B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数D.构造函数不可以重载35.有关析构函数的说法不正确的是()A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是用来释放一个对象D.析构函数无任何函数类型36.对于任意一个类,析构函数的个数最多为()。
A.0 B.1 C.2 D.337.已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。
A.0 B.1 C.2 D.338.通常拷贝构造函数的参数表是()A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名39.不能作为函数重载判断依据的是()。
A.参数个数B.参数类型C.函数名字D.函数的返回类型40.下列运算符中,()运算符在C++中不能重载。
A.?:B.+C.-D.<=41.this指针是C++实现()机制。
A.抽象B.封装C.继承D.重载42.在C++中,关于下列设置参数默认值的描述中,正确的是()。
A.不允许设置设置参数的默认值B.设置参数默认值只能在定义函数时设置C.设置参数默认值时,应该实现设置右边的再设置左边的D.设置参数默认值时,应该全部参数都设置43.进行文件操作时需要包含()头文件。
A.iostream B.fstream C.stdio D.stdlib44.下面描述中,表达错误的是()。
A.公有继承时基类中的public成员在派生类中仍是public的B.公有继承是基类中的private成员在派生类中仍是private的C.公有继承时基类中的protected成员在派生类中仍是protected的D.私有继承时基类中的public成员在派生类中是private的45.C++语言中规定函数的返回值的类型是由()。
A.return语句中的表达式类型所决定的B.调用该函数式的主调用函数类型所决定的C.调用该函数式系统临时确定的D.在定义该函数式所指的数据类型所决定的46. ()是给对象取了一个别名,他引入了对象的同义词。
A.指针B.引用C.枚举D.结构47.在C++中,函数原型不能标识()。
A.函数的返回类型B.函数参数的个数C.函数参数类型D.函数的功能48.友元的作用是()A.提高程序是运行效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类49.说明友元函数使用关键字( )A.friend B. static C.const D.colatile 50.类A是类B的友元,类B是类C的友元,则()是正确的。
A.类B是类A的友元B.类C是类A的友元C.类A是类C的友元D.以上都不对51.下列的各类函数中,()不是类的成员函数。
A.构造函数B.析构函数C.友元函数D.拷贝构造函数52.模板的使用是为了()。
A.提高代码的可重用性B.提高代码的运行效率C.加强类的封装性D.实现多态性53.类模板的使用实际上是类模板实例化成一个具体的()A.类B.对象C.函数D.模板类54.类模板的模板参数()A.只可作为数据成员的类型B.只可作为成员函数的返回类型C.只可作为成员函数的参数类型D.以上三者皆可55.使用派生类的主要原因是()。
A.提高代码的可重用性B.提高程序的运行效率C.加强类的封装性D.实现数据的隐藏56.关于虚函数,正确的描述是()。
A.析构函数不能是虚函数B.虚函数可以是友元函数C.构造函数不能是虚函数D.虚函数可以是静态成员函数57.编译时的多态性通常使用()获得。