C语言练习题.docx
《C语言练习题.docx》由会员分享,可在线阅读,更多相关《C语言练习题.docx(59页珍藏版)》请在冰点文库上搜索。
C语言练习题
C语言单元练习题
第一单元数据类型、表达式及顺序结构练习题
一、选择题:
1.不合法的C语言整型常量是。
A.–012B.0x35C.123LD.8E2
2.不合法的C语言实型常量是。
A.E3B..123C.–6.2E4D.5.0
3.不合法的C字符常量是。
A.´2´B.´\101´C.´AB´D.´\n´
4.下列四组选项中,均是不合法的用户标识符的选项是。
A.WP_0do
B.b-agotoint
C.floatla0_A
D.-123abcTEMP
5.下列四组选项中,均是合法转义字符的选项是。
A.‘\”’‘\\’‘\n’
B.‘\’‘\017’‘\”’
C.‘\018’‘\f’‘xab’
D.‘\\0’‘\101’‘xlf’
6.定义三个变量a、b、c,并分别赋初值为5。
能实现该功能的语句是。
A.inta=b=c=5;B.inta,b,c=5;
C.inta=5,b=5,c=5;D.inta=5;b=5;c=5;
7.若x,y,t均为int类型,则执行语句x=y=3;t=++x||++y;后,y的值是。
A.不定值B.4C.1D.3
8.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为。
x=(i=4,j=16,k=32)
A.4B.16C.32D.52
9.设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为。
A.floatB.charC.intD.double
10.设以下变量均为int类型,则值不等于7的表达式是。
A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)
C.(x=6,x+1,y=6,x+y)D.(y=6,y+1,x=y,x+1)
11、以下选项中不能用作C程序合法常量的是()。
A.1.234B.'123'C.123D."\x7G"
12、以下选项中可用作C程序合法实数的是()
A..1e0B.3.0e0.2C.E9D.9.12E
13、阅读以下程序
#include
main()
{intcase;floatprintF;
printf(“请输入2个数:
”);
scanf(“%d%f”,&case,&pjrintF);
printf(“%d%f\n”,case,printF);
}
该程序编译时产生错误,其出错原因是()
A.定义语句出错,case是关键字,不能用作用户自定义标识符B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用D.定义语句无错,printf不能输出case的值
14、下列标识符中,不合法的用户标识符为()。
A.PadB.CHARC.a_10D.a≠b
15、以下选项中能表示合法常量的是()。
A.整数:
1,200B.实数:
1.5E2.0C.字符斜杠:
‘\’D.字符串:
"\007"
16、以下选项中,能用作数据常量的是()。
A.o115B.0118C.1.5e1.5D.115L
17、若a是数值类型,则逻辑表达式(a==1)||(a!
=1)的值是()。
A.1B.0C.2D.3
18、若有定义语句:
intx=10;,则表达式x-=x+x的值为()
A.-20B.-10C.0D.10
19、表达式:
(int)((double)9/2)-(9)%2的值是()。
A.0B.3C.4D.5
20、若有定义:
doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是()。
A.a=a++,i++;B.i=(a+k)<=(i+k);C.i=a;D.i=!
a;
21、表达式a+=a-=a=9的值是()。
A.9B._9C.18D.0
22.intx=5,y=14;则表达式x+7/y+0.6值为()。
A.7.1B.5.6C.6.6D.6.1
23、有以下程序执行后的输出结果是()。
main()
{inti,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf("%d\n",s);}
A.自然数1~9的累加和B.自然数1~10的累加和
C.自然数1~9中的奇数之和D.自然数1~10中的偶数之和
24、C语言中运算对象必需是整型的运算符是()。
A./B.%C.*D.+
25、若有表达式(w)?
(--x):
(++y),则其中与w等价的表达式是()。
A.w==lB.w==0C.w!
=lD.w!
=0
26、希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”,则以下不能满足的表达式是()。
A.num%2==1B.!
(num%2==0)C.!
(num%2)D.num%2
27、若有以下类型说明语句:
charw;intx;floaty;doublez;则表达式w*x+z-y的结果为()类型.
A.floatB.charC.intD.double
28、表达式3.6-5/2+1.2+5%2的值是()。
A.4.3B.4.8C.3.3D.3.8
29、若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?
(x++):
(y++)中的条件表达式(x-y)等价的是()。
A.(x-y)>0B(x-y<0)C.(x-y<0║x-y>0)D.(x-y)==0
30、能正确表示逻辑关系:
"a≥8或a≤5"的C语言表达式是()。
A.a>=8ora<=5B.a>=5|a<=8C.a>=8&&a<=5D.a>=8||a<=5
31、C语言中,数字029是一个()。
A.不合法数字B.十进制数C.八进制数D.十六进制数
32、已定义变量如下:
inta=5,b=7,c;则执行语句a>b?
(c=(a++)-(++b)):
(c=a+++8);后c的值为()
A.15B.14C.13D.12
33、设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A.k++B.k+=1C.++kD.k+1
34、以下选项中,合法的C语言数值常量是()。
A.028B.'\12A'C.'\177’D.N
35、C语言中运算符优先级最低的是()。
A.++B.,C.-D.!
=
36、以下程序运行后的输出结果是()。
voidfun(intp)
{intd=2;p=d++;printf(“%d”,p);}
37、有以下程序运行时,输入的值在哪个范围才会有输出结果()。
main(){
intx;scanf("%d",&x);
if(x<=3);
elseif(x!
=10)printf("%d\n",x);}
A.不等于10的整数B.大于3且不等于10的整数
C.大于3或等于10的整数D.小于3的整数
38.有以下程序
#include
main()
{intx=011;
printf("%d\n",++x);
}
程序运行后的输出结果是()
A.12B.11C.10D.9
39.以下选项中可用作C程序合法实数的是()
A.1e0B3.0e0.2C.E9D..12E
40.若有定义语句:
inta=3,b=2,c=1;,以下选项中错误的赋值表达式是()
A.a=(b=4)=3;B.a=b=c+1;
C.a=(b=4)+c;D.a=1+(b=c=4);
二、填空题:
1.若有定义intm=5,y=2;,则计算表达式y+=y-=m*=y后的y值是。
2.若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为。
3.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为。
4.若x和a均是int型变量,则计算表达式x=(a=4,6*2)后的x值为,
计算表达式x=a=4,6*2后的x值为。
5.若a是int型变量,则计算表达式a=25/3%3后a的值为。
6.若x和n均是int型变量,且x和n的初值均为5,
则计算表达式x+=n++后x的值为,n的值为。
7.若有定义:
charc=‘\010’;则变量c中包含的字符个数为。
8.若有定义:
intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为
(x+y)%2+(int)a/(int)b
9.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,
则表达式ch=‘a’+‘8’-‘3’的值为。
三、程序阅读题:
(写出程序运行结果)
1.以下程序的输出结果是。
#include
main()
{intx=97;chary=’b’;
printf(“%c,%d”,x,y);
}
2.以下程序的输出结果是。
#include
main()
{intx=6;
x+=x-=x*x;
printf(“x=%d\n”,x);
}
3.以下程序的输出结果是。
#include
main()
{intx;
(x=4*5,x*5),x+25;
printf(“x=%d\n”,x);
}
4.以下程序的输出结果是。
#include
main()
{inti=1,j;
j=-i++;
printf(“%d\n”,j) ;
}
5.有以下程序,运行后的输出结果是。
main()
{chara='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);}
6.以下程序的输出结果是。
main()
{inti=0,j=0,a=6;
if((++i>0)||(++j>0))
a++;
printf("%d,%d,%d",i,j,a);}
四、编程题:
(顺序结构编程)
1.输入华氏温度,输出摄氏温度。
C=5/9*(F-32)
/*由华氏温度转化为摄氏温度*/
2.输入底面半径r和高度h,计算并输出圆柱体的体积v。
v=πr2h(π取3.14,v计算结果保留到小数点后两位)
3.从键盘输入一扇形的半径和角度,求扇形的面积和周长。
4.从键盘输入学生的三门考试成绩,计算并输出平均成绩。
第二单元选择结构练习题
一、选择题:
1、若a是数值类型,则逻辑表达式(a==1)||(a!
=1)的值是()。
A.1B.0C.2D.3
2、if语句的基本形式是:
if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。
A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值
3、有以下程序运行时,输入的值在哪个范围才会有输出结果()。
main(){
intx;scanf("%d",&x);
if(x<=3);
elseif(x!
=10)printf("%d\n",x);}
A.不等于10的整数B.大于3且不等于10的整数
C.大于3或等于10的整数D.小于3的整数
4、在嵌套使用if语句时,C语言规定else总是()。
A.和之前与其具有相同缩进位置的if配对B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对D.和之前的第一个if配对
5、若有表达式(w)?
(--x):
(++y),则其中与w等价的表达式是()。
A.w==lB.w==0C.w!
=lD.w!
=0
6、希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”,则以下不能满足的表达式是()。
A.num%2==1B.!
(num%2==0)C.!
(num%2)D.num%2
7、设有定义:
inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是()。
A.if(a>B.c=a,a=b,b=c;B.if(a>B.{c=a,a=b,b=c;}
C.if(a>B.c=a;a=b;b=c;D.if(a>B.{c=a;a=b;b=c;}
8、若有表达式(w)?
(--x):
(++y),则其中与w等价的表达式是()。
A.w==lB.w==0C.w!
=lD.w!
=0
9、有以下程序运行时,输入的值在哪个范围才会有输出结果()。
main(){
intx;scanf("%d",&x);
if(x<=3);
elseif(x!
=10)printf("%d\n",x);}
A.不等于10的整数B.大于3且不等于10的整数
C.大于3或等于10的整数D.小于3的整数
10、若变量已正确定义,在if(W)printf(“%d\n,k”);中,以下不可替代W的是
A.a<>b+cB.ch=getchar()C.a==b+cD.a++
11.逻辑运算符两侧运算对象的数据类型。
A)只能是0或1B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
12.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”的要求。
A)x%2==0B)!
x%2!
=0C)(x/2*2-x)==0D)!
(x%2)
13.以下程序片段。
intx=2,y=3;
printf();
A)什么都不输出B)输出为:
***x=2
C)输出为:
###y=2D)输出为:
###y=3
14.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。
A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B)(x>=1)||(x<=10)||(x>=200)||(x<=210)
C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)
15.C语言对嵌套if语句的规定是:
else总是与。
A)其之前最近的if配对B)第一个if配对
C)缩进位置相同的if配对D)其之前最近的且尚未配对的if配对
16.设:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为。
A)1B)2C)3D)4
17.下面是错误的if语句(设intx,a,b;)
A)if(a=b)x++;B)if(a=
C)if(a-b)x++;D)if(x)x++;
18.以下程序片段。
main()
{intx=0,y=0,z=0;
if(x=y+z)printf(“***”);
elseprintf(“###”);}
A)有语法错误,不能通过编译B)输出:
***
C)可以编译,但不能通过连接,所以不能运行D)输出:
###
19.对下述程序,是正确的判断。
main()
{intx,y;
scanf(“%d,%d”,&x,&y);
if(x>y)x=y;y=x;
elsex++;y++;
printf(“%d,%d”,x,y);}
A)有语法错误,不能通过编译B)若输入3和4,则输出4和5
C)若输入4和3,则输出3和4D)若输入4和3,则输出4和5
20.若w=1,x=2,y=3,z=4,则条件表达式ww:
yy:
z的值是。
A)4B)3C)2D)1
21.下述表达式中,可以正确表示x≤0或x≥1的关系。
A)(x>=1)||(x<=0)B)x>=1|x<=0
C)x>=1&&x<=0D)(x>=1)&&(x<=0)
22.下述程序的输出结果是。
main()
{inta=0,b=0,c=0;
if(++a>0||++b>0)++c;
printf(“%d,%d,%d”,a,b,c);
}
A)0,0,0B)1,1,1C)1,0,1D)0,1,1
23.下述程序的输出结果是。
main()
{intx=-1,y=4,k;
k=x++<=0&&!
(y--<=0);
printf(“%d,%d,%d”,k,x,y);}
A)0,0,3B)0,1,2C)1,0,3D)1,1,2
24.以下程序输出结果是。
main()
{intx=1,y=0,a=0,b=0;
switch(x){
case1:
switch(y){
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf(“a=%d,b=%d”,a,b);
}
A)a=1,b=0B)a=2,b=1C)a=1,b=1D)a=2,b=2
25.下述程序的输出结果是。
main()
{inta,b,c;
intx=5,y=10;
a=(--y=x++)?
–y:
++x;
b=y++;c=x;
printf(“%d,%d,%d”,a,b,c);
}
A)6,9,7B)6,9,6C)7,9,6D)7,9,7
26.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是。
if(a
if(celse
if(a elsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)4
27.在下面的条件语句中(其中S1和S2表示C语言语句),只有一个在功能上与其他三个语句不等价。
A)if(a)S1;elseS2;B)if(a==0)S2;elseS1;
C)if(a!
=0)S1;elseS2;D)if(a==0)S1;elseS2;
28.若inti=0;执行下列程序后,变量i的正确结果是。
switch(i){
case9:
i+=1;
case10:
i+=1;
case11:
i+=1;
default:
i+=1;
}
A)10B)11C)12D)13
29.若有说明语句inti=5,j=4,k=6;floatf;则执行f=(ii:
(jj:
k;语句后,f的值为。
A)4.0B)5.0C)6.0D)7.0
30.若有定义:
inta=3,b=2,c=1;并有表达式:
①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是。
A)①和②B)②和③C)①和③D)③和④
填空题:
1.C语言提供6种关系运算符,按优先级高低它们分别是________,________,________,________,________,________等。
2.C语言提供三种逻辑运算符,按优先级高低它们分别是________,________,________。
3.将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式________ 。
4.设x,y,z均为int型变量;写出描述“x,y和z中有两个为负数”的C语言表达式:
________ 。
5.已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A
C>B的值是________。
6.有intx=3,y=-4,z=5;则表达式(x&&y)==(x||z)的值为________。
7.若有x=1,y=2,z=3,则表达式(xx:
y)==z++的值是________。
8.执行以下程序段后,a=________,b=________,c=________。
intx=10,y=9,a,b,c;
a=(x--=y++)?
x--:
y++;b=x++;c=y;
读程题:
1.以下程序的输出结果是。
main()
{inta=1,b=0;
if(!
a)b++;
elseif(a==0)if(a)b+=2;
elseb+=3;
printf(”%d\n”,b);
}
2.以下程序的输出结果是。
main()
{intx=1,y=0;
if(!
x)y++;
elseif(x==0)
if(x)y+=2;
elsey+=3;
printf("%d\n",y);
}
3.以下程序的输出结果是。
main()
{inta=100;
if(a>100)printf("%d\n",a<=100);
elseprintf("%d\n",a<=100);
}
4、以下程序的输出结果是。
main()
{inti;
for(i=0;i<3;i++)
{switch(i)
{case1:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);}}}
5、以下程序的输出结果是。
main()
{inti=0,j=0,a=6;
if((++i>0)||(++j>0))a++;
printf("%d,%d,%d",i,j,a);}
6.若运行时输入100↙,写出以下程序的运行结果。
main()
{inta;
scanf(“%d”,&a);
printf(“%s”,(a%2!
=0)?
”No”:
”Yes”);
}
7.写出以下程序的运行结果。
main()
{inta=2,b=7,c=5;
switch(a>0){
case1:
switch(b<0){