一、单项选择题
c语言基础练习习题及答案
1.下列标识符中,合法的用户标识符是_(B)_。
A)B#123 B)_1234
C)void D) xy*
2.C语言中,要求参加运算的数必须是整数的运算符是_(C)__。
A)/ B)!
C)% D)==
3.下面运算符中,具有右结合性的是__(A)__。
A)= B) + C) / D) %
4.字符串“a\\x44\\\\abcd\\101b”的长度是__(A)______。
A) 9 B)10
C) 16 D)18 解释:(a \\x44 \\\\ a b c d \\101 b)
5.C语言允许一条语句写在两行上,下列语句不正确的是_(D)_____。
A) int a, B)int a
b; ,b;
C) int D)int a,b
a,b; ;
6.C语言一行写不下时,可以_(C)_。
A) 用逗号换行 B)用分号换行
C) 在任意一空格处换行 D)用回车符换行
7.下所列的C语言常量中,错误的是_(B)__。
A) 0Xff B) 1.2e0.5(E后面指数必须为整数) C) 2L D) '\\72'
8.下列选项中,合法的C语言关键字是_(D)_____。 A) VAR(far) B) cher(char) C) integer(interrupt) D) default
9.以下错误的转义符是__(D)__。
A) ‘\\\\’ B) ‘\\’’
C) ‘\\t’ D) ‘\\80’
10.设int类型的数据长度为2个字节 ,则unsigned int类型数据的取值范围是_(B)___。
A) 0至255 B) 0至65535
C) -256至255 D) -32768至32767
11.以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子的C语言表达式是_(A)___。
A) x/y*z B) x*(1/(y*z))
C) x/y*1/z D) x/y/z
12.已知w=1,x=2,y=3,z=4,a=5,b=6;则执行语句(a=w>x)&&(b=y>z);后,a,b的值为_____。
A) 1和1 B) 0和6
C) 5和0 D) 0和0
13.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为_(C)___。 A) 不定值 B) 4 C) 3 D) 1 【#include
printf(\ getch();
/*结果t=1 x=4 y=3*/ }】
14.设有语句int a=4;,则执行了语句a+=a-=a*a后,变量a的值是_(B)__。
A) 24 B) -24 C) 4 D) 16
【解释:a+=a-=a*a;/*a=a-a*a=-12 a=a+(-12)=-24*/】
15.设整型变量x,y,z均为3,表达式x+++y+++z++的值是_(A)_____。
A) 9 B) 12 C) 13 D) 15 【解释:x+++y+++z++=x++ +y++ +z++】
16.下面表达式中符合C语言语法的赋值表达式是_(C)_____。
A) a=5+c+d=a+5 B) a=c+d++=a+5
C) a=(5+b,d++,a+5) D) a=5+c,d=a+5
17.已知int i;float d; 正确的语句是_(D)______。
A) (int d) B) int(d)%i
C) int(d%i) D) (int)d%i
18.选出使变量i的运行结果为4的表达式__(D)____。
A) int i=0,j=0; B) int i=1,j=0;
(i=3,(j++)+i); j=i=((i=3)*2);
C) int i=0,j=1; D) int i=1,j=1;
(j==1)?(i=1): (i=3) i+=j+=2;
二、填空题
1. 在内存中存储“B”要占用___2____字节,存储‘B’要占用___1___个字节。
2. 逻辑非运算符,是___!____运算符,其结合性中_由右向左_______。
3. C语言中的逻辑值“真”是用__非零____表示的,逻辑值“假”是用__0___表示的。逻辑表达式值为“真”是用__1____表示的,逻辑表达式值为“假”是用__0____表示的。
4. 设x=2.5, a=7, y=4.7,表达式
x+a%3*(int)(x+y)%2/4;
的值是___2.5____。
【解释:a%3*(int)(x+y)%2/4=0 x+0=2.5+0=2.5】
5. 设a=2, b=3, x=3.5, y=2.5,表达式
(float)(a+b)/2+(int)x%(int)y;
的值是__3.5____。
【解释:5.0/2=2.5 3/2=1 2.5+1=3.5】
6.执行下列语句后,a、b、c的值是 。
int x=10,y=9;
int a,b,c;
a=(--x==y++)?—x:++y;b=x++;c=y;
7.设有定义语句
double t=3,t1;
t1=(t,t+5,++t);
printf(“%e,%f\\n”,t1,t);的输出是_4.00000e+00,4.000000__。
三、应用题
1.下面程序的运行结果为_aa bb cc abc
__________。
main()
{ char c1=′a′, c2=′b′, c3=′c′, c4=′\\101′, c5=′\\116′;
printf(\
printf(\ }
2.下面程序的运行结果为:(ab 9798) main()
{ int c1,c2;
c1=97;
c2=98;
printf(\
printf(\
}
3.下面程序的运行结果为9,11,9,10。 main()
{ int i,j,m,n; i=8; j=10; m=++i;
n=j++;
printf(\
}
4. 下面程序的运行结果为:(a=2,b=3,c=2)。
main() {
int a=1,b=2,c=3; a=b; b=c;
c=a;
printf(\
}