C语言习题集.docx
《C语言习题集.docx》由会员分享,可在线阅读,更多相关《C语言习题集.docx(71页珍藏版)》请在冰豆网上搜索。
C语言习题集
数据描述及基本操作练习题
一、填空题
1、在C语言中的实型变量分为两种类型,它们是float型和()型。
2、若有定义:
charc='\010';则变量c中包含的字符个数为()
3、已知字母a的ASCII码为十进制数97,且设ch为整型变量,则表达式ch='a'+'8'-'3'的值为()
4、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为()个;一个int型数据在内存中所占的字节数为()个。
5、在C语言中,表示逻辑“假”值用数字()表示。
6、C语言中的标识符只能由字母、数字和()三种字符组成。
7、表达式8/4*(int)(2.5)/(int)(1.25*(3.7+2.3))的值为()
8、整型常量即整常数。
可用三种形式表示:
十进制整数、八进制整数以()开头、十六进制整数以()开关(注:
请用小写字母)
9、请将75写成C语言八进制和十六进制表示(),()。
10、若有定义:
intm=5,y=2;则计算表达式y+=y-=m*=y后的y值是()
11、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为()。
12、若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为(),b值为(),c值为()。
13、若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为()
14、若a是int型变量,则计算表达式a=25/3%3后a的值为()
15、若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为(),n的值为()
16、若有定义:
intb=7;floata=2.5,c=4.7;则下面表达式的值为()
a+(int)(b/3*(int)(a+c)/2)%4
17、若有以下定义:
inta=2,b=3;floatx=3.5,y=2.5;则下面表达式的值为()(float)(a+b)/2+(int)x%(int)y
18、若有定义:
intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为()
(x+y)%2+(int)a/(int)b
19、所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()
20、若有定义:
inte=1,f=4,g=2;floatm=11.29,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt(n*1.2/g+m)后k的值是()
21、若x为int型变量,则执行以下语句后x的值是()
x=7;x+=x-=x+x;
22、当a=3,b=2,c=1时,表达式f=a>b>c的值是()
23、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A
C>B的值是()
24、若a=6,b=4,c=2,则表达式!
(a-b)+c-1&&b-c*2的值是()
25、若a=1,b=4,c=3,则表达式!
(a
c-3&&!
a+c-b的值是()
26、若a=6,b=4,c=3,则表达式a&&b-c-1||!
(c-3)的值是()
27、设a=3,b=4,c=5,则表达式a||b+c&&b==c的值是()
28、当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!
=b)&&(n=b>c)后,n的值为(),m的值为()
29、有intx,y,z;且x=3,y=-4,z=5,则表达式x-3&&y==(!
x-3||z-5)的值为()
30、以下程序的运行结果是()
main()
{
if(2*2==5<2*2==4)
printf("T");
else
prinft("F");
}
31、若a=1,b=2,c=3,d=4,则表达式a>b?
a:
c>d?
c:
d的值为()
32、以下程序的运行结果是()
#inclue
main()
{intx=1,y,z:
x*=3+2;printf("%d,",x);
x*=y=z=5;printf("%d,",x);
x=y==z;printf("%d\n",x);
}
33、若运行时输入:
100<回车>时,则以下程序的运行结果是()
main()
{inta;
scanf("%d",&a);
printf("%s",(a%2!
=0)?
"no":
"yes");
}
34、已有定义inti,j;floatx;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是()
scanf("%d,%d,%f",&i,&j,&x);
35、在printf函数中,以八进制形式输出整数用%()格式,以十六形式输出整数用%()格式。
(注:
请用小写字母)
36、在printf函数中,输出长整型数据用%()格式,输出字符串用%()格式。
(注:
请用小写字母)
37、在printf函数中,以小数形式输出实型数据用%()格式,以指数形式输出实型数据用%()格式。
(注:
请用小写字母)
38、有以下语句:
inti=79;printf("%o",i);
实际输出()。
floatx=333.1234567890;printf("%.2f",x);
实际输出()。
39、有以下语句:
inti=79;printf("%x",i);
实际输出()。
doubley=333.1234567890;printf("%2.5f",y);
实际输出()。
40、有以下语句:
inti=7900;printf("%2d",i);
实际输出域宽为()。
floatx=1.23456789;printf("%.5f",x);
实际输出为()。
二、选择题
1、下面正确的字符常量是()
A)“C”B)'12'C)'W'D)''
2、在C语言中,int、char、short三种类型数据在内存中所占用的字节数()
A)由用户自己定义B)均为2个字节
C)是任意的D)由所用机器的机器字长决定
3、下面四个选项中,均是合法整型常量的选项是()
A)160-0xffff011B)-0xcdf01a0xe
C)-01986,0120668D)-0x48a2e50x
4、下面四个选项中,均是不合法的整型常量的选项是()
A)--0f1-0xffff0011B)-0xcdf01712,456
C)-0189995e2D)-0x48eg-0681a
5、下面四个选项中,均不是合法的浮点数的选项是()
A)160.0.12e3B)1232e4.2e5
C)-.18123e40.0D)-e3.2341e3
6、下面四个选项中,均是合法的浮点数的选项是()
A)+1e+15e-9.403e2B)-.6012e-4-8e5
C)123e1.2e-.4+2e-1D)-e3.8e-45.e-0
7、下面四个选项中,均是正确的八进制或十六进制数的选项是()
A)-100x8f-011B)0abc-0170xc
C)0010-0x110xf1D)0a12-0x123-0xa
8、下面四个选项中,均是正确的数值常量或字符常量的选项是()
A)0.00f8.9e'&'B)"a"3.9e-2.51e1"\'"
C)'3'0110xff000aD)+0010xabcd2e250.
9、已知字母'A'的ASCII码为十进制65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,在内存中c2中的值为()
A)DB)68C)不确定D)C
10、sizeof(float)是()
A)一个双精度型表达式B)一个整型表达式
C)一种函数调用D)一个不合法的表达式
11、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()
A)intB)floatC)doubleD)不确定
12、下面四个选项中,均是非法常量的选项是()
A)‘as’-0fff'\0xa'B)'\\''\01'12,456
C)-0x18011770xfD)0xabc'\0''ab'
13、以下正确地定义整型变量a,b和c并为它们赋初值5的语句是()
A)inta=b=c=5;B)inta,b,c=5;
C)inta=5,b=5,c=5;D)a=b=c=5;
14、若x,i,j和k都是int型变量,则计算下面表达式后,x的值为()
x=(i=4,j=16,k=32)
A)4B)16C)32D)52
15、假设所有变量均为整型变量,则表达式(a=2,b=5,b++,a+b)的值是()
A)7B)8C)6D)2
16、若有代数式(3ae)/(bc),则不正确的C语言表达式是()
A)a/b/c*e*3B)3*a*e/b/c
C)3*a*e/b*cD)a*e/c/b*3
17、已知各变量的类型说明如下:
intk,a,b;
unsignedlongw=5;
doublex=1.42;
则以下不符合C语言语法表达式是()
A)x%(-3)B)w+=-2
C)k=(a=2,b=3,a+b)D)a==a-=(b=4)*(a=3)
18、已知各变量的类型说明如下:
inti=8,k,a,b;unsignedlongw=5;doublex=1.42,y=5.2;
则以下符合C语言语法的表达式是()
A)a+=a-=(b=4)*(a=3)B)a=a*3=2
C)x%(-3)D)y=float(i)
19、若有定义:
inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()
A)2.500000B)2.750000
C)3.500000D)0.000000
20、设以下就是均为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)
21、已知ch是字符型变量,下面不正确的赋值语句是()
A)ch='a+b'B)ch='\0'
C)ch='7'+'9'D)ch=5+9
22、若有以下定义,则正确的语句是()
inta,b;floatx;
A)a=1,b=2,B)b++;
C)a=b=5D)b=int(x);
23、设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x,y和z的值是()
A)x=10y=15z=10B)x=10y=10z=10
C)x=10y=10z=15D)x=10y=5z=10
24、逻辑运算符两侧运算对象的数据类型()
A)只能是0或1B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
25、以下关于运算符优先顺序的描述中正确的是()
A)关系运算符<算术运算符<赋值运算符<逻辑运算符
B)逻辑运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑运算符
26、已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!
y)的值是()
A)0B)语法错误C)1 D)“假”
27、设有:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=d>c)后n的值为()
A)1B)2C)3D)0
28、判断char型变量c1是否为小写字母的正确表达式为()
A)'a'<=c1<='z'B)(c1>=a)&&(c1<=z)
C)('a'>=c1)||('z'<=c1)D)(c1>='a')&&(c1<='z')
29、执行以下语句后b的值为()
inta,b,c;
a=b=c=0;
++a||++b&&++c;
A)1 B)2 C)错误 D)0
30、执行以下语句后b的值为()
inta=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z)
A) 6 B)0C)1D) 4
31、若w、x、y、z、m均为int型变量,则执行下面语句后的m值是()
w=1;x=2;y=3;z=4;
m=(ww:
x;
m=(mm:
y;
m=(mm:
z;
A)1B)2C)3D)4
32、以下不正确的叙述是()
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
33、以下符合C语言语法的表达式是()
A)d=9=e+f=d+9B)d=(9+e,f)=d+9
C)d=9+e,e++,d+9D)d=9+e++=d+7
34、执行以下程序段后的输出结果是()
intw=3,z=7,x=10;
printf("%d,",x>10?
x+100:
x-10);
printf("%d,",w++||z++);
printf("%d,",!
w>z);
printf("%d\n",w&&z);
}
A)0,1,1,1B)1,1,1,1C)0,1,0,1D)0,1,0,0
35、若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是()
A)scanf("%d%lx,%le",&x,&y,&z);
B)scanf("%2d*%d%lf",&x,&y,&z);
C)scanf("%x%*d%o",&x,&y);
D)scanf("%x%o%6.2f",&x,&y,&z);
36、已有程序段和输出数据的形式,f为4.5,a为2。
程序中输入语句的正确形式应当为()(注:
表示回车)
main()
{inta;floatf;
printf("\ninputnumber:
");
输入语句
printf("\nf=%f,a=%d\n",f,a);
}
inputnumber:
4.5,2
A)scanf("%d,%f",&a,&f);B)scanf("%f,%d",&f,&a);
C)scanf("%d%f",&a,&f);D)scanf("%f%d",&f,&a);
37、以下说法正确的是()
A)输入项可以为一个实型常量,如scanf("%f",3.5);
B)只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");
C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);
D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);
38、有输入语句:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
为使变量a的值为1,b为3,c为2,从键盘输入数据正确形式应当是()
A)132<回车>B)1,3,2<回车>
C)a=1b=3c=2<回车>D)a=1,b=3,c=2<回车>
39、阅读以下程序,当输入数据的形式为:
25,13,10,正确的输出结果为()
main()
{
intx,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);
}
A)x+y+z=48
B)x+y+z=35
C)x+z=35
D)其它情况
40、根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是()
main()
{
intx;floaty;
printf("enterx,y:
");
输入语句
输出语句
}
输入形式enterx,y:
23.4
输出形式x+y=5.40
A)scanf("%d,%f",&x,&y);
printf("\nx+y=%4.2f",x+y)
B)scanf("%d%f",&x,&y);
printf("\nx+y=%4.2f",x+y)
C)scanf("%d%f",&x,&y);
printf("\nx+y=%6.1f",x+y);
D)scanf("%d%3.1f",&x,&y);
printf("\nx+y=%4.2f",x+y);
41、下面四个选项中,均是不合法的用户标识符的选项是____。
(A)AP_0do(B)floatla0_a
(C)b-agotoint(D)_123tempINT
42、下列四个选项中,均是不合法的整型常量的选项是______。
(A)--0f1-0xffff0011(B)-0xcdf01712,3456
(C)-0189995e2(D)-0x48eg-06803f
43、下面四个选项中,均是合法浮点数的选项是______。
(A)1e15e-9.403e2(B)-.6012e-4-8e5
(C)123e1.2e-.42e-1(D)-e3.8e-45.e-0
44、下面四个选项中,均是合法字符的选项是______。
(A)’\’’‘\\’‘\xf’(B)’\’‘\017’‘\n’
(C)’\018’‘\f’‘xab’(D)’\0’‘\101’‘xlf’
45、以下不正确的叙述是______。
(A)在C程序中,逗号运算符的优先级最低。
(B)在C程序中,APH和aph是两个不同的变量
(C)若a和b类型相同,在计算机了赋值表达式a=b后,b的值不变。
(D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数据。
三、判断对错
1、在C语言中,e_2和MAXNUMBER可以作变量名。
()
2、2e-310和3e+2.3都是非法的C常量。
()
3、在C语言程序设计中,Total与total是同一个变量。
()
4、以下语句是正确的:
()
charx='a';
printf("%5o",x);
5、设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为float型。
()
6、下列是正确的语句:
()
inti=2;
i+=3+i*=2;
7、逻辑运算符两侧运算对象的数据类型只能是0或1。
()
8、有以下语句,输出结果是:
0()
intx=40,y=4,z=4;
x=x==(y=z);printf("%d\n",x);
9、执行以下语句输出结果为:
3,2()
intx,y;x=y=2;y=x++-1;printf("%d,%d",x,y);
10、下列是正确的语句:
()
inti;(i+3)++;
11、执行以下语句后,输出结果是:
1()
intx=3;inty=z=4;
printf("%d\n",(x>=y>=x)?
1:
0);
12、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出错误信息。
()
13、下列是正确的语句:
()
inti;scanf("%d",i);
14、printf函数中用到格式符%5s,其中数字5表示输出的字符串占5列,如果字符串长度小于5,则输出按右对齐输出该字串,左补空格。
()
15、有以下语句:
()
inta,b,c;
scanf("%d,%d,%d",&a,&b,&c);为使a=3,b=4,c=5
正确的输入形式是:
345<回车>
C程序的流程设计练习题
一、选择题(每个小题1分,共35分)
1、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()
A、a<>0B、!
aC、a=0D、a
2、若k是int型变量,且有下面的程序片段:
k=-3;if(k<=0)
printf(“####”)
elseprintf(“&&&&”);上面程序的输出结果是()
A、####B、&&&&C、####&&&&D、有语法错误
3、以下不正确的语句为()
A、if(x>y);B、if(x=y)&&(x!
=0)x+=y;
C、if(x!
=y)scanf("%d",&x);elsescanf("%d",&y);
D、if(x4、以下if语句语法正确的是()
A、if(x>0)printf("%f",x);elseprintf("%f",-x);
B、if(x>0){x=x+y;printf("%f",x);elseprintf("%f",-x);}
C、if(x>0){x=x+y;printf("%f",x);};elseprintf("%f",-x);
D、if(x>0){x=x+y;printf("%f",x)}elseprintf("%f",-x);}
5、程序的运行结果是()
main()
{inta=5;
if(a++>5)
printf(“%d\n”,a);
else
printf(“%d\n”,a--);
}
A、4B、5C、6D、7
6、下列程序的输出结果是()
main()
{inta=-1,b=1,k;
if((++a<0)&&!
(b--<=0))
printf("%d%d\n",a,b);
else
printf("%d%d\n",b,a);}
A、-11B、01C、10D、00
7、试读程序:
#include
main()
{floatx,y;scanf(“%f”,&x);
if(x<0.0)
y=0.0;
elseif((x<5.0)&&(x!
=2.0))
y=1.0/(x+2.0);
elseif(x<10.0)
y=1.0/x;
else
y=10.0;
printf(“%f\n”,y);
}
若运行时从键盘输入2.0后回车,则上面程序输出结果是()
A、0.000000B、0.250000C、0.500000D、1.000000
8、程序的输出结果是()
#include
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;
b++;
break;
}
printf(“a=%d,b=%d\n”,a,b);
}
A、a=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=2