第一部分 选择题
1. C语言程序的三种基本结构:顺序结构、选择结构、循环结构
2. C语言中,用关键字int定义基本整型变量,用关键字float定义单精度变量,用double
定义双精度变量
3. 在Turbor C 2.0中,编译、连接源程序的快捷键是Ctrl+F9 4. 在VC++6.0中,终止运行程序的快捷键是Ctrl+C
5. int a=0,b=2; printf(“%d,%d”,++a,b--); 输出的结果是1,2
6. scanf(“%d%d%d”,&a,&b,&c); 不同数字之间用 空格(Tab或回车) 隔开
scanf(“=,=;<”,&a,&b,&c); 若从键盘输入 123,456;abc ,则 a=123 b=456 ch=’a’ 7. int a=5,b=2; printf(“%d”,a/b); 输出为 2 若a,b中有一个是浮点数,则a/b是浮点数,但%d
只取整数部分
8. 复合语句是将多个语句用 {} 括起来组成一个语句 9. 数字表达式“1≤x≤10”表示为 x>=1&&x<=10 10. 3*20/4 的值为 5 按照* / %的顺序 11. int k=-5; while (k<=0) k=k+1; 则执行的次数为 6 12. int a=3; 执行a+=a-=*a;语句后a的值为 -12 ,执行a+=a-=a*=a;语句后a的值为 0 13. char c=’A’; prirntf(“%d”,c); 输出的是 65 A的ASCII码为65,a的ASCII码值为97,数字
0的ASCII码为48 14. char ch=’g’; ch=ch-‘a’+’A’; 输出的是 G 15. “chc jsjx”; printf(“%s”); 字符串输出是”chc”, 16. ‘c’,’h’,’c’,’j’,’s’,’j’,’x’ 17. #define P(x) x^x,则P((2+3));的值为 25 18. 以下程序输出的结果是 55
# include
{int k; k=N*N*5; //K=5+5*5+5*5 printf(“%d\\n”,k);} 19. int a[3][4]={1,3,5,7,9,0,2,4,6,8};则a[1][3]为 4 20. int a[3][4]={{1,3},{5,7,9},{2,4,6,8}};则a[1][3]为 0 21. 调用sqrt()函数,所包含的头文件是 math.h
# include
若为*p=a[1]; printf(“%d\\n”,*p); 输出的是3
1 / 8
32. 33. 34. 35. 36.
int a[4]={1,2,3,4}; *p=a; i=2;
printf(“%d\\n”,*(P+i)); //输出的是3
a[2][2]={1,2,3,4}; *p=a[0],i=3;
printf(“%d\\n”,*(p+i)); //输出的是4
char c[]={‘A’,’B’,’\\0’,’C’,’D’};
printf(“%s”,c+1); //输出的是B printf(“%s”,c+3); //输出的是C printf(“%s”,c+2); //无输出
若已声明a[30],若将“program!”保存到数组
若写作为a = “program!”;则会出错,正确的写作为strcpy(a,”program!”);
数组只能在定义时多个元素初始化,在程序中不能用a = “program!”语句进行整体赋值 串长strlen(str) strlen(“”)
比较strcmp(str1,str2) 比较str1,str2前最多n个字符strncmp(str1,str2,n) 复制strcpy(str1,str2) 将str2前n个字符复制到str1中strncpy(str1,str2,n) 将str2连接到str1的尾部strcat(str1,str2) strncat(str1,str2,n) 以上函数都在string.h头文件中 strlen(abcd\\\\xg\\n); 值为8 break是跳出循环体
swith-case中break是跳出swith循环 int x=4; if (x=1) x++;
else x--; //x的值为5
37. 定义char ch,判断ch是否是大写字母ch>=’A’&&ch<=’Z’ 38. max = (a>b)?a+b;b; 若a=6,b=3则max=9
max = (a=a/b)?a+b;a-b; 若a=3,b=2则a=1,b=2,max=3 max = (a>=b)?(a==b)?a=a*b;b=a/b;8 若a=3,b=3则a=3,b=1,max=1 39. int x=10,y=3; x%=y; //x的值为1
40. int a=0; for (int i=4;j=1;i=j;j++) a++; //a的值为3
第二部分 选择题
1. 下列叙述正确是
(A) 语句是C程序的基本单位 (B)函数是C程序的基本单位 (C)文件时C程序的基本单位 (D)以上都不对 2. 以下选项中合法的用户标识符是
(A) long (B)_2Test (C)3DMax (D)A.dat 3. 源程序和目标程序的扩展名分别为c和obj 4. 符合C语言语法的赋值语句是
(A) a=7+b+c=a+7 (B)a=7+b++=a+7 (C)a=7+b,b++,a+7 (D)a=7=b,c=a+7
2 / 8
5. 数学函数的原型在math.h 6. int a,b;
scanf(“%d%d”,&a,&b); 不能输入的数据分隔是 (A) 空格 (B), (C)回车 (D)[Tab] 7. 在嵌套语句中,else与哪个if语句配对
(A) 第一个if语句配对 (B)与上面的最近的且未配对的if语句配对 (C)它与上面最近的if语句配对 (D)与在相同位置的if语句配对 8. int x=023; printf(“%d\\n”,x); //输出的是19 9. if语句的控制条件是
(A) 可以用任何表达式 (B)只能用关系表达式或逻辑表达式 (C)只能用逻辑表达式 (D)只能用关系表达式 10. 不属于字符常量的是
(A)”c” (B)’c’ (C)’\\xc’ (D)’\\072’ 11. 若a,b均为0,则执行z=a++&&b++;后a,b的值分别为 (A)0,0 (B)1,1 (C)1,0 (D)0,1 12. 13. 14.
下列表达式不能为C的是 (A)a=b=10 (B)a<=b<=10 (C)5.6%2 (D)3<5>7 负整数在内存中存储的形式是 (A)补码 (B)反码 (C)原码 (D)ASCII码 若c为char,能判断c为大写字母的是
(A)’A’<=c<=’Z’ (B)c>=’A’||c<=’Z’ (C)’A’<=c and ‘Z’>=c (D)c>=’A’&&c<=’Z’
15. 已定义char s[]=”\\”Name\\\\Address\\023\\n”,所占字节为 15 sizeof(s); //输出为16
16. int x=3,y=1,z=0; if(x=y+z) printf(“****”); else printf(“####”); 输出的是**** 17. 定义x[4][6],则x[1][3]是第10个元素 18. 下列关于switch语句叙述不正确的是 (A)每一个case常量表达式的值必须互不相同 (B)case的常量表达式只起语句标号作用 (C)无论如何default后面的语句都要执行一句 (D)break语句的使用是根据程序需要的 19. while (!e);中!e等价于() 也可以是常量while (!1) (A)e==0 (B)e!=1 (C)e!=0 (D)~e
20. 当调用函数时,实参是一个数组名,则向函数传递的是 (A)数组的长度 (B)数组的首地址 (C)数组的每一个元素地址 (D)数组每个元素值 21. 下列叙述正确的是 (A)C程序总是从第一个函数开始执行(B)在C中,要调用的函数必须在main()函数中定义 (C)C程序总是从main()函数开始执行(D)C中的main()函数必须放在程序的开始部分 22. 一个算法具有“确定性”等五个特性,以下不属于其它四个特性的是 (A)有零个或多个输入 (B)有零个或多个输出 (C)又穷性 (D)可行性 程序可以有死循环,但算法必须有穷 23. C中最简单的数据类型是
(A)整型 实型 逻辑性(B)整型 实型 字符型(C)整型 实型 逻辑性(D)整型 实型 字符型 逻辑 24. 表达式10>=a>=0 为 a>=0 && a<=10
25. a,b居委double型数据,a=5.5,b=2.5,则(int)a+b/b为 (A)6.500000 (B)6 (C)5.500000 (D)6.000000
3 / 8
26. char ch=’A’; ch=(ch>=’A’ && ch<=’Z’)?(ch+32);则ch的值为 a
27. int a=-1,b=4,k; k=(++a<0) && !(b--<=0); printf(“%d %d %d\\n”,k,a,b); //输出的是0 0 4 28. 设int x=1,y=1;表达式(!x||y--)的值为 1
29. int x=3; do {printf(“%d”,x-=2);} while (!(--x)); //输出的是 1,-2 30. for (i=2;i==0; ) printf(“%d”,i--); //循环次数为 0 次
31. int k=1; while (k++<10); //k的值为11,循环的次数为9次
32. int i,sum; for (i=1;i<=3;sum++) sum++; printf(“%d\\n”,sum); //执行的结果是 死循环 33. 关于二维整型数组a[][]的正确是() 只能省略前面的一维 (A)int a[3][]; (B)float a(3,4); (C)double a[1][4]; (D)float a(3)(4) 34. 对两个字符数组a、b进行初始化,char a[]=”ABCDEF”, charb[]={‘A’,’B’,’C’,’D’,’E’,’F’};正确的表述是() (A)a与b数组完全相同(B)a与b长度相同(C)a与b中都存放字符串(D)a数组比b数组长度要长
35. C由函数组成,它的() (A)主函数必须在其它函数之前,函数内可以嵌套定义函数 (B)主函数可以在其它函数之前,函数内不可以嵌套定义函数 (C)主函数必须在其它函数之前,函数内不可以嵌套定义函数 (D)主函数必须在其它函数之前,函数内可以嵌套定义函数 36. 下列叙述正确的是 (A)C语言的源程序不必通过编译就可以直接运行 (B)C语言中的每条可执行语句最终都将被转成二进制的机器指令 (C)C语言源程序的编译形成的二进制代码可以直接运行 (D)C语言中的函数不可以单独进行编译 37. 下列叙述正确的是 (A)用C语言实现的算法必须要有输出输入操作 (B)用C语言实现的算法可以没有输出但必须要有输入操作 (C)用C语言实现的算法可以没有输入但必须要有输出操作 (D)用C语言实现的算法可以既没有输入也没有输出操作 38. 关于复制运算符的描述正确的是 (A)赋值运算符优先级高于逗号运算符 (B)赋值运算符的结合性是从左至右 (C)赋值运算符是双目运算符 (D)赋值运算符可以在表达式中连用 39. char ch; 下列错误的是 (A)ch=’\\’; (B)ch=62+3; (C)ch=’ ‘; (D)ch=’\\xaa’; 40. int i,j,k; 下列语句中可以使输入1,2,3使i,j的值为2,3的是 (A)scanf(“--”,&i,&j,&k); (B)scanf(“%d %d %d”, &i,&j,&k); (C)scanf(“%d,%d,%d”,&i,&j,&k); (D)scaf(“i=%d, j=%d, k=%d”, &i,&j,&k); 41. 能正确表示“当x取值在[1,100]和[200,300]内为真,否则为假”的表达式为 (A)(x>=1) && (x<=100) && (x>=200) && (x<=300)
(B) (x>=1) || (x<=100) || (x>=200) || (x<=300) (C) ((x>=1) && (x<=100)) ||( (x>=200) && (x<=300)) (D) (x>=1) || (x<=100) && (x>=200) || (x<=300) 42. w,x,y,z均为int,则执行下列语句后m的值为 1 w=1;x=2;y=3;z=4; m=(w 4 / 8 (B) do…while语句构成的循环必须用break语句才能退出 (C) do…while语句构成的循环必须用,当while语句中表达式为非零时结束循环 (D) do…while语句构成的循环必须用,当while语句中表达式为零时结束循环 44. 设j为int型变量,下列程序段执行的结果是7 4 for (int j=10;j>3;j--) if (j%3) j--; -j; -j; printf(“%d ”,j); 45. 下列叙述正确的是 (A)由于do…while循环体语句只能输一条可执行语句,所以循环体内不能使用复合语句 (B) do…while循环由do开始,用while结束,在while(表达式)后不能写分号 (C)在do…while循环体中,一定要有能使while后面表达式的值变成零的操作 (D) do…while循环中,根据情况可以省略while (四个选项全部错误) 46. 下列语句正确的是 (A)int a[1][4]={1,2,3,4,5}; (B)float x[3][]={{1},{2},{3}}; (C)long b[2][3]={{1},{1,2},{1,2,3}}; (D)double y[][3]={0} 47. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 正确的是 (A)字符串所包含的字符个数相同时,才能比较字符串 (B)字符串个数多的字符串比字符串个数少的字符串大 (C)字符串”stop “和”stop”相等 (D)字符串”That”小于”The” C语言中引用数组元素时,其数组下标的数据类型允许是 (A)整型变量 (B)整型表达式 (C)整型常量后整型表达式 (D)任何类型的表达式 若有说明语句int a[][3]={1,2,3,4,5,6,7};则a的第一维大小是 3 int f(int);和int g(int);是函数f和g的原型,下列语句中将函数f作为函数g的参数是 (A)f(3); (B)p=f(3); (C)g(f(3)); (D)f(g(3)); 函数调用结束后,形式参数() (A)继续占用相同大小的内存 (B)占用内存减少 (C)释放内存 (D)不确定 以下error的是 (A)一个C程序总是从main函数开始执行的 (D)C语句本身有输入输出的语句 (B)C程序书写格式自由,一行内可以写几个语句,一个语句可以写在多行上 (C)每个语句和数据定的最后必须有一个分号 若有说明语句:char w; int x; float y; double z;则w*z+z-y结果的类型是 double 已知各变量的类型说明如下:int k,a,b=1; unsigned long w=5;则下列不符合C语法表达式 (A)k=b+2=w; (B)w+=2; (C)k=(a=2,b=3,a+b); (D)a+=a-=(b=4)*(a=3); 执行下列语句int x=10;y=3;printf(“%d\\n”,y=x/y);后输出的结果是 3 执行下列程序段,输出的是0,0,3 int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf(“%d,%d,%d\\n”,a,b,c); 以下error的if语句是 (A)if (x>y) z=x;(B)if (x==y) x=0;(C)if (x!=y) printf(“%d”,x) else printf(“%d”,y); (D)if(x int x=-1; do{x=x*x;} while (!x); 循环只执行一次 t为int,进入下面循环之前,t的值为0,则对于循环while(t+i){…}叙述正确的是 (A)循环表达式的值为零 (B)循环控制表达式的值为1 (C)循环控制表达式不合法 (D)以上说法错误 x=y=0; while (x<15) y++,x+=++y; printf(“%d,%d”,y,x);的结果是 8,20 以下对一维整型数a进行正确的初始化是 (A)int a[10]={0,0,0,0,0,0}; (B)int a[10]={}; (C)int a[]={0}; (D)int a[10]={10*1}; 5 / 8