C语言程序设计习题集Word文档下载推荐.docx
《C语言程序设计习题集Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题集Word文档下载推荐.docx(46页珍藏版)》请在冰豆网上搜索。
5.下列关于C语言的叙述错误的是()
A.英文字母大小写不加以区分
B.不同类型的变量可以出现在同一个表达式中
C.在赋值表达式中赋值号两边的类型可以不同
D.某些运算符在不同的场合可以有不同的含义
6.下列转义字符中错误的是()
A.′\000′B.′\14′
C.′\x111′D.′\2′
7.下列标识符中,不是C语言保留字的是()
A.charB.while
C.minD.default
8.下列保留字中用于构成循环结构的是()
A.ifB.whileC.switchD.default
9.数据-324在二进制文件和文本文件中所占的字节数分别是()
A.2,2B.2,4
C.4,2D.4,4
10.请选出可以作为C语言用户标识符的一组标识符( )
A.void,define,WORDB.A3_B3,_123,abc
C.FOR,-abc,CaseD.2a,Do,Sizeof
11.下列运算符优先级最高的是( )
A.关系运算符B.赋值运算符
C.算术运算符D.逻辑运算符
12.sizeof(float)是( )
A.一种函数调用B.一个不合法的表示形式
C.一个整型表达式D.一个浮点表达式
13.下列叙述不正确的是( )
B.一个C语言程序必须包含一个main函数
14.编译C语言程序时,程序中的注释部分将( )
A.不参加编译,也不会出现在目标程序中
B.参加编译,但不会出现在目标程序中
C.不参加编译,但会出现在目标程序中
D.参加编译,并会出现在目标程序中
15.下列字符串常量不正确的是( )
A.'
abc'
B."
12'
12"
C."
0"
D."
"
16.下列4个选项中,均是合法整型常量的是( )
A.160-0xffff011
B.-0xcdf01ª
0xe
C.-01986,0120668
D.-0x48a2e50x
17.以下选项中不属于C语言类型的是( )
A.signedshortintB.unsignedlongint
C.unsignedintD.longshort
18.数值029是一个( )
A.八进制数B.十六进制数
C.十进制数D.非法数
19.在C语言中,要求运算数必须是整型的运算符是( )
A./B.++C.!
=D.%
20.当c的值不为0时,以下能将c的值赋给变量a,b的是( )
A.c=b=aB.(a=c)||(b=c)
C.(a=c)&
&
(b=c)D.a=c=b
1.表示空类型的保留字是_____________。
2.已知“intx=6;
”,则执行语句“x+=x-=x*x”后x的值是。
3.若“w=1,x=2,y=3,z=4”,则条件表达式“w>
x?
w:
y<
z?
y:
z”的结果是。
4.若“intm=5,y=2;
”,则计算表达式“y+=y-=m*=y”后y的值是。
5.在C语言中,一个int型数据在内存中如果占2个字节,则int型数据的取值范围为。
6.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式“ch='
a'
+'
8'
-'
3'
”的值为。
7.若有定义“inta=2,b=3;
floatx=3.5,y=2.5;
”,则表达式“(float)(a+b)/2+(int)x%(int)y”的值为。
三、程序分析
1.下列程序的输出结果是。
#include<
stdio.h>
intmain()
{
intk=2,i=2,m;
m=(k+=i*=k);
printf(“%d,%d\n”,m,i);
return0;
}
2.以下程序的执行结果是。
inta,b,c;
a=b=1;
c=a++-1;
printf(“%d,%d,”,a,c);
c+=-a+++(++b||++c);
printf(“%d,%d\n”,a,c);
3.以下程序的执行结果是。
voidmain()
inti=10;
printf(“%d,%d,%d”,i--,i--,i--);
4.以下程序的执行结果是。
intx=042,y=067,z;
z=(x>
>
2)&
(y<
<
3);
printf(“%d\n”,z);
5.以下程序的执行结果是。
intx=10,y=9;
a=(--x==y++)?
--x:
++y;
b=x++;
c=y;
printf(“%d,%d,%d\n”,a,b,c);
6.以下程序输入123456789,其输出结果是。
inta,b;
floatf;
scanf(“%2d%*2d%2d%f”,&
a,&
b,&
f);
printf(“%d,%d,%f\n”,a,b,f);
四、编程题
1.输入某学生的数学(math)、英语(english)和C语言(C)的成绩,输出该学生这三门课的成绩、总成绩(sum)和平均成绩(aver)。
1.执行语句“for(i=0;
i<
10;
++i,++a)scanf(″%d″,a);
”试图为int类型数组a[10]输入数据,是错误的。
错误的原因是()
A.指针变量不能做自增运算B.数组首地址不可改变
C.++i应写作i++D.++a应写作a++
2.对于while语句,错误的说法是()
A.用条件控制循环体的执行次数
B.循环体至少要执行一次
C.循环体有可能一次也不执行
D.循环体中可以包含若干条语句
3.执行下列语句
inta=8,b=7,c=6;
if(a<
b)if(b>
c){a=c;
c=b;
printf(″%d,%d,%d\n″,a,b,c);
后输出的结果是()
A.6,7,7B.6,7,8
C.8,7,6D.8,7,8
4.下列程序段运行后,x的值是()
a=1;
b=2;
x=0;
if(!
(--a))x--;
if(!
b)x=7;
else++x;
A.0B.3
C.6D.7
5.对do-whie语言错误的说法是()
A.可构成多重循环结构B.循环次数不可能为0
C.循环次数可能为0D.先执行后判断
6.设intx=1,a=9,b=6,c=7,d=8;
则执行语句:
if(a>
b)if(c>
d)x=2;
elsex=3;
后,x的值是()
A.1B.2
C.3D.不确定
7.与语句if(a>
b)if(c>
d)x=1;
elsex=2;
等价的是()
A.if(a>
b){if(c>
B.if(a>
}elsex=2;
C.if((a>
b)&
(c>
d))x=1;
D.if(a<
=b)x=2;
elseif(c>
d)x=1;
8.C语言的if语句中,用做判断的条件表达式为()
A.任意表达式B.逻辑表达式
C.关系表达式D.算术表达式
9.若希望当x的值为奇数时,表达式的值为真,x的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是( )
A.x%2==1B.x%2
C.!
(x%2)D.!
(x%2==0)
10.已知x=12,y=10,执行语句“y=x>
12?
x+1:
x-1”后y的值为( )
A.13B.11C.0D.10
11.已知a=1、b=2、c=3、d=4、m=2、n=2,执行语句“(m=a>
(n=c>
d);
”后n的值为( )
A.1B.2C.3D.4
12.下列程序运行后输出( )
intx=10,y=20,z=30;
if(x>
y)z=x;
x=y;
y=z;
printf(“%d,%d,%d”,x,y,z);
A.x=10,y=20,z=30B.x=20,y=30,z=30
C.x=20,y=30,z=10D.x=20,y=30,z=20
13.下列程序( )
inta=5,b=0,c=0;
if(a=b+c)
printf(“111\n”);
else
printf(“222\n”);
A.有语法错误B.输出111
C.不能输出D.输出222
14.若x=4、y=-2、z=5,则表达式“++x-y+z++”的值为( )
A.10B.11C.12D.13
15.C语言允许if…else语句嵌套使用,规定else总是和( )配对
A.之前最近的ifB.第1个if
C.缩进位置相同的ifD.之前最近的且尚未配对的if
二、填空题
1.在执行循环结构或switch结构时,能够立即退出该结构的语句是__________。
2.执行语句“s=0;
n=5;
while(--n)s+=n;
”后,变量s、n值依次为______________。
3.执行语句“for(s=0,i=1;
11;
i++){if(i==6)continue;
s+=i;
}"
后,s值为_____________________。
4.结构化程序设计的三种基本结构是:
选择结构、循环结构和__________________。
5.设for(k=0;
k<
0;
k++)++k;
则该循环共执行_______________次。
6.执行语句“n=1;
if(n=5)n++;
"
后,变量n值为_____________________________。
7.在C语言中,break语句只能用于语句和语句中。
8.当a=3,b=2,c=1时,表达式f=a>
b>
c的值是。
三、程序填充题
1.一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:
153=13+53+33),找出所有的这种数。
main()
{
intn,a,b,c;
/*n、a、b和c分别为三位数自身及其个位、十位和百位*/
for(c=________;
c<
=9;
c++)
for(b=________;
b<
b++)
for(______;
a++)
n=_________;
if(a*a*a+b*b*b+c*c*c==_________)
printf(″%d\n″,n);
}
2.将一个十进制整数n转变为二进制数。
main()
{inti=0,j,n,num[20];
scanf(″%d″,__________);
while(n!
=__________)
{num[i++]=_____________;
n=_______________;
for(j=i-1;
j>
=_________;
j--)printf(″%d″,num[j]);
3.下列函数sum的返回值为一个整数m的所有因子之和。
___________________/*第一空*/
{ints=1,i;
for(_______________;
=______________;
i++)/*第二空*//*第三空*/
if(_______________)s=s+i;
/*第四空*/
_________________________;
/*第五空*/
4.下列程序段的功能是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
intn=0,c;
c=getchar();
while()
if()n++;
5.下列程序的功能是计算2~100的偶数的累加和。
inti,sum=0;
for()
sum+=i;
printf(“sum=%d\n”,sum);
6.下列程序的功能是找出整数的所有因子。
intn,i;
scanf(“%d”,&
n);
for(i=1;
;
i++)
if()
printf(“%3d”,i);
printf(“\n”);
四、程序分析
1.main()
{inti;
for(i=0;
5;
i++)
switch(i%2)
{case0:
printf(″1″);
break;
case1:
printf(″0″);
}
2.#include"
stdio.h"
main()
{charc;
c=getchar();
if(c>
='
w'
||c>
A'
W'
)c=c+3;
elseif(c>
x'
z'
)||c>
X'
Z'
)c=c-23;
printf("
%\n"
c);
设从键盘上输入Next↙
3.main()
{
ints=0,i;
for(i=1;
;
if(s>
50)break;
if(i%2==0)s+=i;
printf(″i=%d,s=%d\n″,i,s);
}
4.
#include<
main()
{inti=0;
charc,s[]=″SABC″;
while(c=s[i])
switch(c)
case′A′:
i++;
break;
case′B′:
++i;
default:
putchar(c);
putchar(′*′);
5.下列程序的输出结果是。
inta=100,x=10,y=20,ok1=5,ok2=0;
if(x<
y)
if(y!
=10)
ok1)
if(ok2)
a=10;
a=-1;
printf(“%d\n”,a);
6.下列程序运行后输出。
intx=1,y=2;
switch(x)
case1:
switch(y)
printf(“%d”,x);
break;
case2:
printf(“%d”,y);
printf(“3”);
7.下列程序执行后的输出结果是。
inta=3;
do
printf(”*”);
a--;
}while(!
a==0);
8.下列程序的执行结果是。
inti=1,n=0,s=1;
n=n+s*i;
s=-s;
}while(i<
=9);
printf(”%d”,n);
9.下列程序运行后输出。
inta,b=19;
while(a=b-1)
b-=3;
if(b%5==0)
a++;
continue;
elseif(b<
5)
printf(“%d,%d\n”,a,b);
10.下列程序的运行结果是。
inti=1;
while(i<
=15)
if(++i%3!
=2)
printf(“%d\t”,i);
11.下列程序的运行结果是。
inti=5;
switch(i%2)
case4:
i--;
case6:
continue;
i--;
}while(i>
0);
五、编程题
1.输出100之内所有个位数字为6且能被3整除的自然数。
(如:
36,66,96……)
2.求出10至1000之内能同时被2、3、7整除的数,并输出。
1.下列运算符中,优先级最高的是()
A.[]B.++
C.%D.&
2.下列表达式的值为0的是()
A.3%5B.3/5.0C.3/5D.3<
5
3.设inta=3;
则表达式a<
1&
--a>
1的运算结果和a的值分别是()
A.0和2B.0和3C.1和2D.1和3
4.执行语句“k=5|3;
”后,变量k的当前值是()
A.1B.8
C.7D.2
5.执行语句“k=5∧3;
A.15B.125
C.8D.6
6.C语言中计算a3正确的表达是()
A.a^3B.pow(a,3)
C.a**3D.power(a,3)
7.设floata=2,b=4,c=3;
,以下C语言表达式与代数式(a+b)c计算结果不一致的是()
A.(a+b)*c/2B.(1/2)*(a+b)*c
C.(a+b)*c*1/2D.c/2*(a+b)
8.设inta=10,b=20,c=30;
条件表达式a<
b?
a=5:
c的值是()
A.5B.10
C.20D.30
9.设inta=9,b=6,c;
,执行语句c=a/b+0.8;
后c的值是()
A.1B.1.8
C.2D.2.3
10.设inta=1,b=2,c=4;
经过表达式(c=a!
=b)&
(a==b)&
(c=b)运算后,a、b和c的值分别是()
A.1,2,0B.1,2,1
C.1,2,2D.1,2,3
1.设intx=2,y=1;
则表达式x+++y的值是__________。
2.设inta=-3,b=7,c=-1;
则执行(a==0)&
(a=a%b<
b/c);
后变量a的值是__________。
3.设inta,b,c;
则执行a=(b=3,c=5,b=10);
4.设inta=1,b=2,m=2,n=2;
,执行表达式(m=a<
b)||++n后,n的值是_______。
5.执行语句“a=5+(c=6);
”后,变量a、c的值依次为_________________。
6.设inty;
执行表达式(y=4)||(y=5)||(y=6)后,y的值是___________________。
7.设chara,b;
则表达式a/b-′c′的值的类型为____________________。
8.设inta=1,b=2;
经表达式a=a∧b,b=a∧b,a=a∧b运算后a,b的值分别是__________。
9.位运算是对运算量的_____________位进行运算。
10.位运算符只对_______和___________数据类型有效。
11.设有一个整数a,若要