C上总练习题及参考答案Word格式.docx
《C上总练习题及参考答案Word格式.docx》由会员分享,可在线阅读,更多相关《C上总练习题及参考答案Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
a与表达式等价
A.a==0B.a==1C.a!
=1D.a!
=0
21.设有说明:
inta,b;
执行语句:
b=(a=3*5,a*4),a+15;
之后,b的值为。
A.15B.30C.60D.90
22.下列表达式中,错误的是。
A.4.0%2.0B.k+++jc.a+b>
c+d?
a:
bD.x*=y+25
25.如果整型量a,b,c的值分别为5、4、3,则语句if(a>
=b>
=c)c++;
执行后c的值是
A,语法错误B.4
C.2D.3有warnning,但if结果为假
26.设标识符ch,a都被定义为字符型变量,以下赋值语句不正确的是_B_
A.ch=a+’3’;
B.ch=’ch’+’a’;
C.ch=’c’+’h’;
D.ch+=ch-a
28.将变量a强制转换为具有b类型的数据,应表示为_AC_。
A.(b)aB.a(b)C.b(a)D.(a)b
29.有整型变量x,y,其中y!
=0,下列与x等价
30.已知整型变量a和b的当前值分别为13和16.a&
b的值是A
A.0(位运算)B.1C.29D.3
32.C++将数据分为若干类型,定义数据类型实际给出了两方面的信息:
定义该类型数据B。
A有效数字位数和数值表示范围
B占用多大存储空间和允许的运算
C数值和字符的不同表示以及适用范围
D适用范围和允许的运算
33.以下给出的标识符中C可用作合法的变量名。
AgotoB$priceCsumD9kilo
34.设inta=l,b=2;
那么执行表达式a++&
++b;
后a和b的值分别是D。
A1和2B2和2
C1和3D2和3
36.设整型变量X的值是5,则表达式2<
X<
5的值是B。
A不确定B1C0D表达式非法
37.a≠b且e≤d的c++表达式描述为D。
Aa◇b,c<
=dBa!
=b&
c=<
d
Ca=!
b&
c<
=dDa!
=d
38.如果定义了字符变量ch,以下B语句可以实现将键入的字符(包括空格、回车及间隔符)赋予ch。
Acin>
>
chBcin.get(ch)
Ccin>
get(ch)Dch=get()
39.设有变量定义imx=100,y=1,Z,若执行语句Z=y>
0?
++x:
--x,变量z的值为C。
A99B100C10lD102
41.用#include命令包含的文件是C
A目标文件B可执行文件C源程序文件D二进制文件
42.若有a=13,b=5,c=3则a%b*c的值为B
A6B9C7.8D8
44.若有宏定义和变量说明如下:
#defineX1
#defineYX+1
#defineZY*X/2
inta;
a=Y;
则执行以下语句后输出的结果是:
B
cout<
Z<
--a;
A75B11C125D76
45.设x=2;
y=3;
表达式x=y==3运算后。
x=A
A1B2C3D0
46.一个可执行C++程序的开始执行点是
A程序的第一条语句B包含文件的第一个函数
C名为voidmain的函数D程序中的第一个函数
49.若变量已正确定义并赋值,符合c++语言语法的表达式是A。
A.a=a+7;
B.a=7+b+c,a++C.int(12.3%4)D.a=a+7=c+b
50.在C++语言中,int、float和longint这3种类型数据所占用的内存是。
A.均为4个字节B.由用户自己定义
C.由所用机器的机器字长决定的D.任意的
51.若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是C。
A.a=b=c=d=100;
B.d++;
C.c+b;
D.d=(c=22)-(b++);
二、填空题
1.设a、b、c都是整型,则a=b=c=5时,下列表达式的结果是a=15、b=5、c=6。
a+=b+c++
2.数学表达式sin(30o)+x2cos(20o)的C++语言表达式是。
2题:
sin((30*3.14/180)+x*x*cos(20*3.14/180)
4.main()
{
inti=4,j=5,k=6;
5题注意:
1、使用a&
b时,无论b为何值,输出的结果都一样;
2、使用(a&
b)时,输出结果为1;
3、使用a&
b时编译出错;
4、使用(a&
b)时输出结果为0
i++&
++j||++k;
cout<
i<
j<
k;
}
程序的输出是566。
5.voidmain()
inta=13,b=16;
!
a<
’\t’<
a&
b;
程序输出为013。
6.#definePR(x,y,z)cout<
x<
y<
z<
’\n’
main()
inti=0,j=0,k=0;
i=(9+6)%5>
=9%5+6%5;
’\n’;
++i||++j&
++k;
PR(i,j,k);
i+=j++;
i;
程序的第一次输出是0。
程序的第二次输出是100。
程序的最后一次输出是1。
7.设整型变量x,y,z的值分别为10,3,7;
则表达式x>
10?
x+100:
x-10的值是0
8.若整型变量w=1,x=2,y=3,z=4,则条件表达式w>
x?
w:
z>
y?
z:
x的值为__4__
9.inta=5,b=6,c=1,x=2,y=3,z=4;
c=(a=c>
x)&
(b=y>
z);
问:
执行上述程序后,b的值是__6__,c的值是__0__。
10.程序
voidmain()
{intx,y,z;
x=y=z=0;
(x++&
++y||z++)<
'
\n'
;
\t'
z;
}
程序第一行输出为0
程序第二行输出为101
11.程序
#definePR1(num)cout<
num;
’\t’
#definePR2(a,b)PR1(a);
PR1(b)
#definePRINT(c,d)cout<
main()
{
intx=10,y=20,z=100;
PR1(x);
PR2(x,y);
PRINT(hex,z);
输出结果为10102064
第三章选择、循环结构
2.当前整型变量i的值是10,执行下列switch语句后i的值是13。
switch(i)
case9:
i+=1;
case10:
case11:
defaule:
i+=1
4.下列关于break和switch语句的叙述中,正确的是B。
A.break是switch语句的一个成分
B.在语句switch中可以根据需要使用或不使用break语句
C.在语句switch中必须使用break语句
D.上述结论中两个正确的
5.设有程序段intx=10;
while(x=0)x=x-1;
则下面描述中正确的是C
A.while循环执行10次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句只执行一次
6.退出一个循环语句(不终止函数的执行)的有效措施是:
A
A、breakB、continueC、returnD、exit
7.设整型变量x的当前值为3,执行以下循环语句后,输出的结果为:
7题输出是1-2
do
’\t’<
x-=2;
while(!
(--x));
A、0B、1-2C、30D、死循环,输出许多值
10.C++语言中D。
A.不能使用do-while语句构成的循环
B.do-whiIe语句构成的循环必须使用break语句才能退出
C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环
二填空题
1.有整型变量a、b,则下列for循环中的输入语句最少可执行1次,最多可执行3次
for(a=0,b=0;
b!
=30&
3;
a++)cin>
2.设整型变量I初值是1,则语句while(I++<
5);
执行后I的值是6。
3.下面程序的执行结果输出101020,
#definePR1(num)cou<
4.下面程序的执行中共输出3个数,最后一个输出的数是2
运行结果:
8,5,2
inty=9;
for(;
y>
0;
y--)
if(y%3==0)
--y<
’\t’;
5.下面程序的执行结果是死循环。
#include<
iostream.h>
intx=1,i=1;
for(;
50;
i++)
if(x>
10)break;
if(x%2)
x+=3;
continue;
x=1;
6.[程序]
#include<
6题
这里将~=0改为!
=0了。
不然会有语法错误
本题是通过右移算类型所占的位数
voidmain()
unsignedi;
intcount=1;
i=~0;
while((i>
=1)!
=0)
count++;
“count=”<
count<
在16位系统中程序的结果是count=32。
如果将(i>
=1)改为(i>
1)程序的结果是死循环。
不作上述修改,而将unsignedi;
改为unsignedchari;
;
程序的输出结果是count=8。
8.inta,b;
for(b=1,a=1;
b<
=50;
b++)
if(a>
=10)break;
if(a%2==1)
{a+=5;
continue;
}
a-=3;
问:
执行上述程序段后,a的值是10,b的值是6
9.voidmain()
{intm,n,x,y;
cin>
x>
y;
m=1;
n=1;
if(x>
0)m=m+1;
y)n=n+m;
elseif(x==y)n=5;
elsen=2*m;
m<
n;
为了使输出的结果是n=4,x的输入值应满足条件x>
0与x<
y
10.voidmain()
{inta,b,c;
a=2,b=3,c=1;
if(a>
b)
if(a>
c)cout<
a;
elsecout<
”end”<
endl;
执行上述程序后输出__3end__。
11.执行下列程序段后,变量n的值是:
12
intn=10;
switch(n)
{case9:
n-=1;
case10:
n+=1;
case11:
n--;
case12:
n++;
default:
++n;
三完善程序题
1.求f(X)=-x2/2!
+x4/4!
-x6/6+x8/8!
……
要求精度为十万分之一
math.h>
doublex,y,t;
intn=0;
“Inputx:
”
x
t=1;
y=0;
while(fabs(t)>
1e-6)
pow(-1,n)*x*x*fabs(t)/(2*n)/(2*n-1)
n++;
y+=(t=pow(-1,n)*pow(x,2*n)/(2*n));
“y(“<
”)=”<
2.程序功能:
在三个整数a,b和C中选出最大者,将该值输出。
voidmain(){
ima,b,c,max;
”请输入三个正数:
”;
a>
b>
c:
”a=:
”<
\t’<
"
b:
c="
endl:
if(a>
c)max=a;
elseif(b>
c)max=b;
elsemax=c;
”最大数为:
max=”<
max<
endi;
3.程序功能:
用数字0和9之间不同的数字构造所有可能的三位数(个位、十位和百位上的数字各不相同),并统计出共有多少种。
iostream.h>
inti,j,k,count=0;
for(i=1;
=9;
for(j=0;
j++)
if(j==i)continue;
elsefor(k=0;
k<
=9;
k++)
if(k!
=i&
k!
=j){
100*i+10*j+k<
’,’;
count++;
endl<
”Total=”<
endl;
第四章函数习题
一、选择题
5.在一个源文件中定义的全局变量的作用域为A
全局变量默认(缺省)的作用域是D,但是不加“缺省”时的答案是A
A、文件的全部范围
B、本程序的全部范围
C、本函数的全部范围
D、从定义该变量的位置开始至本文件的结束
6.设函数声明语句中的参数表为(int&
a,int&
b,intC),函数体中a,b,C三个变量的值都发生变化;
主函数中调用此函数的实参表为(x,y,z),调用函数语句执行后,以下叙述正确的是A。
A)变量x和y的值发生变化B)变量x和y的值不发生变化
C)变量x、y、z的值都发生变化D)只有变量z的值发生变化
7.变量的有效范围与其定义的位置有关,B,其作用域在整个源程序文件中都有效。
A、在第一个函数中定义的变量
B、在定义第一个函数之前所定义的变量
C、在主函数中定义的变量
D、在函数中定义的静态变量
9.判断两个字符串s1和s2是否相等,应当使用D
A、if(s1==s2)B、if(s1=s2)
C、if(strcmp(s1,s2))D、if(!
strcmp(s1,s2))(相等为0)
10.在程序执行过程中,该程序的某一个函数func()中说明的static型变量V有这样的特性:
A、V存在于func()被调用期间且仅能被func()所用
B、V存在于整个程序执行过程且仅能被func()所用
C、V存在于func()被调用期间且可被所有函数所用
D、V存在于整个程序执行过程且可被所有函数所用
1.执行下面程序共产生4行输出,第一行输出和最后一行输出分别是6及6。
voidf(int);
{f(3);
voidf(intn)
{staticints=5;
inta=5;
if(n!
{s++;
a++;
s<
f(n-1);
3.
3题
一、改正错误
1、A行处少一个分号“;
2、在main前加void
二、运行结果
3,1,5
voidf(intb,intt)
{intm;
if(b<
t)
{m=(b+t)/2;
f(b,m-1);
f(m+1,t)//A
{f(1,6);
4题
1、改main为voidmain
2、cout处多了一个(
二、运行结果:
程序正确,结果是
x=69
执行以上程序后,第一行的输出是,第二行的输出是,最后一行的输出是。
4.[程序](共2分)
#defineA3
main()
{
inta;
#defineB(a)((A+1)*a)
a=3*(A+B(5));
(“x=”<
”\n”;
程序是否正确(是或否);
若程序错,则原因是(或程序正确,则输出结果是):
。
一、改正错误:
改main为voidmain
6和10
intf(intx)
inty=1;
staticintz=1;
z+=z+y++;
return(z+x);
cout<
f(3)<
执行以上程序后,第一和第二行的输出分别是和。
7.[程序]
#include<
intm=10;
intf(intx,inty)
intm=5;
m+=x*y;
returnm;
voidmain()
inta=6,b=7;
f(a,b)/m<
执行以上程序后,输出结果4。
8.voidf(inta)
if(a<
0){
“-”;
a=-a;
char(a%10+’0’);
if((a=a/10)!
=0)f(a);
inta=-3567;
f(a);
a=3456;
“\n”;
执行以上程序后,输出结果的第一行是7654;
第二行是-6543。
9题
1、添加原型声明:
fun1(int,int);
8和17
9.#include<
intk=4,m=1,p;
p=fun1(k,m);
p;
p<
fun1(intx,inty)
staticintm=0,i=2;
i+=m+1;
m=i+x+y;
returnm;
程序执行后输出的结果为,
10.voidmain()
10题
1、原型声明f(int);
运行结果
1、7和17
2、7和20
{intw=2,k;
for(k=0;
{w=f(w);
w<
f(intx)
{inty=0;
/*static*/intz=3;
y++;
z++;
return(x+y+z);
问题1:
执行程序后,输出的第一个数是____,最后一个数是____。
问题2:
如果把对static的注解改为static