第一题
1. while(1) {x++;}, 当x的取合适的初值时,可以避免死循环。
A:正确
B:错误
答案及解析 B
循环条件为1,在条件判断中,0为假,非0为真,1位真,所以无论x取什么,都是死循环
第二题
2. 运行下面程序的输出结果是()
int main() { int y=3,x=3,z=1; printf("%d%d\n",(++x, y++), z+2); return 0; }
A:34
B:42
C:43
D:33
答案及解析 D
本题考查,前置++,后置++和逗号表达式
前置++,返回的是++之后的值;
后置++,返回的是++之前的值;
逗号表达式:会挨个计算括号里的表达式,但是只会输出最后一个表达式的结果;
所以选D
第三题
3. 声明语句为int a[3][4];,下列表达式中与数组元素a[1][2]等价的是()
A:*(&a[0][0]+7)
B:*(a[1]+2)
C:*(a[0]+6)
D:a[7]
答案及解析 BC
A:先取到了a[0][0]的地址,这个地址z里面存的是int类型的,所以对地址的加法,+7,是往后移动7个int类型(4字节)的空间,到达的是a[1][3]的位置,再解引用*(&a[0][0]+7),取到的是a[1][3],所以不对;
B:a[1]是表示这个二维数组的第二行的地址,也是第二行这个一维数组的数组名,代表首元素地址,所以a[1] + 2是表示第二行第三个元素的地址,再解引用就是a[1][2];
C:a[0]表示这个二维数组的第一行的地址,也是第一行的一维数组的数组名,+6为什么是a[1][2]的地址,因为二维数组的地址是连续的,所以就是a[1][2];
D:a[7]是表示这个二维数组的第八行的地址,越界了
第四题
4. 若执行fopen函数时发生错误,则函数的返回值是()
A:地址值
B:0
C:1
D;EOF
答案及解析 B
fopen是打开文件的函数
打开失败返回NULL,也就是0;
打开成功返回文件结构体的指针;
第五题
5. #include<file.h> 与 #include "file.h"的区别?
A:前者首先从当前工作路径搜寻并引用file.h,而后者首先从Standard Library的路径寻找和引用file.h
B:前者首先从Standard Library的路径寻找和引用file.h,而后者首先从当前工作路径搜寻并引用file.h
C:两者都是首先从Standard Library的路径寻找和引用file.h
D:两者都是首先从当前工作路径搜寻并引用file.h
答案及解析 B
#include <>:会先从标准库找,标准库找不到,再去当前的目录找;
#include "":先从当前目录找,当前目录找不到,再去标准库找;