C语言综合练习题.docx
《C语言综合练习题.docx》由会员分享,可在线阅读,更多相关《C语言综合练习题.docx(22页珍藏版)》请在冰豆网上搜索。
![C语言综合练习题.docx](https://file1.bdocx.com/fileroot1/2022-11/15/aac22b03-45a8-4cf7-b3d5-0fc5780761f1/aac22b03-45a8-4cf7-b3d5-0fc5780761f11.gif)
C语言综合练习题
综合练习题
一、从下列四个供选择的答案中选出正确的一个答案
1、语句printf(“%%d%d”,123);将输出:
A)%123%dB)%%d123C)%d123D)上述语句语法有错
“%%”格式表示输出一个“%”。
2、执行下列程序段后,a值为:
inta,b;
a=15;b=12;
a=(a--==b++)?
a%5:
a/5;
A)0B)2.8C)4D)2
先计算a--==b++的值:
a--的值为15,执行后a=14;b++的值为12,执行后b=13;15==12为假
执行a/5即14/5值为2
结果:
a=2
3、判断字符变量c的值为数字(’0’---’9’)则返回1,否则返回0,可用表达式:
A)‘0’<=c<=‘9’B)‘0’<=c&&c<=‘9’C)‘0’<=c||c<=‘9’D)以上均不是
4、对于intx,y;语句if(x<0)y=-1;elseif(!
x)y=0;elsey=1;等价于:
A)y=0;if(x>=0)if(x)y=1;elsey=-1;
B)if(x!
=0)if(x>0)y=1;elsey=-1;elsey=0;
C)if(x<0)y=-1;if(x!
=0)y=1;elsey=0;
D)y=-1;if(x!
=0)if(x>0)y=1;elsey=0;
即:
-1x<0
y=0x=0
1x>0
5、循环for(i=0,j=5;++i!
=--j;)printf(“%d%d”,i,j);将执行
A)6次B)3次C)0次D)无限次
i=0,j=5,(++i1)!
=(--j4)成立:
i=1,j=4
i=1,j=4,(++i2)!
=(--j3)成立:
i=2,j=3
i=2,j=3,(++i3)!
=(--j2)成立:
i=3,j=2
……
6、下列程序段执行后s值为:
inti=5,s=0;
doif(i%2)continue;elses+=i;while(--i);
A)15B)9C)6D)以上均不是
写成规范形式:
do
if(i%2)
continue;
else
s+=i;
while(--i);
i=5,s=0:
i%2=1:
i=4
i=4,s=0:
i%2=0:
s=0+4=4;i=3
i=3,s=4:
i%2=1:
i=2
i=2,s=4:
i%2=0:
s=4+2=6;i=1
i=1,s=6:
i%2=1:
i=0
7、对于以下宏定义:
#defineN3
#defineY(n)((N+1)*n)
执行语句“z=2*(N+Y(5+1))”后z的值为:
A)48B)42C)25D)以上均不是
宏定义的执行是先替换再参与运算
z=2*(N+(N+1)5+1)=2*(3+(3+1)*5+1)=48
8、以下宏替换的叙述不正确的是
A)宏替换时不占运行时间B)宏名无类型
C)宏替换只是字符替换D)宏名必须用大写字母表示
9、语句if(a>b)k=0;elsek=1;(inta,b,k)等价于:
A)k=(a>b)?
1:
0;B)k=a>b;C)k=a<=b;D)以上均不是
10、对于inti;charc,s[20];从输入序列123ab45efg中将123读入i;’b’读入c;“45efg”读入s,则scanf语句应写为:
A)scanf(“%da%c%s”,i,c,s)B)scanf(“%d%*c%c%s”,&i,&c,s);
C)scanf(“%da%c%s”,&i,&c,&s)D)scanf(“%d%c%c%s”,&i,&c,s);
11、对于以下程序段,运行后i值为:
enumWEEKS{1,2,3,4,5,6,7};
enumWEEKSa=1;
inti=0;
switch(a){
case1:
i=1;
case2:
i=2;
default:
i=3;
}
A)1B)0C)3D)上述程序有语法错误
12、某一程序TEST.C,编译后运行:
TEST123456ABC则相应的argc及argv[3]分别为:
A)3“456”B)3“ABC”C)4“456”D)4“ABC”
argv[0]“TEST”
argv[1]“123”
argv[2]“456”
argv[3]“ABC”
13、如下程序段:
intc[]={1,7,12};
int*k;
k=c;
printf("nextkis%d",*++k);
其输出应为:
A)2B)7C)1D)以上均不对
k1c[0]
7c[1]
12c[2]
14、如果变量xx有如下类型:
struct{
chara1;1
inta2;2
}xx;
如果sizeof(xx)的值为3,则:
union{
chara1;
inta2;
inta3;
}yy;
则sizeof(yy)函数的返回值应为:
A)2B)4C)5D)定义有错
15、执行下列程序:
#defineMA(x,y)((x)*(y))
i=5;
i=MA(i,i+1)-7;
后变量i的值应为:
A)30B)19C)23D)1
MA(i,i+1)-7
→((i)*(i+1))–7
→(5*6)–7
→23
16、执行下列程序:
inti,j;
i=3/2+7/2==5;
j=45%11+(((7>8)?
14:
21)==14);
后变量i,j的值应为:
A)i=0j=1B)i=1j=1
C)i=0j=2D)i=1j=2
i=((3/2+7/2)==5)=((1+3)==5)=(4==5)=0;
j=1+(21==14)=1+0=1
17、如果charcc[]="12345",做sizeof(cc)后的返回值应为
A)2B)5C)6D)1
sizeof()返回参数对象的字节数:
这里的参数是字符数组cc,有6个元素.
18、如果inti=16,j=23;执行printf("%x--%o",i,j)后输出为:
A)10--23B)10--27C)16--23D)16--27
19、执行下列程序:
#defineMA(x,y)(x)*(y)
inti=2;
i=3/MA(i,i+1)+5;
printf(“%d\n”,i);
其输出应为:
A)5B)8C)0D)以上都错
3/MA(i,i+1)+5
→3/(i)*(i+1)+5
→3/2*3+5
→8
20、有一函数:
intf(inta){
autointb=0;
staticintc=3;
b=b+1;
c=c+1;
return(a+b+c);
}
如果有inti,j;则执行两次调用:
i=f
(2);j=f
(2)后,i,j值为:
A)i=7,j=7B)i=7,j=8
C)i=8,j=7D)i=8,j=8
注意静态局部变量staticintc;的含义
第一次调用f
(2):
开始时:
b=0,c=3
执行:
b=0+1=1,c=3+1=4;
返回:
a+b+c=2+1+4=7;
调用结束后:
静态局部变量c=4保持不变;
第二次调用f
(2):
开始时:
b=0,c=4
执行:
b=0+1=1,c=4+1=5;
返回:
a+b+c=2+1+5=8;
调用结束后:
静态局部变量c=5保持不变;
21、有一函数:
intf(char*s){
intk=0;
while(*s)k=k*10+*s++-’0’;
return(k);
}
调用f(“1234”)的返回结果是:
A)“1234”B)1234C)“4321”D)4321
while循环等价于:
while(*s)k=k*10+(*s++)–‘0’;
该函数的作用:
将数字字符串转换成相应的整数.
22、以下正确的描述是C
A)C语言的预处理能力是指完成宏替换和包含文件的调用
B)预处理命令智能位于C源程序文件的首部
C)凡是C源程序中首行以#标识的控制行都是编译预处理命令
D)C语言的编译预处理就是对源程序进行初步的语法检查
23、使用fseek()函数可以实现的操作是
A)改变文件位置指针的当前位置B)文件的顺序读写
C)文件的随机读写D)以上都不是
24、inta[]={1,2,3,4,5,6,7,8,9,10},*p=a,i;
数组元素地址的正确表示:
A)&(a+1)B)a++C)&pD)&p[i]
二、填空题
1、用for循环打印147101316192225,其语句应为:
for(i=1;i<=9;i++)printf(“%3d”,_3*i-2__);
2、执行完下列语句段后,i,j值分别为:
___355,350__
inti,j;
j=10*(i=5);
i+=j*=i+2;
第一条语句执行后:
i=5,j=50
执行第二条语句:
i+=j*=i+2
→i+=(j*=(i+2))
→i+=(j*=7)
→i+=(j=50*7)
→i=5+350=355,j=350
3、执行完下列语句段后,i值为:
__5__
staticinta[3][4]={{1,2,3},{4,5,6}},i;
i=a[0][5];
a[0][0]1X
a[0][1]2X+2
a[0][2]3X+4
a[0][3]?
X+6
a[1][0]4X+8
a[1][1]5X+10
a[1][2]6X+12
a[1][3]?
X+14
a[2][0]?
X+16
a[2][1]?
X+18
a[2][2]?
X+20
a[2][3]?
X+22
a[0][5]的地址:
X+(0*4+5)*2=X+