C语言复习题.docx
《C语言复习题.docx》由会员分享,可在线阅读,更多相关《C语言复习题.docx(19页珍藏版)》请在冰豆网上搜索。
C语言复习题
一、填空共16题(共计60分)
第1题(2.0分)题号:
24
以下程序运行后的输出结果是【1】
main()
{inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{case0:
m++;n++;break;
case10:
n++;break;
default:
k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
答案:
=======(答案1)=======
132
第2题(2.0分)题号:
25
以下程序段的输出结果是【1】
intk,n,m;
n=10;m=1;k=1;
while(k<=n){m*=2;k++;}
printf("%d\n",m);
答案:
=======(答案1)=======
1024
第3题(2.0分)题号:
26
下列程序的输出结果是【1】
#include
main()
{charb[30];
strcpy(&b[0],"CH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s\n",b);
}
答案:
=======(答案1)=======
CDABC
第4题(6.0分)题号:
27
以下程序运行后的输出结果第1行是【1】第2行是【2】第3行是【3】
main()
{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);
printf("\n");
}
}
答案:
=======(答案1)=======
123
=======(答案2)=======
056
=======(答案3)=======
009
第5题(4.0分)题号:
28
以下程序运行后的输出结果第1行是【1】第2行是【2】
inta=5;
voidfun(intb)
{staticinta=10;
a+=b++;
printf("%d\n",a);
}
main()
{intc=20;
fun(c);
a+=c++;
printf("%d\n",a);
}
答案:
=======(答案1)=======
30
=======(答案2)=======
25
第6题(2.0分)题号:
29
以下程序运行后的输出结果是【1】
main()
{inti=10,j=0;
do
{j=j+i;i--;
}while(i>2);
printf("%d\n",j);
}
答案:
=======(答案1)=======
52
第7题(2.0分)题号:
30
下面程序的运行结果是【1】
main()
{intk=0;
charc='A';
do
{switch(c++)
{case'A':
k++;break;
case'B':
k--;
case'C':
k+=2;break;
case'D':
k=k%2;continue;
case'E':
k=k*10;break;
default:
k=k/3;
}
k++;
}while(c<'G');
printf("k=%d",k);
}
答案:
=======(答案1)=======
k=4
第8题(2.0分)题号:
31
以下程序的输出结果是【1】
main()
{chars[]="abcdef";
s[3]='\0';
printf("%s\n",s);
}
答案:
=======(答案1)=======
abc
第9题(6.0分)题号:
32
设有以下程序
main()
{inta[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=a[(a[i][j]+1)%2+1][(a[j][i]+2)%2+1];
}
若输入的数据为:
135792468执行程序后,
a[0][0]=【1】,a[1][1]=【2】,a[2][2]=【3】.
答案:
=======(答案1)=======
2
=======(答案2)=======
2
=======(答案3)=======
6
第10题(2.0分)题号:
33
以下程序运行后的输出结果是【1】
#defineN2
#defineMN+1
#defineNUM2*M+1
intfib(intn)
{
return(n<3?
2:
fib(n-1)+fib(n-2));
}
main()
{
printf("%5d%5d\n",NUM,fib(5));
}
答案:
=======(答案1)=======
610
第11题(6.0分)题号:
42
下面程序的功能是:
输出100以内能被3整除且个位数为6的所有整数,请填空.
main()
{inti,j;
for(i=0;【1】;i++)
{j=i*10+6;
if(【2】)continue;
printf("%d",j);
}
}
答案:
=======(答案1)=======
i<10
=======(答案2)=======
j%3!
=0
第12题(6.0分)题号:
43
以下程序的功能是:
将无符号八进制数字构成的字符串转换为十进制整数.例如,输入的字
符串为:
556,则输出十进制整数366.请填空.
#include
main()
{chars[6];
intn,i=0;
gets(s);
n=【1】-'0';
while(【2】!
='\0')n=n*8+s[i]-'0';
printf("%d\n",n);
}
答案:
=======(答案1)=======
s[0]
=======(答案2)=======
s[++i]
第13题(3.0分)题号:
44
以下函数的功能是:
求x的y次方,请填空.
doublefun(doublex,inty)
{inti;
doublez;
for(i=1,z=x;ireturnz;
}
答案:
=======(答案1)=======
z*=x
第14题(6.0分)题号:
45
下面程序的功能是:
计算1到10之间奇数之和及偶数之和,请填空.
main()
{inta,b,c,i;
a=c=【1】;
for(i=0;i<10;i+=2)
{a+=i;
【2】;
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c);
}
答案:
=======(答案1)=======
0
=======(答案2)=======
b=i+1
第15题(6.0分)题号:
46
下面程序的功能是求1!
+2!
+3!
+4!
+5!
请填空.
main()
{inti,j,f,sum=0;
for(i=1;i<=5;i++)
{f=1;
for(j=1;【1】;j++)
【2】;
sum=sum+f;
}
printf("5!
=%d",sum);
}
答案:
=======(答案1)=======
j<=i
=======(答案2)=======
f=f*j
第16题(3.0分)题号:
47
以下函数的功能是删除字符串s中的所有数字字符.请填空.
voiddele(chars[])
{intn=0,i;
for(i=0;s[i];i++)
if(s[i]<'0'||s[i]>'9')
s[n++]=s[i];
s[n]=【1】;
}
答案:
=======(答案1)=======
'\0'
二、单项选择共20题(共计40分)
第1题(2.0分)题号:
41
以下常量中表示正确的是________.
A:
\xff
B:
5L
C:
aEb
D:
3.14U
答案:
B
第2题(2.0分)题号:
42
若有声明"floatf=123.45678;",则执行语句"printf("%.3f",f);"后,输出结果是________.
A:
1.23e+02
B:
123.457
C:
123.45678
D:
1.234e+02
答案:
B
第3题(2.0分)题号:
43
若有声明"intx=2,y=1,z=0;",则下列关系表达式中有语法错误的是________.
A:
x>y=2
B:
z>y>x
C:
x>y==1
D:
x==(x=0,y=1,z=2)
答案:
A
第4题(2.0分)题号:
44
若有声明"inti,k=1;unsignedj;",则下列语句执行时会出现无限循环的是_______.
A:
for(j=15;j>0;j-=2)k++;
B:
for(j=0;j<15;j+=2)k++;
C:
for(i=15;i>0;i-=2)k++;
D:
for(i=0;i<15;i+=2)k++;
答案:
A
第5题(2.0分)题号:
45
以下选项均以fun函数定义的头部,其中错误的是________.
A:
intfun(intx,inty[])
B:
intfun(intx,inty[x])
C:
intfun(intx,inty[3])
D:
intfun(intx,int*y)
答案:
B
第6题(2.0分)题号:
46
已知有预处理命令#include和声明chars[10]="Thankyou";inti;,要求输出
字符串"Thankyou",以下选项中不能达到要求的语句是________.
A:
puts(s);
B:
printf("%s",s[10]);
C:
for(i=0;s[i]!
='\0';i++)printf("%c",s[i]);
D:
for(i=0;s[i]!
='\0';i++)putchar(s[i]);
答案:
B
第7题(2.0分)题号:
47
以下关于函数定义的叙述中,正确的是________.
A:
构成C语言源程序的基本单位之一是函数定义
B:
所有被调用的函数必须在调用之前定义
C:
main函数定义必须放在其他函数定义之前
D:
main函数定义的函数体中必须至少有一条语句声明
答案:
A
第8题(2.0分)题号:
48
设有下列程序段:
staticcharb=2;
voidY()
{staticfloatd=4;……}
inta=1;
voidX()
{intc=3;……}
关于程序段中各变量的属性,以下叙述中错误的是________.
A:
a是全局变量,函数X可以访问,函数Y不能访问
B:
b是全局变量,函数X和函数Y都可以访问
C:
c是动态变量,函数X可以访问,函数Y不能访问
D:
d是静态变量,函数X和函数Y都可以访问
答案:
D
第9题(2.0分)题号:
49
设有声明floata=1.23456;inti;,欲将a中的数值保留小数点有两位,第三位进行四舍五入
运算,能实现该功能的表达式是________.
A:
i=a*100+0.5,a=i/100.0;
B:
a=(a*100+0.5)/100.0;
C:
a=((int)a*100+0.5)/100.0;
D:
a=(a/100+0.5)/100.0;
答案:
A
第10题(2.0分)题号:
50
程序段"intx=3;do{printf("%d",x--);}while(!
x);"执行结果是________.
A:
321
B:
2
C:
3
D:
死循环
答案:
C
第11题(2.0分)题号:
51
若程序中已有相应的声明,下列语句中错误的是________.
A:
printf(i==4?
"%6d\n":
"%6d",i);
B:
i==4?
printf("%6d\n",i):
printf("%6d",i);
C:
for(i=10;;i--)if(i==1)break;
D:
for(i=10;;i--)if(i--);break;
答案:
D
第12题(2.0分)题号:
52
以下声明中,错误的是________.
A:
inta=0xFF;
B:
doublea=1.2e0.5;
C:
longa=2L;
D:
chara='\72';
答案:
B
第13题(2.0分)题号:
53
有声明intx=2;,以下表达式中值不等于8的是________.
A:
x+=2,x*2
B:
x+=x*=x
C:
(x+7)/2*((x+1)%2+1)
D:
x*7.2/x+1
答案:
D
第14题(2.0分)题号:
54
下列程序段中,能将变量x、y中值比较大的数保存到变量a、值比较小的数保存到b的程序段
是________.
A:
if(x>y)a=x;b=y;elsea=y;b=x;
B:
if(x>y){a=x;b=y;}elsea=y;b=x;
C:
if(x>y){a=x;b=y;}else{a=y;b=x;}
D:
if(x>y){a=x;b=y;}else(x
答案:
C
第15题(2.0分)题号:
55
若已定义一个有返回值的函数,则以下关于调用该函数的叙述中错误的是_____.
A:
函数调用可以作为独立的语句存在
B:
函数调用可以出现在表达式中
C:
函数调用可以作为一个函数实参
D:
函数调用可以作为一个函数形参
答案:
D
第16题(2.0分)题号:
56
以下关于C语言源程序的叙述中,错误的是________.
A:
一个C源程序必须有且仅有一个名为main的函数定义
B:
函数定义由函数头部和函数体两部分组成
C:
在一个函数定义的函数体中允许定义另外一个函数
D:
在一个函数定义的函数体中允许调用另外一个函数或调用函数自身
答案:
C
第17题(2.0分)题号:
57
以下程序运行后的输出结果是________.
main()
{chara[7]="a0\0a0\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d",i,j);
}
A:
22
B:
72
C:
75
D:
62
答案:
B
第18题(2.0分)题号:
58
下面关于循环语句for、while、do_while的叙述中,正确的是________.
A:
三种循环语句的循环体都必须放入一对花括号中
B:
三种循环语句中都可以缺省循环终止条件表达式
C:
三种循环语句的循环体都至少被无条件地执行一次
D:
三种循环语句都可能出现无穷循环
答案:
D
第19题(2.0分)题号:
59
若有数组A和B的声明“staticcharA[]="ABCDEF",B[]={'A','B','C','D','E','F'};”
则数组A和数组B的长度分别是________.
A:
7,6
B:
6,7
C:
6,6
D:
7,7
答案:
A
第20题(2.0分)题号:
60
已知函数fun的定义如下:
voidfun(intx[],inty)
{intk;
for(k=0;kx[k]+=y;
}
若main函数中有声明inta[10]={10};及调用fun函数的语句,则正确的fun函数调用形式
是________.
A:
fun(a[],a[0]);
B:
fun(a[0],a[0]);
C:
fun(&a[0],a[0]);
D:
fun(a[0],&a[0]);
答案:
C