c++复习题及答案.docx
- 文档编号:6594134
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:15
- 大小:29.09KB
c++复习题及答案.docx
《c++复习题及答案.docx》由会员分享,可在线阅读,更多相关《c++复习题及答案.docx(15页珍藏版)》请在冰豆网上搜索。
c++复习题及答案
一、选择题
1.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为 A 。
A.main B.MAIN C.name D.function
2.若a,b均为int型变量,为了将10赋给a,将20赋给b,则对应以下cin语句的正确输入方式为B。
(
cin>>a>>b;
A.1020
3.在以下关于C++语言的注释的叙述中,不正确的是C。
A.A.C++程序中,注释可用"/*"、"*/"形式表示,也可用"#KDJFC.67KDJD.DK3_
4.关于字符串和字符的关系正确的是C
A.“A”与’A’是相同的
B.字符串是常量,字符是变量
C.“A”与’A’是不同的
D.
“A”与“A”是相同的
5.下面关于语句的说法正确的是B
A.下面这两段程序的执行效果是一致的
B.空语句是只有一个分号的语句,它其实什么也不干
C.语句的构成不一定需要分号
D.语句的书写对程序的运行不起作用,因此可以随便写都可以
6.以下各标识符中,合法的用户标识符组为D。
A.PAd,P#d,b-b,abc,_0123,ssiped
B.cin,a10,CPP,float,del_word,signed
C.void,max,hiy,
D.a,temp,_isw,INT,keep,wind
7.在VC++中,以下语句的输出为D。
shortintk=-1;
cout< A.-1,-1B.-1,32767C.-1,32768D.-1,65535 8.若给出以下程序,其输出为B。 #include usingnamespacestd; intmain() {inta=4,b=7; cout<<(a=a+1,b+a,b+1)< return0; } A.5B.8C.11D.程序有错误,无法运行 9.字符串“\”EOF=-\61\””的长度是A。 A.8 B.9 C.12D.非法字符串 10.数学式 在C++程序中对应正确的表达式为B。 A.sqrt(sin(x)>0? sin(x): -sin(x))B.sqrt(fabs(sinx)) C.sqrt(sqrt(sinx*sinx))D.fabs(sqrt(sin(x))) 11.下列A是C++语言的有效标识符? A._No1B.C.12345D.int 12.C++语言中,表示一条语句结束的标号是B A.#B.;C.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假 13.若给定条件表达式(m)? (a++): (a--),则其中表达式mC。 A.和(m==0)等价B.和(m==1)等价 C.和(m! =0)等价D.和(m! =1)等价 14.在C++语言的if语句中,用作判断的表达式为D。 A.关系表达式B.逻辑表达式 C.算术表达式D.任意表达式 15.设i和k都是int类型,则以下for循环语句B。 for(i=0,k=-1;k=1;i++,k++)cout<<"****\n"; A.判断循环结束的条件不合法B.是无限循环 C.循环体一次也不执行D.循环体只执行一次 16.若有以下语句,则输出结果为A。 inta=2,b=1; cout<b? "a大于b": "a小于b"< A.a大于bB.a小于bC.1D.输出语句有错 17.intk=10; while(k=0)k=k-1; 则下面描述正确的是C。 A.while循环执行10次B.循环是无限循环 C.循环体语句一次也不执行D.循环体语句执行一次 18.inta=1,b=2,c=2,t; while(a cout< 运行结果为D。 A.1,2,0B.2,1,0C.1,2,1D.2,1,1 19.intx=-1; do {x=x*x;} while(! x); 下列说法正确的是C。 A.是死循环B.循环执行两次 C.循环执行一次D.有语法错误 20. 以下能正确计算1*2*3*…*10的程序段是C。 A. do{i=1;s=1;B.do{i=1;s=0; s=s*i;i++;}s=s*i;i++;} while(i<=10);while(i<=10); C.i=1;s=1;D.i=1;s=0; do{s=s*i;do{s=s*i; i++;}i++;} while(i<=10);while(i<=10); 21.以下描述正确的是C。 A.由于do-while循环中循环体语句只是一条可执行语句,所以循环体内不能使用复合语句 B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作 D.do-while循环中,根据情况可以省略while 22.C++中while和do-while循环的主要区别是A。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 23.下面有关for循环的正确描述是D。 A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判断表达式 C.for循环中,不能用break语句跳出循环体 D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 24.对for(表达式1;;表达式3)可理解为B。 A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3) C.for(表达式1;表达式1;表达式3) D.or(表达式1;表达式3;表达式3) 25.for(i=2;i==0;)printf(“%d”,I--); 循环执行的次数是B。 A.无限次B.0次C.1次D.2次 26.在C++编程语言中,以下正确的描述是B。 A.continue语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循坏体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出,只能使用goto语句 27.下面程序段D。 for(t=1;t<=100;t++) {cin>>x; if(x<0)continue; cout< A.当x<0时整个循环结束B.x>=0时什么也不输出 C.cout永远也不执行D.最多允许输出100个非负整数 28.定义一个函数实现交换x和y的值,并将结果正确返回。 能够实现此功能的是C。 A.swap(intx,inty){intt;t=x;x=y;y=t;} B.swap(int*x,int*y){intt;t=x;x=y;y=t;} C.swap(int*x,int*y){intt;t=*x;*x=*y;*y=t;} D.swap(int*x,int*y){int*t;t=x;x=y;y=t;} 29.说明语句"int(*p)();"的含义是C。 A.p是一个指向一维数组的指针变量 B.p是指针变量,指向一个整型数据 C.p是一个指向函数的指针,该函数的返回值是一个整型 D.以上都不对 30.设有说明int(*p)[4];其中的标识符p是C。 A.4个指向整型变量的指针变量 B.指向4个整型变量的函数指针 C.一个指向具有4个整型元素的一维数组的指针 D.具有4个指向整型变量的指针元素的一维指针数组 31.若有如下声明,下列说法错误的是C。 structem {chara; charb; }; A.struct是结构体类型关键字B.em是结构体类型名 C.em是用户声明的结构体变量D.a,b是结构体成员名 32.若有下列定义,则对结构体变量的成员引用错误的是C。 structdate {intyear; intmonth; intday; }; structstudent {intno; charname[16]; datebirthday; }stud; A. B. C. 33.D.下列叙述中,不正确的是B。 A.类的构造函数可以重载 B.类的析构函数可以重载 C.一个类可以不定义构造函数 D.一个类可以不定义析构函数 34.已知宏定义: #defineN3 #defineY(n)((N+1)*n) ((N+1)*5+1) 执行语句z=2*(N+Y(5+1));后,变量z的值是B。 A.42B.48C.52D.出错 35.类的构造函数的作用是C A)一般成员函数的初始化 B)类的初始化 C)对象的初始化 D)删除类创建的对象 36.下列说法正确的是B A)内置函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B)内置函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C)类的内置函数必须在类体内定义 D)类的内置函数必须在类体外通过加关键字inline定义 二、填空题 1.程序的三种基本的控制结构是: 顺序结构、选择结构、选择结构 2.假定一个结构类型定义为: “struct D{int a; union{int b;double c;};D *d[2];};”,则该类型的大小为 20 字节。 3.C++语言中的每条基本语句以 ; 作为结束符,每条复合语句以 } 作为结束符。 4.关系表达式x+y>5的相反表达式为 x+y<=5 。 5.下面的程序段中循环体的执行次数是3。 a=10;b=0; do{b+=2;a-=2+b;}while(a>=0); 6.下面程序段的运行结果为**。 x=2; do{cout<<“*”;x--;}while(! x==0); 7.定义内置函数的方法是在函数的返回值类型之前增加关键字inline。 8.假定a为一个整型数组名,则元素a[4]的字节地址为 a+16 。 9.假定一个一维数组的定义为“char a[8];”,则该数组所含元素的个数为 8 ,所占存储空间的字节数为 32 。 10.已知inta[3][2]={3,2,1};则表达式“a[0][0]/a[0][1]/a[0][2]”的值是1。 11.若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址。 12.如果一个函数无返回值,定义它时函数类型应是void。 13.预处理命令以#开头。 14.假定a是一个二维数组,则a[i][j]的指针访问方式为 *(a[i]+j) 或 *(*(a+i)+j) 。 15.C++在编译时,可以将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。 这种嵌入到主调函数中的函数称为内置函数。 16.使用内置函数可以节省运行时间,但却增加了目标函数的长度。 17.C++允许用同一函数名定义多个函数,这些函数的参数个数和参数类型不同。 这就是函数的重载。 18.利用C++编程语言可以建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。 这个通用函数就称为函数模板。 19.对一个类中的数据成员的初始化可以通过构造函数中的 初始化表 实现,也可以通过构造函数中的 函数体 实现。 20.假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为 10 。 三、填空完成下面的程序 1.#include usingnamespacestd; intmain() {inta,b,c,x; cin>>a; cout<<"a="< cin>>b; cout<<"b="< cin>>c; cout<<"c="< if(a==b&&b==c)cout<<"thethreenumbersareeauql"< else {if(a>b&&a>c)x=a; elseif(b>c)x=b; elsex=c; cout<<"thegreatestnumberis: "< } return0; } 2.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环,请填空完成程序。 intn=0,c; c=getchar(); while(c! ='\n') {if(c>='A'&&c<='Z'||c>='a'&&c<='z')n++; c=getchar(); } 3.鸡、兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,x代表有多少只鸡,y代表有多少只兔子,请填空完成程序。 for(x=1;x<=29;x++) {y=30-x; if(2*x+4*y==90)cout< } 4.下面的程序是求2个或3个正整数中的最大数,用带有默认参数的函数实现。 请填空完成程序。 #include usingnamespacestd; intmain() {intmax(inta,intb,intc=0); inta,b,c,m1,m2; cin>>a>>b>>c; m1=max(a,b,c); m2=max(a,b); cout<<"a,b,c三个正整数中的最大数为: "< cout<<"a,b两个正整数中的最大数为: "< return0; } intmax(inta,intb,intc) {if(b>a)a=b; if(c>a)a=c; returna; } 四、给出下列程序运行后的输出结果 1.#include usingnamespacestd; voidSB(charch) {switch(ch) {case'A': case'a': cout<<"well! ";break; case'B': case'b': cout<<"good! ";break; case'C': case'c': cout<<"pass! ";break; default: cout<<"bad! ";break; } } intmain() {chara1='B',a2='c',a3='f'; SB(a1);SB(a2);SB(a3);SB('A'); cout< return0; } 答案: good! pass! bad! well! 2.#include usingnamespacestd; intmain() {inta,b; for(a=1,b=1;a<=100;a++) {if(b>=20)break; if(b%3==1) {b+=3;continue;} b-=5; } cout< return0; } 答案: 8 3.#include usingnamespacestd; main() {inti,j,x=0; for(i=0;i<2;i++) {x++; for(j=0;j<=3;j++) {if(j%2)continue; x++; } x++; } cout<<“x=”< } 答案: x=8 4.#include usingnamespacestd; main() {inti; for(i=1;i<=5;i++) {if(i%2)cout<<“*”; elsecontinue; cout<<“#”; } cout<<“$\n”; } 答案: *#*#*#$ 5.#include usingnamespacestd; voidmain() {intI,j,a=0; for(I=0;I<2;I++) {for(j=0;j<4;j++) {if(j%2)break; a++; } a++; } cout< } 答案: 4 6.运行以下程序时,从键盘键入right? 请给出回车后运行的结果。 #include usingnamespacestd; voidmain() {charc; while((c=getchar())! ='? ')putchar(++c); } 答案: sjhiu 7.#include<> voidmain() {intI; for(I=1;I<=5;I++) switch(I%2) {case0: I++;cout<<"#";break; case1: I+=2;cout<<"*"; default: cout<<"\n"; } } 答案: * # 8.#include usingnamespacestd; inta=5; intmain() {inta=10,b=20; {inta=0,b=0; for(inti=1;i<6;i++){a+=i;b+=a;} } cout< return0; } 答案: 10 20 9.#include usingnamespacestd; intk=1; voidf(intm) {m+=k;k+=m; {chark='B';cout< cout< } intmain() {inti=4; f(i); cout< return0; } 程序的输出第一行是1,第二行是5,6,第三行是4,6。 10.#include<> #include<> intmain() { chara[5]={"student","worker","cadre","soldier","peasant"}; charp1,p2; p1=p2=a[0]; for(inti=0;i<5;i++) { if(strcmp(a[i],p1)>0)p1=a[i]; if(strcmp(a[i],p2)<0)p2=a[i]; } cout< return0; } 答案: worker cadre 11.#include usingnamespacestd; intm[3][3]={{1},{2},{3}},n[3][3]={1,2,3}; intmain() {cout< return; } 程序的输出第一行是3,第二行是0。 12.#include usingnamespacestd; voidf(ints[]) {staticintj; do{s[j]+=s[j+1];}while(++j<2); } intmain() {intk,a[10]={1,2,3,4,5}; for(f(a),k=0;k<5;k++)cout< cout< for(f(a),k=0;k<5;k++)cout< cout< return0; } 程序输出的第一行是35345,程序输出的第二行是35745。 五、编程题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 复习题 答案