A.只有输入4的时候为真 B.永远不可能为真 C.永远都是真 正确答案:C解析:
2. 在vi中,以下哪个底行命令可将第10到20行的内容拷贝至第30行之后? A.:10,20 co 30 B.:10,20 co 31 C.:10,20 cp 30 D.:co 10,20,30 正确答案:A解析:
3. 关于预处理指令,以下说法正确的是:
A.#include可以包含文件,文件名必须用<>括起来 B.#define可以定义宏,宏一旦定义,就无法取消 C.#ifndef、#ifdef都可以用于条件编译 D.#elseif 可以用于条件编译 正确答案:C解析:
4. 以下代码实现的是字符串的哪个函数? void f(char *s1,char *s2){ while(*s1++); s1--;
while(*s1++=*s2++); }
A.strcpy函数 B.strcat函数 正确答案:B解析: 5. 以下代码 int x = 1;
int main (void) {
printf (\ int x = x;
printf (\ return 0; }
的输出是? A.1 1
B.编译错误
C.<不确定的数> <不确定的数> D.1 <不确定的数> 正确答案:D解析:
6. 以下代码 int a, b;
for (a = 0, b = 0; a <= 1 && ! b++; a++) a++;
printf (\
D.代码编译错误
C.strlen函数 D.strcmp函数
的输出是? A.2 2 B.2 1 C.0 1 D.1 2 正确答案:B解析:
7. typedef struct Part{ char c; int id; double d; char name; } Part; int
main(){ printf(“%d\\n”,sizeof(Part)); } 在考虑结构的对齐和补齐的前提下,打印的结果应该是:
A.14 B.16 C.20 D.24 正确答案:C解析: 8. 定义联合代码如下: union { int i;
double d; short s; } u;
printf(\那么,输出应该为: A.4 B.8 C.14 D.16 正确答案:B解析:
9. 下列属于合法C标识符的是 A.3d B.double C.a@3 D.Int 正确答案:D解析:
10. #ifndef _TEXT_H_ #define _TEXT_H_ #include #endif 上面代码的主要作用是什么?: A.定义宏_TEXT_H_ B.包含text.h
C.这种写法意义不大,没什么作用 D.用条件编译防止text.h被多次包含 正确答案:D解析:
11. 用条件编译防止text.h被多次包含,以下代码正确的是?
A.#ifndef _TEXT_H_ #define _TEXT_H_ #include #endif B.#ifdef _TEXT_H_ #define _TEXT_H_ #include #endif C.#if _TEXT_H_ #define _TEXT_H_ #include #endif
D.#ifndef _TEXT_H_ #define _TEXT_H_ #elif #include #endif 正确答案:A解析:
12. C语言的主函数中调用函数f1,当f1函数执行完毕后,哪个变量的内存被回收了: int i = 1;
void f1(int a){ int b;
static int c = 5; }
int main(){ int d = 1;
f1(d); getchar(); }
A.变量a
B.变量a和b D.变量a、b、c和d
C.变量a、b和c 正确答案:B解析:
13. 允许下面的程序,则以下输出正确的是: void fun( int *n){ while((*n)--);
printf(“%d”,++(*n)); }
int main(){ int a = 10; fun(&a); return 0;} A.1 B.0 C.10 D.程序不正确 正确答案:B解析:
14. 下列关于字符串的代码正确的是? A.char *st1 = \ B.char *st1 = \ C.char st1[] = \ D.char st1[] = \=”abcde”; 正确答案:A解析:
15. 以下宏定义 #define z(x, y) (((x) & (y)) + (((x) ^ (y)) >> 1)) 的功能是? A.求两个数的最大值 C.求两个数的平均值 正确答案:C解析:
16. 在C语言中,下列代码执行结果是? int score = 4; switch(score){ case 5:
printf(\ case 4:
printf(\ case 3:
printf(\ default:
printf(\}
A.ABCD B.BCD C.B 正确答案:B解析: 打印出的数字应该为: A.4 5 B.10 5 正确答案:D解析:
B.求两个数的平方和 D.求两个数的方均根
D.BD
17. int i=10; printf(“%d ”,sizeof(i=5)); printf(“%d\\n”,i); 上面的代码执行完毕后,
C.10 10
D.4 10
18. 以下两条语句: scanf (\cin.ignore (80, '\\n'); 在行为方面有何不同?
A.前者读取并丢弃输入缓冲区中的首个换行符,后者读取并丢弃输入缓冲区中的前80个换行符
B.前者读取并丢弃输入缓冲区中的所有换行符,后者读取并丢弃输入缓冲区中的后80个换行符
C.前者读取并丢弃输入缓冲区中的所有字符直至遇到换行符,后者读取并丢弃输入缓冲区中的80个字符,若遇到换行符则提前返回 D.二者完全等价,没有任何不同 正确答案:C解析:
19. 以下代码 char c = 200; printf (\的输出是? A.200 B.56 C.-56 D.-55 正确答案:C解析:
20. 以下代码 char ca[8];
void foo (char ca[16]) {
printf (\ }
int main (void) { char ca[32]; foo (ca); return 0; }
的输出是? A.4 B.8 C.16 正确答案:A解析:
D.32
21. 在C语言中,下面关于数组的声明语句中,编译能通过的是? A.int[] arr; B.int arr[] = {}; C.int arr[]; D.int arr[5]; arr = {1,2,3,4,5}; 正确答案:B解析:
22. 关于费氏数列1 1 2 3 5 8 13 21 ...的通项最佳实现是? A.int f1(int n){ if(n<3) return 1; return f1(n-1)+f1(n-2); } B.int f1(int n){ if(n<2) return 1; return f1(n-1)+f1(n-2); }
C.int f2(int n){ int x=1,y=1,i; for(i=3;i<=n;i++){ y = x+y; x = y-x; } return y; } D.int f2(int n){ int x=1,y=1,i; for(i=3;i<=n;i++){ y = x+y; x = y-x; } return x; } 正确答案:C解析: 23. 以下代码 :
unsigned char a = 0xa5; unsigned char b = ~a >> 1 + 2 + 3; printf (\的输出是? A.50 B.253 正确答案:B解析:
C.1
D.-3