c语言基础练习习题及答案
一、单项选择题
1.下列标识符中,合法的用户标识符是_(B)_。
A)B#123B)_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)9B)10
C)16D)18
解释:(a\x44\\a b c d\101b)
5.C语言允许一条语句写在两行上,下列语句不正确的是_(D)_____。
A)int a,B)int a
printf输出格式两个逗号
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至255B)0至65535
C)-256至255D)-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和1B)0和6
C)5和0D)0和0
13.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为_(C)___。A)不定值B)4C)3D)1
【#include<stdio.h>
main()
{int x,y,t;
x=y=3;
t=++x||++y;
printf("t=%d x=%d y=%d",t,x,y);
getch();
/*结果t=1x=4y=3*/
}】
14.设有语句int a=4;,则执行了语句a+=a-=a*a后,变量a的值是_(B)__。
A)24B)-24C)4D)16
【解释:a+=a-=a*a;/*a=a-a*a=-12a=a+(-12)=-24*/】
15.设整型变量x,y,z均为3,表达式x+++y+++z++的值是_(A)_____。
A)9B)12C)13D)15
【解释:x+++y+++z++=x+++y+++z++】
16.下面表达式中符合C语言语法的赋值表达式是_(C)_____。
A)a=5+c+d=a+5B)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=0x+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.53/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("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c%c",c4,c5);
}
2.下面程序的运行结果为:(ab9798)
main()
{int c1,c2;
c1=97;
c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}
3.下面程序的运行结果为9,11,9,10。main()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
4.下面程序的运行结果为:(a=2,b=3,c=2)。main()
{
int a=1,b=2,c=3;
a=b;
b=c;
c=a;
printf("a=%d,b=%d,c=%d\n",a,b,c);