一、单项选择题 (本大题共20小题,每小题1分,共20分) 在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。 1. C语言程序编译时,程序中的注释部分 ( ) A. 参加编译,并会出现在目标程序中 B. 参加编译,但不会出现在目标程序中 C. 不参加编译,但会出现在目标程序中 D. 不参加编译,也不会出现在目标程序中 2. 下列表达式的值为0的是 ( ) A. 3﹪5 B. 3/5.0 C. 3/5 D. 3<5 3. 正确的C语言用户自定义标识符是 ( ) A. print B. float C. when? D. random﹪2 4. 设int a = 3;则表达式a<1&& - - a>1的运算结果和a的值分别是 ( ) A. 0和2 B. 0和3 C. 1和2 D. 1和3 5.设int i; float f; double d; long int e;,则表达式10+′a′+i*f-d/e结果的类型是( ) A. double B.long C. int D. float 6. 下列保留字中用于构成循环结构的是 ( ) A. if B. while C. switch D. default 7. 与语句if(a>b)if(c>d)x = 1;else x = 2;等价的是 ( ) A. if(a>b){if(c>d) x = 1;else x = 2;} B. if(a>b){if(c>d) x = 1;} else x = 2; C. if((a>b) && (c>d)) x = 1;else x = 2; D. if(a< =b) x = 2;else if (c>d) x = 1; 8. 设 char x =′a′;则printf(″x = ﹪c, y = ﹪c \ n″,x,97);的输出是( ) A. x = a,y = 97 B. x = 97,y = a C. x = 97,y = 97 D. x = a,y = a 9.设int a,b;为使变量a和b分别获得数据10和20,则下列正确的是( ) A.scanf(″%d,%d″,&a,&b);输入数据:10,20<回车> B.scanf(″%d,%d″,&a,&b);输入数据:10 20<回车> C.scanf(″%d,%d″,&a,&b);输入数据:a=10,b=20<回车> D.scanf(″%d,%d″,a,b);输入数据:10,20<回车> 10. 执行下列程序 int a[3][3]={{1},{2},{3}}; int b[3][3]={1,2,3}; main() {printf(″﹪d \ n″,a[1][0] + b[0][0]);} 后输出的结果是 ( ) A. 0 B. 1 C. 2 D. 3 11. 设char str[100];int i = 5;则引用数组元素的错误形式是 ( ) A. str[i + 10] B. (str + i) C. (str + i - 1) D. ((str + + ) + i) 12. 设int x[] = {1,2,3,4,5,6},* p = x;则值为3的表达式是 ( ) A. p + = 2, * + + p B. p + = 2, * p + + C. p + = 3, * p D. p + = 2, + + * p 13. 在函数内,定义变量时存储类型符可省略的是 ( ) A. auto B. static C. extern D. register 14. 执行下列程序 int a = 3, b = 4; void fun(int x1, int x2) {printf(″﹪d, ﹪d \ n″, x1 + x2, b);} main() {int a = 5, b = 6;fun(a, b);} 后输出的结果是 ( ) A. 3,4 B. 11,1 C. 11,4 D. 11,6 15. 设有定义语句 struct {int a;float b;} d[3]={{1,4},{2,5},{6,7}}; 则printf(″﹪3.1f \ n″,d[2]. a * d[2]. b/d[1]. b);的输出是 ( ) A. 2.5 B. 2.0 C. 8.0 D. 8.4 16. 设有定义语句:enum t1 {a1, a2 = 7, a3, a4 = 15}time; 则枚举常量a2和a3的值分别为 ( ) A. 1和2 B. 2和3 C. 7和2 D. 7和8 17. 将一个整数10002存到磁盘上,以ASCII码形式存储和以二进制形式存储,占用的字节数分别是 ( ) A. 2和2 B. 2和5 C. 5和2 D. 5和5 18. 在文件使用方式中,字符串″rb″表示 ( ) A. 打开一个已存在的二进制文件,只能读取数据 B. 打开一个文本文件,只能写入数据 C. 打开一个已存在的文本文件,只能读取数据 D. 打开一个二进制文件,只能写入数据 19. 执行下列程序 # define F(y) 15>>y # define PRINT(a) printf(″﹪d″,a) main() { PRINT(F(2)); } 后输出的结果是 ( ) A. 3 B. 3.5 C. 14 D. 7.5 20. main()函数可以带两个形参,一般分为argc和argv,其中argv可以定义为( ) A. int argv; B. char * argv[]; C. char argv[]; D. char ** argv[];
第二部分 非选择题(80分) 二、填空题 (本大题共10小题,每小题2分,共20分) 21. 初始化值是0.618的双精度变量a的定义形式为_____________________。 22. 表达式 !10! = 1的值是____________________。 23. “20<x≤30”的C语言表达式是____________________。 24. 表达式a = 1,a + 1,a + + 的值是___________________。 25. 设int i = 5;则循环语句while (i > = 1) i - -;执行后,i的值为_______________。 26. 被调函数在执行结束时,这个函数中定义的_______________类型的变量不被释放。 27. 设 struct student { int no; char name[12]; float score[3]; } sl,* p = &sl; 用指针法给sl的成员no赋值1234的语句是___________________。 28. C语言程序中对文本文件的存取是以________________为单位进行的。 29. 设char string[] =″This_is_a_book!″;则数组的长度应是________________。 30. 设int a[2][3] = {{2},{3}};则数组元素_____________________的值为3。 三、程序分析题 (本大题共5小题,每小题5分,共25分) 阅读下列程序,将输出结果写到各题右侧的空白处 31. int a = 200; Void s(); main() {int i; for(i = 1;i< = 5;i + +) {a + + ; printf(″﹪d,″,a); s(); } { s(); {static int a = 20; a + + ; printf(″﹪d \ n″,a); }
32. # include ″stdio.h″ main() {char c; c = getchar(); if((c> =′a′&&c< =′z′) ‖c> =′X′&&c< =′Z′)c = c - 23; printf(″﹪c \ n″,c); } 设从键盘上输入Next ↙
33. # define N 7 main() {int i,j,temp,a[N]={1,2,3,4,5,6,7}; for(i = 0;i<N/2;i + + ) {j = N - 1 - i; temp = a[i];a[i]=a[j];a[j]=temp; } for(i = 0;i<N;i + + ) printf(″﹪5d″,a[i]); }
34. struct porb {char * name; int count; }x[]={″Li ning″,19,″Lang ping″,21,″Zhu jian hua″,20}; main() {int i; for(i = 0;i<3;i + + ) printf(″﹪s: ﹪d \ n″,x[i].name,x[i].count); }
35. main() {union {short a;char ch; }M; M.a = 100;M.ch =′A′; printf(″﹪d,﹪d,﹪c \n″,sizeof(M),M.a,M.ch); }
四、程序填充题 (本大题共3小题,每小题6分,共18分) 给出下列程序,将横线处缺少的部分补上,使其能正确运行。 36. 以下程序的功能是用选择法对数组a中的整数由小到大进行排序。 void sort(int b[],int n) { int i,j,t; for(i = 0;i<n - 1;i ++ ) for(______;j<n;j ++ ) if(b[i]_____b[j]) {t = b[i];_____________;b[j]=t;} } main() { int a[]={5,8,6,2,7,4,1,3}; int i; sort(a,8); for(i = 0;i<8;i ++ ) printf(″﹪5d″,a[i]); printf(″\ n″); } 37. 输入一字符串(换行为结束标志)统计其中数字(0,1,2,…,9不单独统计)、空白和其它字符出现的次数。 # include ″stdio.h″ main() { char c; int ___________________________; while((c = getchar())! =′\ n′) { if(__________________________)digit + + ; else if(c = =′′‖c = =′\ t′) ++ blank; else __________________________; } printf(″digit =﹪d,blank =﹪d,other =﹪d \ n″,digit,blank,other); } 38. 先为数组a输满数据,再为x输入一个数据,在数组a中找出第一个与x相等的元素并将其下标输出,若不存在这样的元素,则输出“Not found!”标志。 main() {int i,x,a[10]; for(i = 0;i<10;i ++ )scanf(″﹪d″,___________); scanf(″﹪d″,&x);printf(″﹪d″,x); for(i = 0;i<10;i ++) if(_________________)break; if (i _________10)printf(″ position:﹪d \ n″,i); else printf(″ Not found! \ n″,x); } 五、程序设计题 (第39小题5分,第40、41小题各6分,共17分) 39. 求出10至1000之内能同时被2、3、7整除的数,并输出。 40. 求1到100之间的奇数之和及偶数之和,并将二者输出。
41. 输入一字符串,检查是否回文 (回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。  |