《C++基础+编程题复习.docx》由会员分享,可在线阅读,更多相关《C++基础+编程题复习.docx(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、08VC练习卷 总分:80分一 1.单项选择题1.在C+语言中,char型数据在内存中的 存储形式是_aA. ASCI!码B.码C.反码D.原码 2.设n=I0,i=4,则赋值运算n%=i+I执行后, n的值是 a 。A. 0 B. 3C. 2D. 13 .设int n=3;则+n的结果是 c, n的结果是。A. 23 B. 32 C. 44 D. 534 .设 int m=I,n=2:则 m+=n 的结果是_a_.A.0B.1C.2D.35 .设 int m=I,n=2;则+m=n 的结果是_b_A.0B.1C.2D.36 .系统约定C+源程序文件名的缺省的扩 展名为 a 。A. cpp B
2、. c+ C. bcc D. vcc7.设有说明“皿2=15,1=17,靖,执行表达 式“c=a|(b+=b)”后,则a、b、c的值分别 是aA. 15、17、1 B. k 34. 35 C. 15、34、 ! D. 15、 17、 158 .设有说明int x=10,y=4,f;float m;,执 行表达式“am=x/y”后,则f、m的值分别 为dA. 2、2.5 B. 3、2.5 C, 2.5、2.5 D. 2、2.09 . 设有语句“ibr(int i=5,sum=0;+sum, i5;i+)sum+=i;M,则fbr()语句的执行情况 是 a A.循环0次 B.循环4次 C.循 环5
3、次D.循环6次10 .有关函数重载的正确说法是b_ A.函数名不同,但参数的个数和类型相同 B.函数名相同,但参数的个数不同或参数 的类型不同C.函数名相同,参数的个数和类型也相同D.函数名相同,函数的返回值不同,而与 函数的参数和类型无关11 .下列有关编译预处理命令的说明中,正 确的是a A.以“#开头的行,可出现的函数定义 内或函数定义外B.以“开头的行,后面不可有分号C.以#开头,可出现在一行中的任何 位置D.以“#开头,必放在程序开头 12.以下四组函数原型说明中,满足C+ 函数重载规则的是c 。A. float f(float x); void f(float y); B. flo
4、at Rfloat x); void f2(float x,float y);C. float fi(float x,int y); void fi(float y); D. float Afloat y); float f(float y);13.当个函数无返回值时,函数的类型应 定义为 a 0A. void B.任意 C. int D.无 14. C+语言中规定函数的返回值的类型 是由 d 。A. return语句中的表达式类型所决定B. 调用该函数时的主调用函数类型所决定C,调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定 15.以卜叙述中不正确的是d A,在函数中,通过
5、return语句传回函数 值B.在函数中,可以有多条return语句C.主函数名main后的对圆括号中也可 以带有形参D.调用函数必须在一条独立的语句中完成 16.下列数组的定义中,c 是错误的。A. charcal=c, h, a, ?) ; B. char *ca2=char”; C. char ca34=char;D. int array=6, 5, 3, 4;17.在 intb3=l, 3, 2, 4, 5, 6, 0;中 b2112值是cA. 0 B. 5 C. 6 D. 218.在 inta5=l, 3, 5;中,数组元素 al的值是_c_ A. 1 B, 0 C. 3 D. 2
6、19.设有说明语句:char s=ab0123n79;strlen(s)的 值 是 a.A. 2 B. 3 C. 8 D. 1420 设有说明语句:char sn=ef0123n89:sizeof(s)的值是 b .A. 2 B. 9 C. 11 D. 15 21.数组作为函数的形参时,把数组名作为 实参,传递给函数的是 a .A.该数组的首地址B.该数组的元素个数C.该数组中的各元素值D.该数组的大小 22.运算符+、=、=、中,优先级最低 的运算符是c 。A. + B. ;表达式2;语句中,语句的执行情况是 c_.A.至少执行一次B.至少执行两次C. 可能执行,也可能不执行D,不执行 24
7、.下列关于开关语句的描述中,a 是正确的.A.开关语句中de也ult子句可以没有,也可 以有一个B.开关语句中每个语句序列中必须有 break语句C.开关语句中default子句只能放在最后 D.开关语句中case子句后面的表达式可 以是整型表达式25. 下述关于break语句的描述 中,c是不正确的A. break语句可用于循环体内,它将退出 该重循环B. break语句可用于开关语句中,它将退 出开关语句C. break语句可用于if体内,它将退出if 语句D. break语句在个循环体内可以出现 多次26 .下列While循环的次数是a .While( int i=0) i;A. 0 B
8、. 1 C. 5 D.无限27 .循环 语 句 for(intx=O,y=O;y!=l00|xs2) B. ifi(strcmp(sl,s2) C. if(strcmp(s2,s l)0) D. ifi(strcmp(s l,s2)0) 31,判断字符串a和b是否相等,应当使用 dA. if(a=b) B. ifi(a=b) C. ifistrcmp(a,b)D. if(!strcmp(a,b)32.有下面的程序段,则dchar a3,b =ChinaM;a=b;couta;A1运行后将输出China B.运行后将输出 Ch C.运行后将输出Chi D编译出错 33.下面程序段的运行结果是b
9、char c5=a,b,,,c,;coutc;A. a”b B. ab C. abOc D. abc 34.下面是对字符数组s的初始化,其中不 正确的是_dA. char s5=abc”; B. char s5=a,b,c;C. char s5=,w,;D. chars5=,abcdef,;35 .定义如下变量和数组:int k; int a33= 123,4,5,6,7,8,9;则下面语句的输出结果是afbr(k=0;k3;k+) coutak2-k;A. 3 5 7 B. 3 69 C. 1 5 9 D. 14736 .若二维数组a有m列,则在a国J前的 元素个数为 bA. J*m+I B
10、. I*m+J C. I*m+J-1D. l*m+J+l37.若有说明:inta3=l,2,3,4,5,6,7WJa数组第一维的大小是bA. 2 B. 3 C. 4 D.无确定值38.若有说明:int a34;则数组a中各元 素 cA.可在程序的运行阶段得到初值0 B. 可在程序的编译阶段得到初值0C.不能得到确定的初值D.可在程序的编译或运行阶段得到初值0 39.若有说明:int a34=;则下面正确 的叙述是dA.只有元素a可得到初值0 B. 此说明语句不正确C.数组a中各元素都可得到初值,但其值 不一定为 D.数组a中每个元素均可得 到初值40.若有说明:int a口0;则对a数组元素的
11、 正确引用是 dA. a10 B. a3.5 C. a(5) D. a10-1041,以下定义维整型数组a的正确方法 是 dA. int a( 10);B. int n=10,an; C.int n;cinn;int an; D. #define SIZE 10 int aSIZE;42.在C+语言中,引用数组元素时,其数组 下标的数据类型允许的是 cA,整型常量B.整型表达式C,整 型常量或整型表达式D,任何类型的表达式 43.执行以下语句序列:enmu Red,Blue,Yellowcl,c2;cl=Yellow;/A coutcl; /B 则 bA.输出1 B.输出2 C.输出3 D.
12、B行语法错 44.下面程序的运行结果是b#inlcude void main() char a =moming,t; int Ij=O; fbr(I=l;I7;I+) if(aUaI) j=I; t=aj; aj=a7; a7=aj;couta;A. mogninr B. mo C.morning D. momin 45.下面程序的运行结果是d#include #include void main()char a80=AB”,b80=LMNP”;int 1=0; strcat(a,b);while(aI+!=,0,) bI=aI;coutb; A. LB B. ABLMNP C. ABD. L
13、BLMNP46 .下面程序的运行结果是avoid main()char ch7=M12ab56M; int I,s=0;fbr(I=0;chI=0,&chI=,9,;I+=2)s=ls+chI;couts;A. 1 B. 1256C. 12ab56 D. 125647 .下述对C+语言字符数组的描述中错 误的是cA,字符数组可以存放字符串B,字符 数组可以整体输入,输出C.可以在赋值语句中用赋值运算符“=” 对字符数组整体赋值D.不可以用关系运算符对数组中的字符 串进行比较48 .下列 a 是语句.A. ; B. a=17 C. x+y D. coutn49 .设el和e3是表达式,与语句fo
14、r(e 1 ;e3)s;等同的语句是 d A. for(el;el;e3) s; B. fbr(el;e3;e3) s; C. fbr(e 1 ;0;e3) s; D. fbr(e 1 ;1 ;e3) s;50 .若定义:float x; int a,b:则正确的 switch 语句是 d A. switch(x) case 1.0:coutM*nM;case 2.0:cout,*n*;B. switch(x) case 1.2:cout*n;case 3 : coutv*n”;)C. switch(a+b) case 1 : cout*n;case l,2:cout*n;)D. switch
15、(a+b) case l:cout*n;case 2:cout*n;-2.填空题1 . 设 有 语 句 “int x43=3,4,5,6,7,8,9,10,11,12;b则 x32 的初值是 0_.2 .执行语句序列char s20=程序设计; coutstrlen(s);输出结果是8。3 .设有语句char s =MChinaOnanjinH ; int m=strlen(s);则 m 的值是5 4 .执行以下语句序列后,y的值为17 #define S(x) x*xint y, z=5;y=S(z+2);5 .已知函数f的定义是:int f(int n) n*=2; return n+1;
16、则执行int m=6,n=2;m=fin);后,m和n的值分别是 5_2_6 .下面程序运行后输出的第二行是_10_35_5 #includeint a=5;void main()int a=10,b=20;coutaf *bendl;int a=0,b=0;fbr(int i=l; i6; i+)a+=i; b+=a; couta* ,b, ,:aendl;couta* ,bendl;7 . C+中默认main函数的返回类型是 _int_,所以在定义main函数时可以不写 返回值类型。8 .以下程序的执行结果是_s= 10 .#includeint sum(int);void main()i
17、nt s,i;fbr(i=l;i=10;i+)s=sum(i);cout,s=sendl;int sum(int k) int x=0;retum(x+=k);9 .以下程序的执行结果是 19 24 30 37 45 #includeint func(int a) static int x=10;int y=l;x+=a; a-H-; y-H-;retum(x+y+a);void main() int i=3;while(iz z11 . 若 有 定 义:int巾4=1,2,0,4,6,8,10;则初始化后, al得到的初始值是。,a2l得到 的初值是6。12 .以下程序的执行结果是),0,1
18、。#includevoid main()(int x=5,y=2;cout! (y=x/2), cout(y!=x%3),;cout(x! =y|x=y)endl;13 .语句coutV:的输出结果为。vc练习卷 总分:115分一 1.单项选择题1 .在个被调用函数中,关于return语句 使用的描述,错误的是dA,被调用函数中可以不用return语句B. 被调用函数中可以使用多个return语句C,被调用函数中,如果有返回值,就一 定要有return语句D.被调用函数中,个return语句可返 回多个值给调用函数2 . 以下程序输出的结果是 a=a,b= #includevoid main(
19、void) fbr(int a= l,b=l; a=8) break;ifi(b%2=l)b+=7; continue; b-=3;cout,a=,a,n,Mb=,b,n,; A. 2 8 B. 1 7 C. 8 2 D. 7 13 .在CH语言程序中,有关函数的定义正 确的是 bA.函数的定义可以嵌套,但函数的调用 不可以嵌套B,函数的定义不可以嵌套,但函数的调 用可以嵌套C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的调用均可以嵌套 4在循环语句的循环体中使用break语句 的作用是b_。A.结束本次循环B.结束该层的循环 C.结束开关语句D.结束程序执行 5.下面程序段的运
20、行结果是a .#include void main()int I;fbr(I=l;k=5;I+)ifU%2) coutv*”; else continue;coutv#; coutv$n”; A. *#*#*#$ B. #*#*#*$ C. *#*#$ D,料#*$6以下程序的正确运行结果是d#includeint Rint);void main()int a=2,i;fbr(i=O; iy) coutxynH;else coutMx=yM;B. ifi(x!=y)ifi(xy) coutnxynM;else cout,xy) coutMxynM else cout,xy)coutvv”xyn
21、”;else cout,x=ynM;else cout,x=yn,*;10 .下列DO-While循环的次数为d. int i=5;Do coutiendl;i-;while(i!=0);A. 0 B. 1 C. 5 D,无限11 .已知函数f的原型为:void f(int &a,char *b);变量 s,t 的定义是:int s;char t=MABCDM; 把s和t分别作为第一参数和第二参数来调 用函数f,正确的调用语句是:cA. a&s,&t); B. R&s,t); C. f(s,t);D. f(s,&t);12 .下列a是语句.A. ; B. a=17 C. x+y D. cout
22、n13.若定义:float x; int a,b;则正确的 switch 语句是d A. switch(x) case 1.0:coutn*nn;case 2.0:cout*nH;B. switch(x) case 1.2:cout,*nM;case 3 : coutH*n;)C. switch(a+b) case 1 : coutM*n;case l,2:cout*n”;D. switch(a+b) case l:coutM* n;case 2:coutn*nM;14,以下正确的说法是 d一A.用户若需要调用标准函数,调用前必 须重新定义B.用户可以直接调用所有标准库函数C,用户可以定义和标
23、准库函数重名的函 数,但是在使用时调用的是系统库函数D.用户可以通过文件包含命令将系统库 函数包含到用户源文件中,然后调用系统库 函数15.采用函数重载的目的在于d 。A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性 16. int x=-l;dox=x*x; while(!x);下列说法正确的是 CA,是死循环 B.循环执行两次C. 循环执行次D,有语法错误17.以下四组函数原型说明中,满足C+ 函数重载规则的是c 。A. float f(float x); void f(float y); B. float Rfloat x); void f2(float x,float y)
24、;C. float float x,int y); void f(float y);D. float Rfloat y); float Afloat y);18.下面的程序输出的结果是b#include void LE(int &a,int b) ( int x=a;a=b;b=x;cout aH Hbendl; ) void main() int x=10,y=25;LE(x,y); cout xM Myendl; )A. 25 1025 10B. 25 1025 25C. 25 1010 25D. 10 2510 2519.以下函数声明中,存在着语法错误的是 dA. int AA(int
25、a,int) ; B. int *BB(int,int); C. void CC(int,int=5); D. void *DD(x, y); 20. int a= 1 ,b=2,c=2;while(abc) t=a;a=b;b=t;c; couta,bn,c;运行结果为 aA. 1,2,0 B. 2,1,0 C. 1,2,1 D. 2,1,1 21若有执行语句char str7;cinstr;当输 入为:ObjectWindowsPrograrmming!所得的 结果是str=bA. Object Windows Programming! B. Object C. Object Window
26、sD. Object Windows Programming22 .控制格式I/O的操作中,_d 是设置域宽的。A. ws B. oct C. setfill() D. setw()23 .函数的功能是交换x和y中的值,且通 过正确调用返回交换结果。不能正确执行此 功能的函数是 b 。A. void funa(int *x, int *y) int i, *p=&i;*p=*x; *x=*y; *y=*p;void main() int x=3,y=5;funa(&x,&y); coutx,t,y; B. void funa(int x, int y) ( int t; t=x; x=y; y
27、=t;void main() int x=3,y=5;funa(x,y);coutx,t,y;)C. void fiina( int *x, int *y)D. void funa (int *x, int *y) (*x=*x+*y; *y=*x-*y;*X=*x-*y , )void main() int x=3,y=5;fiina(&x,&y);coutxfy;24.在每个C+程序中都必须包含有这样 个函数,该函数的函数名为a 。A. main B. MAIN C. name D. function 25. int x=0,y=0;while(x15) y+,x+=+y;coutyM,x
28、;则运行结果为d A. 20, 7B. 6, 12 C. 20, 8 D. 8, 2026 .能把函数处理结果的两个数据返回给 主调函数,在下面的方法中不正确的是A. return这两个数B.形参用两个元素 的数组C,形参用两个这种数据类型的指 针D.用两个全局变量27 . sizeof(double)是个_a表达式。A.整型B,双精度C,不合法D. 函数调用28 .与以下程序段等价的是a_ while(a) ififb) continue;c;A. while(a)if(!b)c; B. while(c)int p;void main() int x=3,y=5; funa(&x,&y);
29、coutx,t,y;)C. while(c) if(b)c; )D. while(a) ififb) break;if(!b) break;29.要求函数的功能是在维数组a中查 找x值:若找到则返回所在的下标值,否则 返回;数放在a至an中。不能正确执 行此功能的函数是 c.A. funa(int *a, int n, int x)*a=x;while(an!=x) n-;retum(n);B. funb(int *a, int n, int x)int k;fbr(k=l;kv=n; k+)if(ak=x)retum(k);return(O);)C. func(int a , int n,
30、int x)(int *k;aO=x; k=a+n;while(*k!=x) k retum(k-n);D. fund(int a , int n, int x)int k=O;do k-H-;while(kn+l )&(ak!=x);if(kn+1 )&( ak=x)return (k);else retum(O);)30 .预处理命令在程序中都是以开头的。 A. *B. #C. : D. /31 .有一函数的定义如:void fUn(char*s) 则不正确的函数调用是d_。A. void main()char s20 =abcdefgh;fun(s);B. void main() (ch
31、ar a20 =Mabcdefgh; fun(&a0);C. void main()char s20 =abcdefghH;char *p=s; fun(p);D. void main()(char s20 =abcdefgh; fun(s);32 .对数组名作函数的参数,下面描述正确 的是 bA.数组名作函数的参数,调用时将实参数 组复制给形参数组。B.数组名作函数的参数,主调函数和被调 函数共用一段存储单元。C.数组名作参数时,形参定义的数组长度 不能省略。D.数组名作参数,不能改变主调函数中的 数据。33 .预处理命令以(b)开头。A. *B. # C. / D.:34 , 设有函数定义
32、int n(void)retum 200,100;H,设调用函数 fl()时,一a。A,函数返回值!00 B.函数返回两个 值100和200 C,函数返回值200D.语句“return 200,10;”语法错,不能 调用函数35 .使用如setw()的操作对数据进行格式 输出时,应包含c 文件A. iostream.h B.fstream.h C.ioman ip.h D. stdlib.h36 .在C+语言中,080是 d=A,进制数B.十进制数C.十六 进制数D.非法数37 . C+语言中while和do-whilc循环的主 要区别是a.A. do-while的循环体至少无条件执行一次B.
33、 while的循环控制条件比do-while的循 环控制条件严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句 38.下述关于循环体的描述中,c_是 错误的.A,循环体中可以出现break语句和 continue语句B.循环体中还可以出现循 环语句C.循环体中不能出现goto语句D.循 环体中可以出现开关语句39 .已知函数f的原型是:int f(char a,char *b=NULL,double c=0.0);则下列调用中,不 能正确地调用f函数的是b A. f(99) B. ffA,4.5) C. ffA,123M) D. R(char)65,“
34、123”)40 .下述关于break语句的描述中,c_是不正确的A. break语句可用于循环体内,它将退出 该重循环B. break语句可用于开关语句中,它将退 出开关语句C. break语句可用于if体内,它将退出if 语句D. break语句在个循环体内可以出现 多次41.下列关于条件语句的描述中,c是错误的.A. if语句中只有一个else子句B.if语句中可以有多个else if子句C. if语句中if体内不能是switch语句 D. if语句的if体中可以是循环语句42.在参数传递过程中,对形参和实参的要 求是 b A,函数定义时,形参一直占用存储空间。 B.实参可以是常量、变量或
35、表达式。C.形参可以是常量、变量或表达式。 D,形参和实参类型和个数都可以不同。 43.下列字符列中,可作为语言程序 自定义标识符是b .A. switch B. For C. break D. do 44.以下程序的输出结果是a。#include sub 1 (char a , char b) char c ; c=a ; a=b ; b=c ;sub2(char *a , char b) char c ; c=*a ; *a=b ; b=c;sub3(char *a , char *b) char c ; c=*a ; *a=*b ; *b=c; void main()char a, b;
36、a=A; b-B1; sub3(&a,&b); coutab;a=A; b=B; sub2(&a,b); coutab;a=,A; b=B; subl(a,b); coutab; )A. BABBAB B. ABBBBA C. BABABA D. BAABBA45 .当个函数无返回值时,函数的类型应 定义为 a 。A. void B.任意 C. int D.无46 .关于函数返回值的的描述正确的是 c 0A.函数返回表达式的类型一定与函数的 类型相同B.函数返回值的类型决定了返回值表达 式的类型C,当函数类型与返回值表达式类型不 同,将对返回值表达式的值进行类型转换D.函数返回值类型就是返回值
37、表达式类型 47.运算符+、=、=、中,优先级最低 的运算符是c .A. + B, = C. = D. %48 .设intx=2,y=3,z=4;则下面的表达式中 值不为1的表达式是_b.A. x&z B. (!y=l)&(!z=0) C. (xy)&!z II 1 D, x II +y&z-y49 .设 int a=2, b=2;则+a+b 的结果是 d,a的结果是,b的结果是.A. 2 3 5 B. 3 25 C. 432 D. 5 3 2 50.在C+中,关于下列设置参数默认值 的描述中,正确的是_cA,不允许设置参数的默认值B.设置参数默认值只能在定义函数时设置C.设置参数默认值时,应
38、该是先设置右 边的再设置左边的D,设置参数默认值时,应该全部参数都 设置一2.填空题1 .以下程序的执行结果是42,54,54_#includevoid main() (int x,y,z;x=y=z=3;y=x-H-l;coutxyM,;y=-H-x-l;coutxyn,;y=z+1;coutxyendl;2 .若给fiin函数的形参s传递字符串:“ U U 6354abe ”(其中 U ”表示空格字符),则 函数的返回值是6354#includc long fun(char s) long n;int sign;for(;*s=- f;s+);sign=(*s=,-*)? -1:1;if(
39、*s=,+,|*s=-) S-H-;fbr(n=0;*s=,0,&*s=,9,;s+) n=10*n+(*s-0);retum(sign*n);void main() char str=H 6354abcM; coutfun(str);3 .执行以下语句序列后,y的值为17 #define S(x) x*xint y, z=5;y=S(z+2);4 .设有语句 “ float x=2.9; int a=5,b;b=a+x;则变量b的值是7 5 . C+提供了两大类数据类型:基本数据类 型和一复合/导出数据类型基本数据 类型有4种:整型(int)、浮点型(float)、字符 型(char)和无值型_。6 .下列函数求任意阶多项式 aO+alX+a2XA2+anXAn的值并返冋多项 式的值,请填空。float sum(int *a,int x,int n)float y,t=l;y=*a;for(i=l;i=n;i+)y+=*(a+i)*t;return y;
限制150内