C语言复习题
更新时间:2024-05-02 16:06:01 阅读量: 综合文库 文档下载
- c语言复数运算推荐度:
- 相关推荐
一、 判断题:
1.O C程序的基本组成单位是函数 2.O C程序可以由一个或多个函数组成
3.X C语言可以不用编译就能被计算机识别执行 4.X main()函数必须放在其它函数之前
5.O 每个C程序中都必须要有一个main()函数 6.X 在C程序中main()函数的位置是固定的
7.X C程序中的main()函数必须放在程序的开始位置。 8.X C语言编译时不检查语法
9.O C程序中注释部分可以出现在程序中任意合适的地方 10.O C程序中一行可以写多条语句
11.X 分号是C语句之间的分隔符,不是语句的一部分 12.X 花括号“{”和“}”只能作为函数体的定界符 13.X C程序中的每行只能写一条语句
14.X C程序的执行总是从main函数开始,在main函数结束
15.X C程序的执行总是从main函数开始,在程序的最后一个函数中结束 16.O ++(i+1);是非法的赋值语句
17.O 用户标识符中不可以出现中划线,但可以出现下划线
18.X 用户标识符中可以出现下划线,但不可以放在用户标识符的开头 19.O C语言中,Area与area是不同的标识符 20.X C语言中有逻辑类型
21.X int a=b=0;是正确的定义语句。
22.X 1.2E0.5是符合C语言语法的实型常量
23.X 假定x和y为double型,则表达式x=2,y=x+3/2的值是3.500000 24.X 可以用关系运算符对字符串的大小进行比较
25.X 两个字符串中的字符个数相同时才能进行字符串大小的比较 26.X 设有定义语句:char b= '\\123';则变量b包括4个字符
27.X 若有定义语句:char s[10]=\,则strlen(s)的值是9 28.X a=b+c=1 是正确的赋值表达式
29.O 若变量a、i已正确定义,且i已正确赋值,则 a=a++=5; 是正确的赋值语句( ) 30.O 除逗号运算符外,赋值运算符的优先级最低
31.O C语言中,运算对象必须是整型数据的运算符是 %。
32.X 对于单目运算符++、--,它们的运算对象可以是任何变量和常量 33.X 表达式:10!=9的值是 true 34.O 表达式1||2||3||4的值是1。
35.O 若变量c为char类型,则表达式(c>= 'a')&&(c<= 'z') 能正确判断出c为小写字母 36.X 若变量c为char类型,则表达式 'a'<=c<= 'z' 能正确判断出c为小写字母 37.O sizeof(float)的值是4
38.X sizeof(double)是一种函数调用
39.O if(x
41.O 用do-while语句构成的循环,在while后的表达式为零时结束循环 42.X do-while语句构成的循环只能用break语句退出
43.X 对for(表达式1; ; 表达式3)可理解为 for(表达式1;0;表达式3) 。 44.X break语句只能用于switch语句体中
45.X continue语句的作用是:使程序的执行流程跳出包含它的所有循环 46.X 在循环体内使用break语句和continue语句的作用相同
47.X 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
48.X 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是6
49.X 若有定义:int a[2][3];对a数组元素正确引用的是a[2][3] 50.X 若有说明int s[3][4]={0};则只有元素s[0][0] 可得到初值0。
51.O 不能在赋值语句中通过赋值运算符\对字符型数组进行整体赋值 52.O 字符型数组中可以存放字符串
53.X 可以对整型数组进行整体输入、输出 54.X 函数中的形式参数是局部变量
55.O 在不同的函数中可以使用相同名字的变量
56.O 在一个函数内定义的变量只在本函数范围内有效 57.X 函数的定义和函数的调用均可以嵌套
58.X 函数的定义可以嵌套,但函数的调用不可以嵌套 59.O 函数的形参和实参分别占用不同的存储单元
60.X C语言中,每个函数都可以被其它函数调用(包括main函数) 61.X C语言中,在一个函数内部可以定义另一个函数 62.X 实参和与其对应的形参共同占用一个存储单元
63.X 只有当实参和与其对应的形参同名时才共占用存储单元 64.X 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,B)));在此函数调用语句中实参的个数是6
65.O 用户定义的函数中可以没有return语句
66.X 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值 67.O 当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址 68.X 若用数组名作为实参,则传递给形参的是数组中全部元素的值。 69.O C语言中形参的默认存储类别是自动(auto)。 70.O C语言中,宏替换没有数据类型限制 71.X C语言中,宏名必须用大写字母表示
72.X C程序对预处理命令行的处理是在程序执行的过程中进行的 73.X 两个字符串中的字符个数相同时才能进行字符串大小的比较
74.O 当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址 75.X break语句只能用于switch语句体中
76.X C程序中的main()函数必须放在程序的开始位置。 77.O if(x>y); 是正确的if语句。 78.O ++(i+1);是非法的赋值语句 79.X 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,B)));在此函数调用语句中实参的个数是6
80.O 函数的形参和实参分别占用不同的存储单元 81.O 在不同的函数中可以使用相同名字的变量 82.X 表达式:10!=9的值是 true
83.O C语言中,宏替换没有数据类型限制
84.O C程序中注释部分可以出现在程序中任意合适的地方 85.X 设有定义语句:char b= '\\123';则变量b包括4个字符
86.O 用do-while语句构成的循环,在while后的表达式为零时结束循环 87.O if(x 88.X continue语句的作用是:使程序的执行流程跳出包含它的所有循环 89.X 1.2E0.5是符合C语言语法的实型常量 90.X 若有定义语句:char s[10]=\,则strlen(s)的值是9 91.X 若变量c为char类型,则表达式 'a'<=c<= 'z' 能正确判断出c为小写字母 92.X 可以用关系运算符对字符串的大小进行比较 93.O 每个C程序中都必须要有一个main()函数 94.X 函数的定义和函数的调用均可以嵌套 95.O sizeof(float)的值是4 96.X C语言中有逻辑类型 97.O 字符型数组中可以存放字符串 98.X 分号是C语句之间的分隔符,不是语句的一部分 99.O C程序可以由一个或多个函数组成 100X. 若有说明int s[3][4]={0};则只有元素s[0][0] 可得到初值0。 101.X 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值 102.X C语言中,每个函数都可以被其它函数调用(包括main函数) 二、 单选题 1. 以下说法中正确的是( C ) A) C语言程序总是从第一个的函数开始执行 B) 在C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行 D) C语言程序中的main()函数必须放在程序的开始部分 2. 下选项中不是C语句的是( A )。 A) {int i; i++; printf(“%d\\n”,i);} B) ; C) a=5,c=10 D) { ; } 3. 以下选项中不能作为C语言合法常量的是 ( ) A) 'cd' B) 0.1e+6 C) \D) '\\011' 4. 若x,a,b和c均是int型变量,则执行表达式x=(a=1,b=2)后x的结果为( B )。 A) 1 B) 2 C) 3 D) 不确定 5. 以下能正确定义整型变量a,b和c并为其赋初值1的语句是( D )。 A) int a=b=c=1; B) int a,b,c=1; C) a=b=c=1; D) int a=1,b=1,c=1; 6. 字符串\中的字符数(不算’\\0’)为( D ) A) 5 B) 14 C) 8 D) 4 7. 对两个静态函数A和B进行如下初始化: char A[]=\ char B[]={'A','B','C','D','E','F'}; 则下列叙述正确的是( D )。 A) A和B完全相同 B) A和B只是长度相等 C) A和B不相同,A是指针数组 D) A数组长度比B数组长 8. 若有以下定义: char a;int b; float c;double d; 则表达式a*b+d-c值的类型为( D ) A) float B) int C) char D) double 9. 在C语言中,运算对象必须是整型数的运算符是( A ) A) % B) / C) %和\\ D) ** 10. 有以下程序 main() { int x, y, z; x=y=1; z=x++,y++,++y; printf(\ } 程序运行后的输出结果是 ( C ) A) 2,3,3 B) 2,3,2 C) 2,3,1 D) 2,2,1 11. 以下选项中,当x为大于1的奇数时,值为0的表达式是( D ) A) x%2==1 B) x/2 C) x%2!=0 D) x%2==0 12. 以下程序的输出结果是( C )。 main() { int x=10,y=3; printf(\} A) 0 B) 1 C) 3 D) 不确定的值 13. 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( C ) A) -3 B) 9 C) -12 D) 6 14. 有以下程序 main() { char a='a',b; printf(\printf(\} 程序运行后的输出结果是 ( A ) A) b,b B) b,c C) a,b D) a,c 15. 设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( C ) A) 0 B) 1 C) 2 D) 3 16. 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( C ) A) 不定值 B) 4 C) 3 D) 1 17. 有以下程序段 int k=0 ; while(k=1)k++; while循环执行的次数是( A ) A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次 18. 能正确表示逻辑关系“a>=10或a<=0”的C语言表达式是( D ) A) a>=10 or a=10 B) a>=0|a<=10 C) a>=10&&a<=0 D) a>=10||a<=0 19. 表示关系x≤y≤z的c语言表达式为( A ) A) (x<=y)&&(y<=z) B) (x<=y)AND(y<=z) C) (x<=y<=z) D) (x<=y)&(y<=z) 20. 设有:int a=1, b=2, c=3, d=4, m=3, n=3; 执行 (m=a>b)||(n=c>d)后n的值为( A )。 A) 0 B) 1 C) 2 D) 3 21. 以下关于逻辑运算符两侧运算对象的叙述中正确的是 ( D ) A) 只能是整数0或1 B) 只能是整数0或非0整数 C) 可以是结构体类型的数据 D) 可以是任意合法的表达式 22. 若x和y都是int型变量,x=100,y=200,且有下面的程序片段: printf(\ 上面程序片段的输出结果是( A ) A) 200 B) 100 C) 100 200 D) 输出格式符不够,输出不确定的值 23. 在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则( B ) A) 称为函数的直接递归调用 B) 称为函数的间接递归调用 C) 称为函数的循环调用 D) C语言中不允许这样的递归调用 24. 以下程序的输出结果是( D ) main() { int k=17; printf(\,%o,%x \\n\,k,k,k); } A) 17,021,0x11 B) 17,17,17 C) 17,0x11,021 D) 17,21,11 25. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( B )。 A) INPUT x、y、z; B) scanf(\C) scanf(\ D) read(\26. 有以下程序 main() { int i; for(i=0;i<3;i++) switch(i) { case 0: prinft(\case 2: prinft(\default: prinft(\ } } 程序运行后的输出结果是( C ) A) 022111 B) 021021 C) 000122 D) 012 27. C语言中用于结构化程序设计的三种基本结构是( A ) A) 顺序结构、选择结构、循环结构 B) if、switch、break C) for、while、do-while D) if、for、continue 28. 在嵌套使用if语句时,C语言规定else总是 ( C ) A) 和之前与其具有相同缩进位置的if配对 B) 和之前与其最近的if配对 C) 和之前与其最近的且不带else的if配对 D) 和之前的第一个if配对 29. 设有以下程序片段: switch(X) { case 'A': printf(\case 'B': printf(\default: printf(\} 假设X='A',程序输出结果是( D ) A) A B) B C) error D) ABerror 30. 读程序: main() { int num=0; while (num<=2) { num++; printf(\ \ } 上面程序的输出结果是( C ) A) 1 B) 2 2 C) 1 2 3 D) 1 2 3 4 31. 以下程序段的执行结果是( A )。 int x=5; do{printf(\while(!x); A) 5 B) 无任何输出 C) 4 D) 陷入死循环 32. 设变量已正确定义,则以下能正确计算f=n!的程序段是 ( D ) A) f=0; for(i=1;i<=n;i++) f*=i; B) f=1; for(i=1;i C) f=1; for(i=n;i>1;i++) f*=i; D) f=1; for(i=n;i>=2;i--) f*=i;D 33. 以下程序的输出结果是( )。 main() { int a, b; for(a=1,b=1;a<=100;a++) { if(b>=10) break; if(b%3==1) { b+=3; continue; } } printf(\} A) 101 B) 6 C) 5 D) 4 34. 下列合法的数组定义是( D )。 A) int a[]=\ B) int a[5]={0,1,2,3,4,5}; C) char a=\ D) char a[]={0,1,2,3,4,5}; 35. 以下定义语句中,错误的是( D ) A) int a[]={1,2}; B) char *a[3]; C) char s[10]=\D) int n=5,a[n]; 36. 以下正确的数组定义语句是( D )。 A) int y[1][4]={1,2,3,4,5}; B) float x[3][]={{1},{2},{3}}; C) long s[2][3]={{1},{1,2},{1,2,3}}; D) int m[1][4]={4}; 37. 以下程序的输出结果是( C )。 main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf(\} A) 258 B) 741 C) 852 D) 369 38. 若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是( A) a[0][4] B) a[1][3] C) a[0][3] B ) D) a[1][4] 39. 以下数组定义中不正确的是( D ) A) int a[2][3]; B) int b[][3]={0,1,2,3}; C) int c[100][100]={0}; D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 40. 以下程序的输出结果是( A )。 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf(\} A) 0650 B) 1470 C) 5430 D) 输出值不定 41. 以下程序的输出结果是 ( B ) main() { char cf[3][5]={\printf(\} A) \B) \C) \D) \ 42. 设有数组定义: char array [ ]=\则数组 array所占的空间为( C A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节 43. 以下选项中,不能正确赋值的是( A )。 A) char s1[10];s1=\B) char s2[]={'C','t','e','s','t'}; C) char s3[20]=\D) char *s4=\44. 给出以下定义: char x[]=\ char y[]={'a','b','c','d','e','f','g'}; 则正确的叙述为( C )。 A) 数组x和数组y等价 B) 数组x和数组y长度相同 C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度 45. 若要求从键盘读入含有空格字符的字符串,应使用函数 ( B ) A) getc() B) gets() C) getchar() D) scanf() 46. 有语句: ) char str1[10],str2[10]={\ 则能将字符串books赋给数组str1的正确语句是( B )。 A) str1={\B) strcpy(str1,str2); C) str1=str2; D) strcpy(str2,str1); 47. 以下语句的输出结果是( A ) printf(\A) 5 B) 14 C) 8 D) 输出项不合法,无正常输出 48. 若有语句int *point, a=4; 和point=&a; 下面均代表地址的一组选项是( D )。 A) a, point, *&a B) &*a, &a, *point C) *&point, *point, &a D) &a, &*point, point 49. 设已有定义:float x;,则以下对指针变量p进行定义且赋初值的语句中正确的是( D A) float *p = 1024; B) int *p = (float)x; C) float p = &x; D) float *p = &x; 50. 设有语句:int a=1,b=2,*p1=&a,*p2=&b; 以下可使指针p1指向变量b的赋值语句是( C A) p1=*p2 B) *p1=p2 C) p1=p2 D) *p1=*p2 51. 有以下程序 main() { int a[]={1,2,3,4,5,6,7,8,9,0},*p; for(p=a;p 程序运行后的输出结果是( A ) A) 1,2,3,4,5,6,7,8,9,0, B) 2,3,4,5,6,7,8,9,10,1, C) 0,1,2,3,4,5,6,7,8,9, D) 1,1,1,1,1,1,1,1,1,1, 52. 若已定义char s[10]; 则在下面表达式中不能表示s[1]的地址的是( B )。 A) s+1 B) s++ C) &s[0]+1 D) &s[1] 53. 在以下选项中,操作不合法的一组是( B )。 A) int x[6], *p; p=&x[0]; B) int x[6], *p; *p=x; C) int x[6], *p; p=x; D) int x[6],p; p=x[0]; 54. 以下叙述中正确的是( B ) A) 全局变量的作用域一定比局部变量的作用域范围大 B) 静态(static)类别变量的生存期贯穿于整个程序的运行期间 ) )。 C) 函数的形参都属于全局变量 D) 未在定义语句中赋初值的auto变量和static变量的初值都是随机值 55. 有以下程序 main() { char s[]=\ p=s; printf(\pritnf(\} 程序运行后的输出结果是 ( A ) A) 15 B) 16 C) 12 D) 59 56. 以下语句或语句组中,能正确进行字符串赋值的是( A) char *sp; *sp=\B) char s[10]; s=\C) char s[10]; *s=\D) char *sp=\ 57. 下面程序段的运行结果是( A )。 char *p= \p+=2; printf(\A) 6 B) 12 C) 4 D) 7 58. 下面程序段的运行结果是( B )。 char str[ ]= \printf(\A) 67 B) 0 C) 字符'C'的地址 D) 字符'C' 59. 以下程序运行后,输出结果是( C ) main() { char *s=\ s+=2; printf(\,s);} A) cde B) 字符c的ASCII码值 C) 字符c的地址 D) 出错 60. 有以下程序: main() { char *p[10]={\printf(\} 执行后输出结果是( A ) A) 2 C ) B) 3 C) 4 D) 5 61. 若有语句:char *line[5];,以下叙述中正确的是( A ) A) 定义line是一个数组,每个数组元素是一个基类型为char的指针变量 B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C) 定义line是一个指针数组,语句中的*号称为间址运算符 D) 定义line是一个指向字符型函数的指针 62. 设有如下定义: char *aa[2]={\;则以下说法中正确的是( D )。 A) aa数组成元素的值分别是\和ABCD\ B) aa是指针变量,它指向含有两个数组元素的字符型一维数组 C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D) aa数组的两个元素中各自存放了字符串\和\的首地址 63. 以下函数调用语句中含有( B )个实参。 fun((exp1,exp2),(exp3,exp4,exp5)); A) 1 B) 2 C) 4 D) 5 64. 以下所列的各函数首部中,正确的是( C ) A) void play(var a :integer,var b:integer) B) void play(int a,b) C) void play(int a,int b) D) Sub play(a as integer,b as integer) 65. C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( B ) A) void B) int C) float D) double 66. 下面的函数调用语句中func函数的实参个数是 ( A ) func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8))); A) 3 B) 4 C) 5 D) 8 67. 有以下程序 fun(int x, int y) { static int m=0, i=2; i+=m+1; m=i+x+y; return m; } main() { int j=1, m=1, k; k=fun(j,m); printf(\ k=fun(j,m); printf(\} 执行后的输出结果是 ( B ) A) 5, 5 B) 5, 11 C) 11, 11 D) 11, 5 68. 以下函数值的类型是 ( A ) fun ( float x ) { float y; y= 3*x-4; return y; } A) int B) 不确定 C) void D) float 69. 以下程序的输出结果是 ( C ) fun(int x, int y, int z) { z=x*x+y*y; } main() { int a=31; fun(5,2,a); printf(\} A) 0 B) 2 C) 31 D) 无定值 70. 有以下程序 void f(int x,int y) { int t; if(x main() { int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf(\} 执行后输出的结果是( D ) A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,5 71. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( A) 地址传递 B) 单向值传递 C) 由实参传给形参,再由形参传回实参 D) 传递方式由用户指定 72. 有以下程序 void f(int b[]) { int i; for (i=2; i<6; i++) b[i] *= 2; } main() B ) { int a[10]={1,2,3,4,5,6,7,8,9,10}, i; f(a); for (i=0; i<10; i++) printf(\} 程序运行后的输出结果是( B ) A) 1,2,3,4,5,6,7,8,9,10, B) 1,2,6,8,10,12,7,8,9,10, C) 1,2,3,4,10,12,14,16,9,10, D) 1,2,6,8,10,12,14,16,9,10, 73. 在C语言中,函数返回值的类型最终取决于 ( C ) A) 函数定义时在函数首部所说明的函数类型 B) return语句中表达式值的类型 C) 调用函数时主调函数所传递的实参类型 D) 函数定义时形参的类型 74. 调用一个函数,此函数中没有return语句,下列说法正确的是:该函数( A A) 没有返回值 B) 返回若干个系统默认值 C) 能返回一个用户所希望的函数值 D) 返回一个不确定的值 75. 若有以下调用语句,则不正确的fun函数的首部是( D ) main() { … int a[50],n; … fun(n, &a[9]); … } A) void fun(int m, int x[]) B) void fun(int s, int h[41]) C) void fun(int p, int *s) D) void fun(int n, int A) 76. 有以下程序 void swap(char *x, char *y) { char t; t=*x; *x=*y; *y=t; } main() { char *s1=\ swap(s1,s2); printf(\ } 程序执行后的输出结果是 ( C ) A) 123,abc B) abc,123 C) 1bc,a23 D) 321,cba 77. 以下程序的输出结果( B ) #include )。 { *z=y-x; } main() { int a, b, c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(\} A) 5,2,3 B) -5,-12,-7 C) -5,-12,-17 D) 5,-2,-7 78. 已定义以下函数 int fun( int *p) { return *p; } fun函数返回值是 ( C ) A) 不确定的值 B) 一个整数 C) 形参p中存放的值 D) 形参p的地址值 79. 已定义以下函数: fun (char* p2, char* p1) { while ((*p2=*p1) != '\\0') {pl++;p2++;} } 函数的功能是 ( C ) A) 将p1所指字符串复制到p2所指内存空间 B) 将pl所指字符串的地址赋给指针p2 C) 对pl和p2两个指针所指字符串进行比较 D) 检查p1和p2两个指针所指字符串中是否有'\\0' 80. 有以下程序 #include { if (b==0) return a; else return (fun(--a, --b)); } main() { printf(\程序的运行结果是( B ) A) 1 B) 2 C) 3 D) 4 81. 以下程序的输出结果是 ( B ) int a,b; void fun() { a=100; b=200; } D) 1 132. 设变量x和y均己正确定义并赋值。以下if语句中,在编译时将产生错误信息的是 ( A ) A) if (x++); B) if (x>y && y!=0); C) if (x>0) x-- else y++; D) if (y<0) {;} else x++; 133. 有以下程序 main() { int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2){k=k+p[i]; i++;} printf(\} 执行后输出的结果是( D ) A) 58 B) 56 C) 45 D) 24 134. 对于下述for循环语句,说法正确的是( B )。 int i,k; for(i=0,k=-1;k=1;i++,k++) printf(\ A) 判断循环结束的条件非法 B) 是无限循环 C) 只循环一次 D) 一次也不循环 135. C语言源程序名的后缀是( B ) A) .exe B) .C C) .obj D) .cp 136. 在C语言中,如果下面的变量都是int类型,则输出结果是( A sum=a=5; a=sum++,a++,++a; printf(\A) 7 B) 6 C) 5 D) 4 137. 以下关于运算符优先顺序的描述中正确的是( C ) A) 关系运算符<算术运算符<赋值运算符<逻辑与运算符 B) 逻辑与运算符<关系运算符<算术运算符<赋值运算符 C) 赋值运算符<逻辑与运算符<关系运算符<算术运算符 D) 算术运算符<关系运算符<赋值运算符<逻辑与运算符 138. 下述语句中,( C )中的if语句语法是错误的。 A) if(x>y); B) if(x==y) x+=y; C) if(x!=y) scanf(\D) if(x ) 139. 以下程序的输出结果是( A ) # include { char str[12]={'s','t','r','i','n','g'}; printf(\ } A) 6 B) 7 C) 11 D) 12 140. 若x为int型变量,y是float型变量,输入语句格式为: scanf(\ 则为使x=20,y=166.6,正确的输入是( B )。 A) 20 166.6 <回车> B) x=20,y=166.6 <回车> C) 20 <回车> 166.6 <回车> D) 20,166.6 <回车> 141. 有以下程序 #include { char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1]; printf(“%d,”,strlen(p));printf(“%s\\n”,p); } 程序运行后的输出结果是( C ) A) 9,One*World B) 9,One*Dream C) 10,One*Dream D) 10,One*World 142. 以下程序运行后,如果从键盘上输入: book <回车> book <空格><回车> 则输出的结果是( B ) #include {char a1[80],a2[80],*s1=a1, *s2=a2; gets(s1); gets(s2); if(! strcmp(s1,s2)) printf(\else printf(\ printf(\} A) *8 B) #9 C) #6 D) *9 143. 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( A) for(i=1, p=1; i<=5; i++) p*=i; B) for(i=1; i<=5;i++){ p=1; p*=i; } C) i=1; p=1; while(i<=5){ p*=i; i++;} D) i=1;p=1;do{p*=i; i++; } while(i<=5) 144. 以下程序运行后,输出结果是( B ) B ) main() { int y=18,i=0,j,a[8]; do { a[i]=y%2; i++; y=y/2; } while(y>=1); for(j=i-1;j>=0;j--) printf(\printf(\ } A) 10000 B) 10010 C) 00110 D) 10100 145. 在一个C语言程序中( B ) A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现 C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置 146. 有以下程序 #include for (k=1;k<3;k++) switch (k) {default: c+=k case 2: c++;break; case 4: c+=2;break; } printf(“%d\\n”,c); } 程序运行后的输出结果是( A ) A) 3 B) 5 C) 7 D) 9 147. 有以下程序 main() { char str[][10]={\printf(\} 程序运行后的输出结果是( B ) A) China B) Beijing C) ng D) ing 148. 下列函数定义中,会出现编译错误的是( B A) max(int x, int y, int* z) { *z = x>y?x:y; } B) int max(int x, y) { ) int z; z = x>y?x:y; return z; } C) max(int x, int y) { int z; z = x>y?x:y; return(z); } D) int max(int x, int y) { return (x>y ? x : y); } 149. 假定a和b为int型变量,则执行以下语句后b的值为( D ) a=1;b=10; do {b-=a;a++;} while(b--<0); A) 9 B) -2 C) -1 D) 8 150. 如果假设 a=2,b=3,x=3.5,y=2.5 那么下面的算术表达式的值是( B )。 (float)(a+b)/2+(int)x%(int)y A) 2 B) 3 C) 3.5 D) 2.5 151. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( #include int a[10],i=0; while(i<10) scanf(\} A) a+(i++) B) &a[i+1] C) a+i D) &a[i++] 152. 以下选项中可作为C语言合法整数的是( C ) A) 10110B B) 386 C) 0Xffa D) x2a2 153. 有以下程序 main() { int i, s=0, t[]={1,2,3,4,5,6,7,8,9}; for(i=0;i<9;i+=2) s+=*(t+i); printf(\} D )。 程序执行后的输出结果是 ( C ) A) 45 B) 20 C) 25 D) 36 三、 多项选择题: 1. 以下叙述中正确的是( BCD ) A) 用户所定义的标识符允许使用关键字 B) 用户所定义的标识符应尽量做到“见名知意” C) 用户所定义的标识符必须以字母或下划线开头 D) 用户定义的标识符中,大、小写字母代表不同标识 2. 下列定义变量的语句中正确的是( ABC ) A) int _int; B) double int_; C) char For; D) float US$; 3. 设有定义:int k=1, m=2;float f=7;,则以下选项中符合C语言语法的表达式是 ( ABD ) A) k=k>=k B) -k++ C) k%int(f) D) k<>m 4. 若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;则正确引用x数组元素的是( ACD ) A) *p B) x[5] C) *(p+1) D) *x 5. 若要求定义具有10个int型元素的一维数组a,则以下定义语句中正确的是 ( ABC ) A) #define N 10 int a[N]; B) #define n 5 int a [2*n]; C) int a[5+5]; D) int n=10,a[n]; 6. C源程序中可以表示的数制是 ( BCD ) A) 二进制 B) 八进制 C) 十进制 D) 十六进制 7. 按照C语言规定的用户标识符命名规则,能出现在标识符中的是( ACD ) A) 大写字母 B) 连接符 C) 数字字符 D) 下划线 8. 以下不合法的字符型常量是( AC ) A) '\\x13' B) '\\081' C) '\\065' D) \ 9. 以下合法的字符常量是 ( BCD ) A) '\\018' B) '\\\C) '\\\\' D) '\\0xcc' 10. 以下叙述中正确的是( ABD ) A) C语句必须以分号结束 B) 复合语句在语法上被看作一条语句 C) 空语句出现在任何位置都不会影响程序运行 D) 赋值表达式末尾加分号就构成赋值语句 11. 以下合法的赋值语句是(ABD ) A) n=(i=2,++i); B) j++; C) ++(i+1); D) x=j>0; 12. 以下能正确定义二维数组的选项是 ( AB ) A) int a[2][2] = {{1}, {2}}; B) int a[ ][2] = {1, 2, 3, 4}; C) int a[2][2] = {{1}, {2},{3}}; D) int a[2][ ] = {{1, 2}, {3, 4}}; 13. 若有定义:int aa[8];则以下表达式中能代表数组元aa[1]的地址的是 ( ABD ) A) &aa[0]+1 B) &aa[1] C) &aa[0]++ D) aa+1 14. 已有定义:int i,a[10],*p; , 则不合法的赋值语句是( AB ) A) p=100; B) p=a[5] C) p=&a[2]+2 D) p=a+2; 15. 以下能正确进行字符串赋初值的语句是( BD ) A) char str[5]=\B) char str[]=\C) char *str=\ D) char str[5]={?g',?o',?o',?d'}; 16. 已知大写字母A的ASCⅡ码是65,小写字母a的ASCⅡ码是97。以下能将变量c中的大写字母转换为对应小写字母的语句是( ABC ) A) c=(c-'A')&+'a' B) c=c+32 C) c=c-'A'+'a' D) c=('A'+c)&-'a' 17. 设有以下定义和语句 char str[20]=\p=str; 则以下叙述中错误的是(CD ) A) *p与str[0]中的值相等 B) 可以执行p++操作 C) 可以执行str++操作 D) str数组长度和p所指向的字符串长度相等 18. 对于下面①,②两个循环语句,正确的描述是(AB )。 ① while(1); ② for( ; ; ); A) ①是无限循环 B) ②是无限循环 C) ①循环一次 D) ②循环一次 19. 以下错误的函数定义形式是( BCD ) A) double fun (int x , int y) B) double fun (int x ; int y) C) double fun (int x , int y) ; D) double fun (int x , y) ; 20. 对于基本类型相同的两个指针变量之间,可以进行的运算是( ABD ) A) < B) = C) + D) - 21. 能把字符串:Hello!赋给数组b的语句是( ACD ) A) char b[10]={'H','e','l','l','o','!'}; B) char b[10];b=\ C) char b[10];strcpy(b,\D) char b[10]=\ 22. 以下能对二维数组a进行正确初始化的语句是( AD ) A) int a[2][3]={0}; B) int a[2][ ]={{1, 2}, {0}}; C) int a[2][3]={{1, 2}, {3, 4}, {5, 6}}; D) int a[ ][3]={1, 2, 3, 4, 5, 6}; 23. sizeof(double)是 CD A) 一种函数调用 B) 一个双精度型表达式 C) 一个整型表达式 D) sizeof是运算符 24. 设a为整型变量,能正确表达数学关系:10 B) a==11||a==12||a==13||a==14 C) a>10&&a<15 D) (a<10)||(a>15) 25. C语言中基本的数据类型包括( ABD ) A) 整型 B) 实型 C) 逻辑型 D) 字符型 26. 以下对一维整型数组y的错误定义是( ABC )。 A) int y(10); B) int k=10,y[k]; ) C) int k; D) #define SIZE 8 int y[SIZE]; 27. 若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;其中 0≤i≤9, 则对a数组元素正确的引用是( ABC ) A) a[p-a] B) *(&a[i]) C) p[i] D) a[10] 28. 若a、b、c、d都是int类型变量且初值为0,以下选项中正确的赋值语句是( ABD )。 A) a=b=c=100; B) d++; C) c+b; D) d=(c=22)-(b++); 29. 设有定义:char p[]={'1', '2', '3'},*q=p; ,以下能计算出一个char型数据所占字节数的表达式是( BD ) A) sizeof(p) B) sizeof(char) C) sizeof(*q) D) sizeof(p[0]) 30. 下列选项中,合法的C语言关键字是(BD ) A) VAR B) char C) integer D) default 31. 若变量x、y已正确定义并赋值,以下不正确的表达式是 ( BCD ) A) ++x,y=x-- B) x+1=y C) x=x+10=x+y D) double(x)/10 32. 以下定义语句中错误的是 (ACD ) A) int a=b=0; B) char A=65+1,b='b'; C) float a=1,*b=&a,*c=&b; D) double a=0.0;b=1.1; 33. 已定义ch为字符型变量,以下赋值语句中正确的是( CD ) A) ch='\\'; B) ch=62+3; C) ch=NULL; D) ch='\\xaa'; 34. 下列选项中,正确的赋值表达式是( BC ) A) (a+b)++ B) n1=(n2=(n3=0)) C) k=i=j D) a=b+c=1 35. 以下叙述中错误的是 ( ABC ) A) C程序中的注释只能出现在程序的开始位置和语句的后面 B) C程序书写格式严格,要求一行内只能写一个语句 C) C程序书写格式自由,一个语句可以写在多行上 D) 用C语言编写的程序只能放在一个程序文件中 36. 指出下面正确的赋值语句( CD ) A) a++ B) a==b; C) a+=b; D) a=1,b=1; 37. 下面正确的字符常量为( BD )。 A) \B) '\\\\' C) 'ab' D) 'u' 38. 若程序中定义了以下函数: double myadd(double a,double b) { return (a+b);} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中正确的说明是( BCD ) A) double myadd(double a,b); B) double myadd(double,double); C) double myadd(double b,double a); D) double myadd(double x,double y); 39. 下选项中是C语句的是( ABD )。 A) {int i; i++; printf(“%d\\n”,i);} B) ; C) a=5,c=10 D) { ; } 40. 以下叙述中错误的是( ABC ) A) 预处理命令行必须位于源文件的开头 B) 在源文件的一行上只能有一条预处理命令 C) 宏名必须用大写字母表示 D) 宏替换不占有程序的运行时间 41. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则能正确执行的语句是( CD ) A) k=*p1+*p2; B) p2=k; C) p1=p2; D) k=*p1 *(*p2); 42. 以下叙述中正确的是 ( ABD ) A) C程序必须由一个或一个以上的函数组成 B) 函数调用可以作为一个独立的语句存在 C) 若函数有多个返回值,必须通过多个return语句返回 D) 函数形参的值改变也可以传回给对应的实参 43. 设有以下定义 int a=0; int *p=&a; char c='A'; #define d 2 则下面语句中正确的是( AC ) A) a++; B) b++; C) c++; D) d++; 44. 关于形参和实参的说法中,错误的是( ABD )。 A) 形参是虚设的,所以它始终不占存储单元 B) 实参与它所对应的形参占用不同的存储单元 C) 实参与它所对应的形参占用同一个存储单元 D) 实参与它所对应的形参同名时可占用同一个存储单元 45. 若有说明:int n=2,*p=&n,*q=p;,则以下正确的赋值语句是( AB ) A) p=q; B) *p=*q; C) n=*q; D) p=n; 46. 下列错误的C语言标志符的是( ACD )。 A) Aa+ B) __123 C) a*bc D) b&cd 47. 以下叙述中正确的是(BCD ) A) 改变函数形参的值,不会改变对应实参的值 B) 函数可以返回地址值 C) 可以给指针变量赋一个整数作为地址值 D) 当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL 48. 下面正确的转义字符是( BC )。 A) '\\101' B) '\\' C) '\\xaf' D) '\\018' 49. 以下选项中,合法的字符常量是( AD ) A) '\\t' B) '\\18' C) \D) '\\xaa' 50. 下列叙述中错误的是( AC ) A) break语句只能用于switch语句 B) 在switch语句中可以不使用default C) break语句必须与switch语句中的case配对使用 D) 在switch语句中,不一定使用break语句 51. 下面不能正确进行字符串赋值操作的是( BD )。 A) char s[5]={“ABCDE”}; B) char s[5]={?A?,?B?,?C?,?D?,?E?}; C) char *s; s= “ABCDE”; D) char *s; scanf(“%s”, s); 52. t为int类型,进入下面的循环之前,t的值为0 while( t=l ) { …… } 则以下叙述中正确的是( BD ) A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 该循环为死循环 53. 下面正确的字符串常量是( BCD ) A) 'abc' B) \C) \D) \ 54. 若有说明:int a[3][4]; 则不能对a数组元素的正确引用是( ABD )。 A) a[2][4] B) a[1, 3] C) a[1][0] D) a (2)(1) 55. 以下选项中合法的标识符是 ( ABD ) A) print B) FOR C) &a D) _00 56. 以下数组定义中正确的是( ABC ) A) int a[2][3]; B) int b[][3]={0,1,2,3}; C) int c[100][100]={0}; D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 57. 下列选项中,能用作标识符的是( AC A) _1234_ B) a-2 C) int_2_ D) 2_int_ 58. 以下为无限循环的语句或语句组是 ( BD ) A) n=0; do {++n;} while (n<=0); B) n=0; while (1) {n++;} C) n=10; while (n); {n--;} D) for (n=0, i=1; ; i++) n+=i; 59. 以下不能正确定义二维数组的是 ( CD ) A) int a[2][3]; B) int a[][3]={2*3}; C) int a[][3]={}; D) int a[2][3]={{1},{2},{3,4}}; 60. 下列标识符中合法的是( BC )。 A) student-name B) _name C) name8 D) 3_DS 61. 以下选项中,合法的常量是( AD ) A) 1.234e04 B) 1.234e0.4 C) e+4 D) 1.234e-2 62. 设有如下程序段 char s[20]=\ ) p = s; 则执行p=s;语句后,以下叙述错误的是(BC ) A) 可以用*p表示s[0] B) s数组中元素的个数和p所指字符串长度相等 C) s和p都是指针变量 D) 数组s中的内容和指针变量p中的内容相同 63. 以下定义语句中错误的是(ABD ) A) char a='A' b='B'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a; 64. 以下合法的用户标识符是 ( ABD ) A) j2_KEY B) Double C) 4d D) _8_ 65. 已定义c为字符型变量,则下列语句中错误的是 (BCD ) A) c = '97'; B) c = \C) c = 97; D) c = \ 66. 若有以下程序 #include { void f(int n); f(5); } void f(int n) { printf(\ } 则以下叙述中正确的是( ABD ) A) 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f B) 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f C) 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明 D) 函数f无返回值,所以可用void将其类型定义为无值型 67. 若x和y代表整型数,以下表达式中能正确表示数学关系|x-y|<10的是( AD ) A) abs(x-y)<10 B) x-y>-10 && x-y<10 C) !(x-y)<-10 || !(y-x)>10 D) (x-y)*(x-y)<100 68. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,能表示a[1]地址的表达式是( AB ) A) p+1 B) a+1 C) a++ D) p[1] 69. 下列函数定义中,完全正确的是( ACD ) A) max(int x, int y, int* z) { *z = x>y?x:y; } B) int max(int x, y) { int z; z = x>y?x:y; return z; } C) max(int x, int y) { int z; z = x>y?x:y; return(z); } D) int max(int x, int y) { return (x>y ? x : y); } 70. 请选出可以作为C语言用户标识符的一组标识符号 ( AB ) A) void define WORD B) a3_b3 _123 IF C) for -abc case D) 2a D0 size 71. 对函数嵌套的叙述中,错误的叙述为( ACD )。 A) 函数定义可以嵌套,但函数调用不能嵌套 B) 函数定义不可以嵌套,但函数调用可以嵌套 C) 函数定义和调用均不能嵌套 D) 函数定义和调用均可以嵌套 72. 设有语句:int a=1,b=2,*p1=&a,*p2=&b; 以下不能使指针p1指向变量b的赋值语句是(ABD )。 A) p1=*p2 B) *p1=p2 C) p1=p2 D) *p1=*p2 73. 以下不能正确定义字符串的语句是( AC ) A) char str[]={'\\064'}; B) char str[]=\C) char str=''; D) char str[]=\ 74. 判断字符串s1是否大于字符串s2,不能达到目的的是( ABC ) A) if (s1>s2) B) if (strcmp (s1, s2)) C) if (strcmp (s2, s1)>0) D) if (strcmp (s1, s2)>0) 75. 若变量已正确定义并赋值,下面不符合C语言语法的表达式是( AD ) A) a:=b+1 B) a=b=c+2 C) (int)18.5%3 D) a=a+7=c+b 76. 下列语句中不符合C语言语法的赋值语句是( ACD )。 A) x=(3+b,z)=x+3; B) x=7+y,y++,z++; C) x=y+2=x+y+z; D) x=3+y++=x+3; 77. 设c1,c2均是char类型变量,则以下正确的函数调用为( AD )。 A) printf(\B) getchar(c1); C) putchar(\D) putchar(c1); 78. 以下所列的C语言常量中,正确的是( AC ) A) 0xFF B) 1.2e0.5 C) 2L D) '\\72' 79. 下列选项中错误的语句是( AC ) A) char s[8];s={\; B) char s[8]={\; C) char s[8]=\; D) char *s;s =\; 80. 若已定义的函数有返回值,则以下关于该函数调用的叙述中正确的是( ABC A) 函数调用可以作为独立的语句存在 B) 函数调用可以作为一个函数的实参 C) 函数调用可以出现在表达式中 D) 函数调用可以作为一个函数的形参 81. 已知ch是字符型变量,下面错误的赋值语句是(AD )。 A) ch=”\\”; B) ch=?\\xff?; C) ch=?123?; D) ch=?\\08?; 82. 下面各语句行中,不能正确进行赋字符串操作的语句行是( BD ) A) char st[]={\ B) char s[5]={'A','B','C','D','E'}; C) char *s; s=\D) char *s; scanf(\ 83. 以下正确的定义语句是( AB ) A) int x[][3]={{0}, {1}, {1, 2, 3}}; B) int x[4][3]={{1, 2, 3}, {1, 2, 3}, {1, 2, 3}, {1, 2, 3}}; C) int x[4][]={{1, 2, 3}, {1, 2, 3}, {1, 2, 3}, {1, 2, 3}}; D) int x[][3]={1, 2, 3, 4}; 84. 以下数组定义中正确的是( ACD ) A) int x[][3]={0}; B) int x[2][3]={{1,2},{3,4},{5,6}}; C) int x[][3]={{1,2,3},{4,5,6}}; D) int x[2][3]={1,2,3,4,5,6}; 85. 以下叙述中正确的是( ABD ) A) C语言是一种结构化程序设计语言 B) 结构化程序由顺序、分支、循环三种基本结构组成 C) 使用三种基本结构构成的程序只能解决简单问题 D) 结构化程序设计提倡模块化的设计方法 )
正在阅读:
C语言复习题05-02
人教版小学数学第十一册《比的应用》教案03-08
家居设计多少钱一个月07-24
浅谈课改中学生创新能力的培养05-29
安徽理工大学化工原理课程设计任务书分离苯-甲苯筛板精馏塔的设05-18
2015(沪教版)三年级数学上册《长方形正方形的面积》综合练习12-19
工程造价确定与控制作业08-17
小区安装新型空气能热泵供暖多少钱?新型空气能热泵供暖价格是多少?05-09
患者评估、再评估制度05-07
岗位设置及聘任01-09
- 社工091班班级趣味运动会
- 人脸识别论文(基于特征脸)陈立
- 讨论小课堂和习题解答
- 关中民俗博物院中文讲解词
- 2017-2023年中国校车行业深度分析研究报告(目录) - 图文
- 2011年12月英语四级(CET4)真题 - 图文
- 七年级(下册)数学导学案参考答案
- 服装企业经营成功之道系列之七—金牌团队
- 2007年版 湖北省建设工程施工合同
- 云计算
- 2016年春季学期三亚学院马克思主义基本原理课程论文实施办法
- 高考成语典型试题训练及详解
- 纯电动汽车电力驱动毕设 - 图文
- 名言格言人生哲学启示录
- 数据库原理与应用选择题(第二、三次)
- 设备维护保养细则2014 - 图文
- 西方经济学原理期末考试复习大纲
- 可摘局部义齿义齿复习题+参考答案
- 通风空调工程监理细则
- The Spring Festival is the most important festival for the C