C语言数据类型和运算符及表达式复习题教学内容.docx
《C语言数据类型和运算符及表达式复习题教学内容.docx》由会员分享,可在线阅读,更多相关《C语言数据类型和运算符及表达式复习题教学内容.docx(15页珍藏版)》请在冰豆网上搜索。
C语言数据类型和运算符及表达式复习题教学内容
C语言数据类型和运算符及表达式复习题
数据类型、运算符和表达式复习题
一.选择题
1.以下不合法的用户标识符是:
()
a)f2_G3b)Ifc)4dd)_8
2.以下选项中合法的用户标识符是:
()
a)longb)_2Testc)3Dmaxd)A.dat
3.以下可用作用户标识符的是:
()
a)12_ab)signedc)t-od)_if
4.以下不是关键字的标识符是:
()
a)continueb)charc)Ifd)default
5.C语言提供的合法的关键字是:
()
a)swicthb)cherc)Cased)void
6.以下选项中不合法的int整型常数是()
a)32768b)-56c)03d)0xAF
7.以下合法的长整型常量是()
a)2Lb)49627c)34566666d)213&
8.以下正确的实型常量是()
a)1.2Eb).579899c)1.2e0.6d)8
9.以下选项中合法的实型常数是()
a)5E2.0b)E-3c).2E0d)1.3E
10.以下合法的八进制数是()
a)0135b)068c)013.54d)o7
11.以下合法的十六进制数是()
a)0xb)0x4dec)0x1hd)ox77
12.以下选项中非法的数值常量是()
a)019b)0Lc)0xffd)1e1
13.若变量已正确定义,以下合法的赋值表达式是()
a)a=1/b=2b)++(a+b)
c)a=a/(b=5)d)y=int(a)+b
14.若变量已正确定义,以下非法的表达式是()
a)a/=b+cb)a%(4.0)
c)a=1/2*(x=y=20,x*3)d)a=b=c
15.设x为int类型,其值为11,则表达式(x++*1/3)的值是:
a)3b)4c)11d)12
16.设a,b均为double型,且a=5.5;b=2.5;则表达式
(int)a+b/b的值是()
a)6.500000b)6c)5.500000d)6.000000
17.若a为int型,且其值为3,则执行完表达式:
a+=a-=a*a后,a的值是()
a)-3b)9c)-12d)6
18.设k和x均为int型变量,且k=7;x=12;则能使
值为3的表达式是()
a)x%=(k%=5)b)x%=(k-k%5)
c)x%=k-k%5d)(x%=k)-(k%=5)
19.若a,b,c均被定义成整型并已赋大于1的值,能正确表示代数式
的C语言表达式是()
a)1/(float)a*b*cb)1/(a*b*c)
c)1.0/a/b/cd)1/a/b/(float)c
20.以下变量x,y,z均为double型且已正确赋值,不能正确表示代数式
的C语言表达式是()
a)x/y*zb)x*(1/(y*z))
c)x/y*1/zd)x/y/z
21.不能正确表示代数式
的C语言表达式是()
a)a/(c*d)*bb)a*b/c/d
c)a*b/c*dd)a*b/(c*d)
22.若题中变量已正确定义并赋值,下面符合C语法的表达式是()
a)a%=7.6b)a++,a=7+b+c
c)int(12.3)%4d)a=c+d=a+7
23.若t已定义为double型,则表达式:
t=1,t++,t+5的值为()
a)7b)7.0c)2.0d)1.0
24.已有定义:
inta,b;floatx,y;,以下正确的赋值语句是:
()
a)a=1,b=2,b)y=(x%2)/10;c)x*=y+8;d)a+b=x;
25.有以下程序:
main()
{inty=1111;
printf(“y=%6d\n”,y);
printf(“y=%+06d\n”,y);
}
程序运行的结果是:
()
a)y=1111b)y=1111c)y=1111d)y=1111
y=001111y=+01111y=+01111y=1111
26.有以下程序:
main()
{inty=456;
printf(“*y=%7o*\n”,y);
printf(“*y=%-7o*\n”,y);
printf(“*y=%07o*\n”,y);
}
程序运行的结果是:
()
a)*y=710*b)*y=456*
*y=710**y=456*
*y=0000710**y=0000456*
c)*y=710*d)*y=456*
*y=-710**y=-456*
*y=0710**y=0456*
27.有以下程序:
main()
{floaty=3.667;
printf(“*%f*\n”,y);
printf(“*%7.2f*\n”,y);
printf(“*%8.0f*\n”,y);
}
程序运行的结果是:
()
a)*3.667000*b)*3.667000*
*3.67**3.667*
*4**4.000000*
c)*3.667*d)*3.667000*
*3.667000**3.67*
*3.667000**4.000000*
28.已有定义:
doublea,b;,若要求按输入方式(此处*代表一个空格)**1.0**2.0<回车>分别给a,b输入1,2,则能正确进行输入的语句是()
a)scanf(“%f%f”,&a,&b);
b)scanf(“%5.1lf%5.1lf”,&a,&b);
c)scanf(“%lf%lf”,&a,&b);
d)scanf(“%5e%5e”,&a,&b);
29.以下合法的定义语句是()
a)short_auto_=100-1;
b)doubleb=1+5e2.5;
c)longdo=1l;
d)float2_and=1e-3;
30.以下选项中不是C语句的是()
a)++tb);c)k=i=j;d){a/=b=1;b=a%2;}
31.有定义语句:
inta=5,b;,不能给b赋2的赋值语句是()
a)b=a/2;b)b=b+2;c)b=2%a;d)b=5;b=2;
32.设x和y均为int型变量,语句组x+=y;y=x-y;x-=y;的功能是()
a)把x和y从小到大排列b)把x和y从大到小排列
c)无确定结果d)交换x和y中的值
33.有定义语句:
longinta;intk;,能给a赋40000的正确语句是()
a)a=20000+20000;b)a=4000*10;
c)k=400;a=k*100;d)a=4000;a=a*10;
34.若有定义:
inta=8,b=5,c;,执行语句:
c=a/b+0.4;后,c的值是()
a)1.4b)1c)2.0d)2
35.有以下程序:
main()
{intk=2,i=2,m;
m=(k+=i*=k++);
printf(“y=%d,%d\n”,m,i);
}
程序运行的结果是:
()
a)8,6b)8,3c)6,4d)7,4
36.有以下程序:
main()
{inty=3,x=3,z=1;
printf(“%d%d\n”,(++x,y++),z+2);
}
程序运行的结果是:
()
a)34b)42
c)43d)33
37.有以下程序:
main()
{inti;longl ;floatf ;doubled ;
i=f=l=d=20/3;
printf(“%d%ld%3.1f%3.1f\n”,i,l,f,d);
}
程序运行的结果是:
()
a)666.06.0b)666.76.7
c)666.06.7d)666.76.0
38.有以下程序:
main()
{unsigneda=32768;intb ;
b=a ;
printf(“b=%d\n”,b);
}
程序运行的结果是:
()
a)b=32768b)b=32767c)b=-32768d)b=-1
39.有以下语句printf(“%d,%d,%u\n”,016,16,-16);其输出结果是()
a)16,16,65520b)14,16,65520
c)16,16,-16d)14,16,-16
40.若有定义语句:
intb=0x17;printf(“%d”,b++);,其正确的输出结果是()
a)23b)24c)25d)22
41.有以下程序:
main()
{intx=0xffff;
printf(“%d\n”,x--);
}
程序运行的结果是:
()
a)32767b)FFFE
c)-1d)-32768
二.填空题
1.已有定义:
floatf=13.8;,则表达式:
(int)f%3的值是___1___.
2.已有定义:
intx=3;,则表达式:
x=x+1.78的值是___4___.
3.已有定义:
doublex=3.5;则表达式:
x=(int)x+1的值是_4.000000__.
4.已有定义:
intx=10,y=3,z;,则表达式:
z=(x%y,x/y)的值是__3___.
5.设a,b,c为整型数,且a的值为2,b的值为3,c的值为4,表达式:
a*=16+(b++)-(++c)的值为__28____.
6.已有定义:
intx=0,y=0;,则计算表达式:
(x+=2,y=x+3/2,y+5)后,表达式的值是_8__,变量x的值是_2__,变量y的值是__3__.
7.已有定义:
intx=110,y=017;,则计算表达式:
(x++,++y)后,按十进制表示,变量x的值是__111___,变量y的值是__16___。
8.若已有定义语句:
intk=3,j=4;,运行表达式(k+=j,j/=4.0,++j,j+2)后,表达式的值是__4___,变量k的值是__7___,变量j的值是___2___.
9.已有定义:
intx,y;,执行以下语句后的输出结果是__%d,%3__.
x=11/3;y=5;printf(“%%d,%%%d\n”,x,y);
10.已有定义:
inty;,执行以下语句后的输出结果是_26,032,0x1a_____.
y=26;printf(“%d,%#o,%#x”,y,y,y);
11.执行以下语句后的输出结果是__7/8=0%1___.
printf(“7/8=%d”,7/8);printf(“%%%d”,7%2);
12.以下程序的运行结果是___4.900000,4____.
main()
{floata;intb;
b=a=24.5/5;
printf(“%f,%d”,a,b);
}
13.以下程序的运行结果是___4.000000,4____.
main()
{floata;intb;
a=b=24.5/5;
printf(“%f,%d”,a,b);
}
14.以下程序的运行结果是a=374ㄩㄩ**a=fc
a=0374**a=0xfc
#include
main()
{inta=252;
printf(“a=%-5o**a=%x\n”,a,a);
printf(“a=%#o**a=%#x\n”,a,a);
}
15.若有定义:
intt1;doublet2;,执行下列语句后,t1的值是__1__。
t1=(t2=1.9,t2+5,t2++);
16.若有下列定义和语句,输出结果是000034213.69。
floatx=34213.6894;printf(“%012.2f”,x);
17.int类型变量占两个字节,以下语句的输出结果是-1,177777,ffff,65535。
inta=-1;printf(“%d,%o,%x,%u”,a,a,a,a);
三.操作题
1.写出以下程序运行的结果:
main()
{charc1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c%c",c4,c5);
}
2.分析以下程序能否正常运行。
main()
{intc1,c2;c1=97;c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}
3.写出程序运行的结果。
main()
{inti,j,m,n;
i=8;j=10;m=++i;n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
4.求下面算术表达式的值
(1)设x=2.5,a=7,y=4.7
x+a%3*(int)(x+y)%2/4
(2)设a=2,b=3,x=3.5,y=2.5,
(float)(a+b)/2+(int)x%(int)y
5.要将“China”翻译成密码。
密码规律是:
用原来字母的后面第4个字母代替原来的字母。
请编写一程序实现。
并输出结果。
(Glmre)
6.写出以下四个程序运行的结果:
main()
{
inti=6;
printf("%d,%d,%d\n",i,(i++)+(i++)+(i++),i);
}
main()
{
inti=6;
printf("%d,%d,%d\n",i,(++i)+(++i)+(++i),i);
}
main()
{
inti=6,j;
j=(i++)+(i++)+(i++);
printf("%d,%d\n",i,j);
}
main()
{
inti=6,j;
j=(++i)+(++i)+(++i);
printf("%d,%d\n",i,j);
}
7.写出以下程序运行的结果:
main()
{
typedefintcounter;
counterx;
floaty;
x=sizeofy;
y=sizeof(counter);
printf("%d,%f\n",x,y);
}
8.写出以下程序运行的结果:
main()
{floatf;
inti=4;
f=10/i;
printf("%f\n",f);}
main()
{floatf;
inti=4;
f=10.0/i;
printf("%f\n",f);}
9.写出以下程序运行的结果:
main()
{
inta,b,c;
longintu,n;
floatx,y,z;
charc1,c2;
a=3;b=4;c=5;
x=1.2;y=2.4;z=-3.6;
u=51274;n=128765;
c1='a';c2='b';
printf("\n");
printf("a=%2db=%2dc=%2d\n",a,b,c);
printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);
printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ldn=%9ld\n",u,n);
printf("c1='%c'or%d(ASCII)\n",c1,c1);
printf("c2='%c'or%d(ASCII)\n",c2,c2);
}
10.写出以下程序运行的结果:
main()
{
inta=5,b=7;
floatx=67.8564,y=-789.124;
charc='A';
longn=1234567;
unsignedu=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%x\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%5.3s\n","COMPUTER","COMPUTER");
}
11.用下面的scanf函数输入数据,问在键盘上应如何输入才能使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’
main()
{
inta,b;
floatx,y;
charc1,c2;
scanf("a=%db=%d",&a,&b);
scanf("%f%e",&x,&y);
scanf("%c%c",&c1,&c2);
printf("a=%d,b=%d\n",a,b);
printf("x=%f,y=%f\n",x,y);
printf("c1=%c,c2=%c\n",c1,c2);
}
12.用下面的scanf函数输入数据,问在键盘上应如何输入才能使a=10,b=20,c1=’A’,c2=’a’,x=1.5,y=-3.75,z=67.8
main()
{
inta,b;
charc1,c2;
floatx,y,z;
scanf("%5d%5d%c%c%f%f%*f,%f",
&a,&b,&c1,&c2,&x,&y,&z);
printf("a=%d,b=%d\n",a,b);
printf("c1=%c,c2=%c\n",c1,c2);
printf("x=%6.2f,y=%6.2f,z=%6.2f\n",x,y,z);
}