1.设有语句 char a = ‘\72’; 则变量 a()。
A.包含2个字符
B.说明不合法
C.包含1个字符
D.包含3个字符
正确答案: C
解析:" \ "加数字(一般是8进制数字),用来表示ASCII码
对应八进制72的ASCII码得出对应的字符为 :包含一个字符。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a = '\72';
printf("%c\n", a);
printf("%d\n", sizeof(a));
system("pause");
return 0;
}
2.假定x=500,下面函数的返回值是 ()。
int fun(int x)
{
int countx = 0;
while (x)
{
countx++;
x = x & (x - 1);
}
return countx;
}
A.2 B.3 C.5 D.6
正确答案: D
解析:这段代码的实质是求x二进制表示中含有1的个数。
#include<stdio.h>
#include<stdlib.h>
int fun(int x)
{
int countx = 0;
while (x)
{
countx++;
x = x & (x - 1);
}
printf("%d\n", countx);
return countx;
}
int main()
{
fun(500);
system("pause");
return 0;
}
3.由多个源文件组成的C程序,经过编辑、预处理、编译、链接等阶段会生成最终的可执行程序。下面哪个阶段可以发现被调用的函数未定义?
A.预处理 B.编译 C.链接 D.执行
正确答案: C
解析:链接是将各个编译单元中的变量和函数引用与定义进行绑定,保证程序中的变量和函数都有对应的实体,若被调用函数未定义,就在此过程中会发现。编辑阶段创建和修改源程序;预处理阶段分析宏定义以及替换宏引用;编译过程是把源程序翻译为与之等价的目标程序。
4.以下代码段中循环执行的次数是()。
int k = 0;
do {++k;} while (k < 1);
A.一次也不执行
B.无限次
C.执行1次
D.有语法错误,不能执行
正确答案: C
解析:先执行do里面的,k+1 所以 k=1。
while条件是k<1,这时k已经是1了,1<1不成立,所以循环退出,所以只执行一次。
5.若有定义语句,int b = 2,则表达式(b<<2)/(3||b)的值是?
A.0 B.2 C.4 D.8
正确答案: D
解析:本题考查位运算< <、/,以及逻辑运算符||。b < <2为8,3 3||b为1,所以结果为8。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int b = 2, c;
c = (b << 2) / (3 || b);
printf("%d\n", c);
system("pause");
return 0;
}
6.7&3+12的值是15。请问这句话的说法是正确的吗?
A,正确
B.错误
正确答案: B
解析:7&3+12,因为+的优先级更高,则先计算3+12 = 15,之后和7进行二进制按位与(&),即:0111 & 1111 = 0111 = 7。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a;
a = 7 & 3 + 12;
printf("%d\n", a);
system("pause");
return 0;
}