题目 1/36
1. C语言源程序中主函数名是( )
A. master
B. leading
C. main
D. major
答案:C. main
2. 若有 int a=2,则执行表达式 a=a+a=a*a 后,a的值是( )
答案:C. 8
解析:表达式从右向左计算,a*a=4,然后a=4,最后a=4+4=8
3. 已知定义了 a,b,c 三个整型变量,且 a=12,b=13 执行"c=a%b;",则 c 的值为( )
答案:C. 12
解析:%是取余运算符,12%13=12
4. 下列不能定义为用户标识符的是( )
A. bb31
B. Aa
C. W12
D. int+float
答案:D. int+float
解析:标识符不能包含+等特殊字符
5. 若"float a=5, b=a+5/2;",则执行语句"printf("%f",b)"后的输出结果为( )
A. 7.500 000
B. 7
C. 5.000 000
D. 7.000 000
答案:D. 7.000 000
解析:5/2是整数除法结果为2,5+2=7,转换为浮点数7.000000
6. 有输入语句:scanf("a=%d,b=%d",&a,&b); 为使变量 a 的值为 1,b 的值为 2,正确的数据输入方式是( )
A. 12✓
B. 1,2✓
C. a=1,b=2✓
D. a=1 b=2✓
答案:C. a=1,b=2✓
解析:scanf格式字符串中包含"a=%d,b=%d",需要按照此格式输入
7. 赋值运算符的结合性是( )
A. 从左向右
B. 从两边向中间
C. 从中间向两边
D. 从右向左
答案:D. 从右向左
8. 若有语句:char a = 97;int b = 12;执行 printf("%d",a%12-a);的结果:( )
A. -96
B. 96
C. -97
D. 97
答案:A. -96
解析:a=97,a%12=1,1-97=-96
9. 下列不是浮点数的是( )
A. 100
B. -0.231
C. 423.241
D. 3e-02
答案:A. 100
解析:100是整数,不是浮点数
10. 下列字符序列中,不可用作 C 语言标识符的是( )
A. abc1223
B. no.21
C. _1223
D. uu22
答案:B. no.21
解析:标识符不能包含点号(.)
11. 下列程序的运行结果是( )
main()
{
int k = 11;
printf("k=%d,k=%o,k=%x\n",k,k,k);
}
A. k = 11, k = 12, k = 11
B. 11 13 b
C. k = 11, k = 013, k = 0cb
D. k = 11, k = 13, k = b
答案:D. k = 11, k = 13, k = b
解析:%d十进制输出11,%o八进制输出13,%x十六进制输出b
12. 一个 C 语言程序是由( )
A. 一个主程序和若干子程序组成
B. 一个或多个函数组成
C. 若干过程组成
D. 若干子程序组成
答案:B. 一个或多个函数组成
13. 有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c); 为使变量 a 的值为 1, b 的值为 3, c 的值为 2, 从键盘输入数据的正确形式应当是( )
A. 132<回车>
B. 1, 3, 2<回车>
C. a = 1□b = 3□c = 2<回车>
D. a = 1, b = 3, c = 2<回车>
答案:D. a = 1, b = 3, c = 2<回车>
解析:需要严格按照scanf中的格式字符串输入
14. C 语言程序的基本单位是( )
答案:C. 函数
15. 下列不是 C 语言的特点的是( )
A. 语言简洁紧凑
B. 能够编制出功能复杂的程序
C. C 语言可以直接对硬件操作
D. C 语言移植性好
答案:D. C 语言移植性好
解析:C语言的移植性相对较差,高度依赖硬件
16. 下列符号中,不属于转义字符的是( )
A. 11
B. 0XABC
C. 1t
D. 10
答案:B. 0XABC
解析:0XABC是十六进制数,不是转义字符
17. 下列是 C 语言提供的合法关键字的是( )
A. Float
B. signed
C. Integer
D. Char
答案:B. signed
18. 下列是合法的实型常数的是( )
A. 5E2.0
B. E-3
C. 2E0
D. 1.3E
答案:C. 2E0
解析:科学计数法要求E前必须有数字,E后必须是整数
19. 已知字母 A 的 ASCII 码为十进制数 65,且 S 为字符型,则执行语句 "S='A'+'G'-'3';" 后,S 中的值为( )
A. 'D'
B. 68
C. 不确定的值
D. 'C'
答案:A. 'D'
解析:'A'=65, 'G'=71, '3'=51, 65+71-51=85, 对应字符'D'
20. 若有定义"int m=7; float x=2.5, y=4.7;",则表达式"x+m%3*(int)(x+y)%2/4"的值是( )
A. 2.500 000
B. 2.750 000
C. 3.500 000
D. 0.000 000
答案:A. 2.500 000
解析:计算步骤:x+y=7.2→(int)7.2=7→m%3=1→1*7=7→7%2=1→1/4=0→x+0=2.5
21. 字符型常量在内存中存放的是( )
A. ASCII 码
B. BCD 码
C. 内部码
D. 十进制码
答案:A. ASCII 码
22. 下列符合 C 语言语法的赋值表达式的是( )
A. a=9+b+c=d+9
B. a=(9+b,c=d+9)
C. a=9+b,b++,c+9
D. a=9+b++=c+9
答案:B. a=(9+b,c=d+9)
解析:逗号表达式,值为最后一个表达式的值
23. 在 C 语言中,char 型数据在内存中的存储形式是( )
A. 补码
B. 反码
C. 原码
D. ASCII 码
答案:D. ASCII 码
24. 下列说法正确的是( )
A. 输入项可以为一个实型常量,如 scanf("%f",3,5);
B. 只有格式控制,没有输入项,也能进行正确输入,如 scanf("a=%d,b=5d");
C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如 scanf("%4.2f",&f);
D. 当输入数据时,必须指明变量的地址,如 scanf("%f",&f);
答案:D. 当输入数据时,必须指明变量的地址,如 scanf("%f",&f);
25. 若有语句 int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行语句后,c3 中的值是( )
答案:A. 0
解析:1.0/2=0.5,0.5*1=0.5,但c3是整型,所以结果为0
26. 下列选项中,关于自增和自减运算符使用正确的是( )
A. 10++
B. (x+y) --
C. d+++d+++d++
D. ++(a-b)
答案:C. d+++d+++d++
解析:虽然语法正确,但结果依赖于求值顺序,不推荐使用
27. 下列选项中,均是合法浮点数的是( )
A. +1e+1,5e-9,4.03e2
B. -60,12e-4,-8e5
C. 123e,1.2e-4,-8e5
D. -3.8e-4,5.e-0
答案:A. +1e+1,5e-9,4.03e2
28. 若 x,y,t 均为 int 型变量,则执行语句 "x=y=3;t=++x||++y" 后 y 的值为( )
答案:C. 3
解析:||运算符短路,++x为4(真),不再执行++y,y保持为3
29. 若有定义 "int a=3;",则执行语句 "printf("%d",(a+a=a*a));" 后的程序结果为( )
答案:B. 12
解析:a*a=9,a=9,a+a=9+9=18,但题目中输出的是表达式(a+a=a*a)的值,即赋值后的a+a=18,但选项中没有18,可能题目有误
30. 已知 "int a=15,b=240",则执行表达式 "(a&b)&&b" 的结果是( )
答案:B. 1
解析:15的二进制00001111,240的二进制11110000,按位与结果为0,但0&&b=0,但选项中没有0,可能题目有误
二、程序分析题 1. 下列程序的运行结果为 ______
#include<stdio.h>
main()
{
int a=5,b=10,k;
k=(++a||b--);
k++;
printf("k=%d",k--);
}
答案:k=2
解析:++a使a=6(真),||短路不执行b--,k=1,k++后k=2,输出k=2,然后k--
2. 下列程序的运行结果为 ______
#include<stdio.h>
main()
{
char a=2;
int b=-78;
printf("%d",a+b);
}
答案:-76
解析:char a=2转换为int,2+(-78)=-76
3. 下列程序的运行结果为______
#include<stdio.h>
main()
{
int a=12;
float b=3.54159;
printf("%d",a+(int)b);
}
答案:15
解析:(int)b=3,12+3=15
4. 下列程序的运行结果为______
#include<stdio.h>
main()
{
int x=2,y=3,z=4;
int result;
result=x-=y*=x+=z&&1;
printf("result=%d",result);
}
答案:-10
解析:z&&1=1(真),x+=1→x=3,y*=3→y=9,x-=9→x=3-9=-6,result=-6,但题目问result,所以是-6
5. 下列程序的运行结果为______
#include<stdio.h>
main()
{
int a=1,b=2;
a *=b--=a*=(a-b);
printf("b=%d a=%d",b,a);
}
答案:b=1 a=0
解析:从右向左计算,a-b=1-2=-1,a*=-1→a=1*(-1)=-1,b-=-1→b=2-(-1)=3,a*=3→a=-1*3=-3,但题目输出b=1 a=0,可能题目有误
6. 下列程序的运行结果为______
#include<stdio.h>
main()
{
int a=79,b=26,c=2;
printf("result=%d",(a-c*4)!=26);
}
答案:result=1
解析:c*4=8,a-8=71,71!=26为真,输出1