广州电大 期末c++综合复习答案Word格式文档下载.docx
《广州电大 期末c++综合复习答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《广州电大 期末c++综合复习答案Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。
C
3.设有语句“inta=12;
a+=a*a;
”,则执行结束后,a的值为( )。
A.12 B.144 C.156 D.288
4.x>
0&
x<
=10的相反表达式为( )。
A.x<
=0||x>
10 B.x<
=0&
x>
10
C.x<
=0||x<
=10 D.x>
5.x>
0||y==5的相反表达式为( )。
B
=0||y!
=5 B.x<
y!
=5
C.x>
0||y!
=5 D.x>
y==5
6.字符串“a+b=12\n”的长度为( )。
A.6 B.7 C.8 D.9
7.在下列的常值常量定义中,错误的定义语句是( )。
A.constM=10;
B.constintM=20;
C.constcharch;
D.constboolmark=true;
8.枚举类型中的每个枚举常量的值都是一个( )。
A.整数 B.浮点数
C.字符 D.逻辑值
9.含随机函数的表达式rand()%20的值在( )区间内。
A.1~19 B.1~20
C.0~19 D.0~20
四、第二章填空题
1.十进制数25表示成符合C++语言规则的八进制数为________。
031
2.十进制数25表示成符合C++语言规则的十六进制数为________。
0x19
3.在c++语言中,操纵符________表示输出一个换行符。
endl
4.执行“cout<
<
char('
A'
+2)<
endl;
”语句后得到的输出结果为________。
5.已知'
~'
Z'
的ASCII码为65~90,当执行“intx='
C'
+5;
”语句后x的值为________。
72
6.已知'
的ASCII码为65~90,当执行“charch=14*5+2;
cout<
ch<
”语句序列后,得到的输出结果为________。
H
7.假定一个枚举类型的定义为“enumRA{ab,ac,ad,ae};
”,则枚举常量ac的值为________。
1
8.假定一个枚举类型的定义为“enumRB{a1,a2=3,a3,a4}x=a3;
”,则x的值为________。
4
9.char、short、int、float、double类型的大小分别为________个字节。
10.十进制常数28和3.26的类型分别为________和________。
int、double
11.若需要定义一个常值常量,并且使C++能够进行类型检查,则应在定义语句的开始使用保留字__________。
const //#defineMAX100
12.使用const语句定义一个常值常量时,则必须对它同时进行__________。
初始化 //如constintMM=20;
13.执行“intx=45,y=13;
x/y;
”语句序列后得到的输出结果为________。
3
14.执行“intx=45,y=13;
x%y;
6
15.假定x=5,则表达式2+x++的值为________。
7
16.假定y=10,则表达式++y*3的值为________。
33
17.表达式float(25)/4的值为________。
6.25
18.表达式int(14.6)%5的值为________。
19.表达式x=x+y表示成复合赋值表达式为__________。
x+=y
20.表达式x=x+1表示成增量表达式为__________。
++x
21.增量表达式++y表示成赋值表达式为__________。
y=y+1
22.关系表达式(x==0)的等价表达式为________。
(!
x)
23.关系表达式(x!
=0)的等价表达式为________。
(x)
24.假定不允许使用逻辑非操作符,则关系表达式x+y>
5的相反表达式为____________。
x+y<
25.若x=5,y=10,则x>
y逻辑值为________。
false或0
26.若x=5,y=10,则x!
=y的逻辑值为________。
true或1
27.假定x=5,则执行“a=(x?
10:
20);
”语句后a的值为________。
10
28.执行“typedefintDataType;
”语句后,在使用int定义整型变量的地方都可以使用__________来定义整型变量。
DataType
五、第三章单选题
1.当处理特定问题时的循环次数已知时,通常采用( )来解决。
A.for循环 B.while循环 C.do循环 D.switch语句
2.循环体至少被执行一次的语句为( )语句。
A.for循环 B.while循环 C.do循环 D.任一种循环
3.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为( )语句。
A.for B.if C.do D.while
4.for语句能够被改写为( )语句。
A.复合 B.if C.switch D.while
5.循环语句“for(inti=0;
i<
n;
i++)S;
”中循环体S被执行的次数为( )。
A.1 B.n-1 C.n D.n+1
6.下面循环语句执行结束后输出的i值为( )。
B for(inti=0;
i++)if(i>
n/2) {cout<
i<
break;
}
A.n/2 B.n/2+1 C.n/2-1 D.n-1
7.在下面循环语句中内层循环体S语句的执行总次数为( )。
D for(inti=0;
i++)
for(intj=i;
j<
j++)S;
//n+(n-1)+...+1
A.n2 B.(n+1)/2 C.n(n-1)/2 D.n(n+1)/2
8.在下面的while循环语句中,其循环体被执行的次数为( )。
C inti=0,s=0;
while(s<
20){i++;
s+=i;
}//s=1,3,6,10,15,21
A.4 B.5 C.6 D.7
9.在下面的do循环语句中,其循环体被执行的次数为( )。
A inti=0;
doi++;
while(i*i<
10);
//i=0,1,2,3
A.4 B.3 C.5 D.2
六、第三章填空题
1.在switch语句中,每个语句标号所含保留字case后面的表达式必须是_______。
整型常量
2.在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。
if
3.作为语句标号使用的C++保留字case和default只能用于________语句的定义体中。
switch
4.执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当碰到下一个标号位置时(停止/不停止)________执行。
不停止
5.若while循环的“头”为”while(i++<
=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行______次后正常结束。
11
6.若do循环的“尾”为”while(++i<
10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行______次后正常结束。
7.当在程序中执行到________语句时,将结束本层循环类语句或switch语句的执行。
break
8.当在程序中执行到________语句时,将结束所在循环语句中循环体的一次执行。
continue
9.在程序中执行到________语句时,将结束所在函数的执行过程,返回到调用该函数的位置。
return
10.在程序执行完一个________函数调用后,将结束整个程序的执行过程,返回到操作系统或C++集成开发环境界面窗口。
主(或main)
七、第三章程序运行结果
1.#include<
iostream.h>
voidmain()
{
intx=5;
switch(2*x-3){
case4:
cout<
x<
’’;
case7:
2*x+1<
case10:
3*x-1<
default:
"
default"
}
cout<
switchend."
}答案:
1114switchend.
C++语言程序设计复习课
一、第三章函数功能
1.#include<
intSA(inta,intb){
if(a>
b)return1;
elseif(a==b)return0;
elsereturn-1;
答案:
比较两个整型参数a和b的大小,若a>
b则返回1,若a==b则返回0,若a<
b则返回-1。
2.intSC(inta,intb,intc){
=b&
a>
=c)returna;
if(b>
=a&
b>
=c)returnb;
returnc;
求出a,b,c三个数中的最大值并返回。
3.intSE(intn){//n为大于等于1的整数
intx;
cin>
>
x;
if(n==1)returnx;
intm=x;
while(--n){cin>
m+=x;
returnm;
求出从键盘上输入的n个整数之和并返回。
4.doubleSF(doublex,intn){//n为大于等于0的整数
doublep=1,s=1;
for(inti=1;
=n;
i++){p*=x;
s+=p/(i+1);
returns;
计算1+x/2+x2/3+...+xn/(n+1)的值并返回。
5.#include<
math.h>
boolSG(intx){//x为大于等于2的整数
inta=int(sqrt(x));
//取x的平方根
inti=2;
while(i<
=a){if(x%i==0)break;
i++;
if(i<
=a)return0;
elsereturn1;
判断x是否为一个质数,若是则返回1,否则返回0。
6.floatFH(){
floatx,y=0,n=0;
cin>
while(x!
=-1){n++;
y+=x;
if(n==0)returny;
elsereturny/n;
求出从键盘上输入的一批常数的平均值,以-1作为结束输入的标志。
7.floatFI(intn){//n为大于等于1的整数
floatx,y=0;
do{
y+=x*x;
}while(--n>
0);
returny;
}
求出从键盘上输入的n个常数的平方和并返回。
8.#include<
#include<
intx,y;
y=int(sqrt(x));
//sqrt(x)为求x的算术平方根
=y;
i++)
if(x%i==0)cout<
”x=”<
’*’<
x/i<
把从键盘上输入的一个整数x分解为所有可能的每两个因子之积。
二、第三章编写函数
1.编写一个主函数,利用while循环,求出并显示满足不等式1+1/2+1/3+...+1/n≥5的最小n值。
voidmain(){
inti=0;
doubles=0;
//或inti=1;
doubles=1;
while(s<
5)s+=double
(1)/++i;
n="
2.编写一个主函数,计算1+3+3^2+...+3^10的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
inti;
//用i作为循环变量
intp=1;
//用p作为累乘变量
ints=1;
//用s作为累加循环变量
for(i=1;
=10;
i++){p*=3;
s+=p;
s<
3.编写一个主函数,已知6≤a≤30,15≤b≤36,求出满足不定方程2a+5b=126的全部整数组解。
如(13,20)就是其中的一组解。
inta,b;
for(a=6;
a<
=30;
a++)
for(b=15;
b<
=36;
b++)
if(2*a+5*b==126)cout<
'
('
'
)'
三、第四章单选题
1.在下面的一维数组定义中,( )语句有语法错误。
A.inta[]={1,2,3};
B.inta[10]={0};
C.inta[];
D.inta[5];
2.在下面的二维数组定义中,( )语句是正确的。
A.inta[5][];
B.inta[][5];
C.inta[][3]={{1,3,5},{2}};
D.inta[](10);
3.在下面的字符数组定义中,( )语句有语法错误。
A.chara[20]=”abcdefg”;
B.chara[]=”x+y=55.”;
C.chara[15]={’1’,’2’};
D.chara[10]=’5’;
4.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};
”,则元素a[1][2]的值为( )。
A.2 B.4 C.6 D.8
5.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};
”,则元素a[2][1]的值为( )。
A.0 B.4 C.8 D.6
6.将两个字符串连接起来组成一个字符串时,选用( )函数。
A.strlen() B.strcpy() C.strcat() D.strcmp()
四、第四章填空题
1.假定一个一维数组的定义为“char*a[8];
”,该数组所含元素的个数为________,所占存储空间的字节数为________。
8、32
2.假定一个二维数组的定义为“inta[3][5];
”,则该数组所含元素的个数为________,所占存储空间的字节数为________。
15、60
3.执行“typedefintABC[10];
”语句把ABC定义为具有10个整型元素的________类型。
数组
4.使用“typedefcharBB[10][50];
”语句定义________为含有10行50列二维字符数组类型。
BB
5.存储字符’a’需要占用存储器的________个字节空间,存储字符串”a”需要占用存储器的________个字节空间。
1、2
6.字符串”a:
\\xxk\\数据”的长度为________,存储它的字符数组的长度至少为________。
11、12
7.若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式语句为__________,向屏幕输出a中所存字符串的表达式语句为__________。
cin>
a;
8.一个二维字符数组a[10][20]能够存储________个字符串,每个字符串的长度至多为________。
10、19
五、第四章程序运行结果
voidmain(){
inta[10]={12,39,26,41,55,63,72,40,83,95};
inti1=0,i2=0;
for(inti=0;
10;
i++)
if(a[i]%2==1)i1++;
elsei2++;
i1<
'
i2<
6 4
2.#include<
inta[9]={36,25,48,14,55,40,32,66,60};
intb1,b2;
b1=b2=a[0];
9;
if(a[i]>
b1){if(b1>
b2)b2=b1;
b1=a[i];
elseif(a[i]>
b2)b2=a[i];
b1<
b2<
66 60
3.#include<
chara[]="
abcdabcabfgacd"
inti1=0,i2=0,i=0;
while(a[i]){
if(a[i]=='
a'
)i1++;
b'
)i2++;
i++;
4 3 14
六、第四章编写程序
1.编写一个函数,函数头格式为“voidfun4(char*a,intb[])”,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中。
voidfun4(char*a,intb[])
for(i=0;
i++)b[i]=0;
//对b数组初始化
while(*a){
intj=*a-’0’;
if(j>
=9)b[j]++;
a++;
}}
一、第五章单选题
1.下面的( )函数头格式不正确。
A.AA(inta,intb) B.AA(inta,intb=0)
C.AA(inta=0,intb=0) D.AA(inta=0,intb)
2.下面的( )保留字不能作为函数的返回类型。
A.void B.int C.new D.long
3.下面的函数声明中,“voidBC(inta,intb);
”的重载函数是( )。
A.intBC(intx,inty);
B.voidBC(inta,charb);
C.floatBC(i