1.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()。
A 6.500000 B 6 b/b=1 C 5.500000 D 6.000000
答:正确答案:D
解析:int只对a有效,a被转换成int型变为5,表达式变为5+1.000000。由于1.000000表达式是double类型,根据隐式转换规则,int又被转换为double类型5.000000。于是,表达式(int)a+b/b=6.000000。
//代码演示
#include<stdio.h>
int main()
{
double a = 5.5, b = 2.5;
printf("%f", (int)a + b / b);
return 0;
}
//运行结果:6.000000
2."A"是一个字符常量。请问这个说法是正确的吗?
答:这个说法是错误的。"A"是字符串常量,'A '是字符常量。用双引号括起来的是字符串常量;用单引号括起来的是字符常量。
3.函数fun的声明为int fun(int *p[4]),以下哪个变量可以作为fun的合法参数()。
A.int a[4][4]; B.int **a; C.int **a[4] D.int (*a)[4];
答:正确答案: B
解析:可以看出fun函数的形参是一个指针数组,也就是指针指向一个地址,地址中存放的内容也是指针。
A项,二维数组,不符合。
B项,二级指针,也就是指针指向的内容也还是存放指针的,符合。
C项,二级指针数组,数组的内容是二级指针,不符合。
D项,数组指针,不符合。
4.下列程序运行后的输出结果是( )。
#include<stdio.h>
int main()
{
int x = 35, B;
char z = 'B';
B = ((x) && (z < 'b'));
printf("%d\n", B);
}
答:程序运行后的输出结果是1。已知变量x为整型变量,并赋值为35,变量z为字符型变量,并赋值为’B’。语句B =((x)&&(z <‘b’));中,(x)的值为1,'B’的ASSCLL码小于’b’的ASSCLL码,所以(z <‘b’)的值也为1,1&&1结果为1。