C语言程序设计复习题要点_第1页
C语言程序设计复习题要点_第2页
C语言程序设计复习题要点_第3页
C语言程序设计复习题要点_第4页
C语言程序设计复习题要点_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计复习题一、判断题(本大题共 60 个小题)1. C程序执行的入口是 main()函数,所以main函数必须放在程序的开头。(B)2. 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。( B)3. 注释内容太多会影响程序的执行效率。 ( B)4. 变量要“先定义,后使用” 。( A)5. 字符常量'a与字符串常量"a"没有区别。(B)6. 数学公式 y=-6xz+52(a-5)+3写成 C 语言表达式是 y=-6*x*z+5*2*(a-5)+3 。( B)7. 数学公式 y=|x|+ab-c 写成 C 语言表达式是 y=fabs(x)+a*

2、b-c 。( A )8. 表达式 5/2+5.0/2+7%6 的值为 5.5。( A)9. 设 int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4的值为:4.5。( B)10. 设int a=12;则表达式 a/=a+a的值是0.5。( B)11. 在C语言中,运算符!比&&的优先级高。(A)12. 在 C 语言中,运算符的优先级最小的是逗号运算符。 (A)13. scanf("%d,%d",&x,&y);的输入格式:3,4< 回车 >。(A)14. 以下程序运行结果

3、是: 1,7,0(A)void main()int x=1,y=1,z=10;if(z< 0)if(y> 0) x=3;else x=5;printf(" %d," ,x);if(z=y< 0) x=3;else if(y=0) x=5;else x=7;printf(" %d,%d" ,x,z);15. 该程序运行结果是: BCother ( A)void main() char x= B ' switch(x)case A': printf( “A”); case B': printf( “ B”);case

4、 C': printf( “ C”);default: printf( “ other” );16. 下面程序段运行时输出结果是 a=2,b=8 (B ) void main()int x=1,y=1,a=2,b=7;switch(x)case 1: switch(y) case 0: a+;break;case 1: b+;break;case 2: a+;b+;break;case 3: a+;b+; printf("a=%d,b=%dn",a,b);abc ( A )17. 下面程序,当输入为: "abc?" 时,执行结果是: void m

5、ain() char c;c=getchar();while (c!='?' ) putchar(c); c=getchar();18. 该程序运行结果是: < > < > < > # ( A )void main() int i;for(i=1;i<=5;i+)if(i%2) putchar( <');else continue;putchar( > ' );putchar( #' );19. break语句可用于循环语句和if语句中。(B)20. continue 语句不可用于循环语句中。 (B)

6、21. 以下程序的功能是判断一个数是否是素数 ( A )#include<math.h>#include <stdio.h>void main( ) int m,i;scanf(" %d" ,& m);for(i=2;i< =sqrt(m);i+)if(m%i=0) break;if(i> sqrt(m) printf( “%d 是素数 " ,m);else printf(“%d 不是素数 " ,m); 22. 以下程序的功能是计算 2+4+6+8+.+98+100 。( B )void main() int

7、i,s ; for(i=2;i< =100;i+=2 ) s+=i; (注意 s 的初始值)23. 数组的下标是从 1 开始计数的。 ( B )24. 若有 int s4=1,2,3,4;,贝U ss0+2*s2-s3的值是 4。( A)25. 下面程序段运行时输出结果是: 0 15 24 (A)void main() int i=0,a10; for(i=0;i< =9;i+) ai=i*3; printf(" %d %d %d" ,a0,a5,a8); 26. 下面程序段运行时输出结果是: 1 0 3 3 4 5 6 6 (B)void main()共 21

8、 页,第 3 页 int a8=1,0,1,0,1,0,1,0,i;for(i=2;i< 8;i+) ai+= ai-1 + ai-2;for(i=0;i< 8;i+) printf( “ %d ” ,ai); 27. 以下程序的功能是:将一个数组中的元素按逆序重新存放并打印交换后的数组。( A )#define N 7#include < stdio.h>void main() static int aN=12,9,16,5,7,2,1,k,s;for (k=0;k< N/2;k+) s=ak; ak=aN-1-k; aN-1-k =s; printf(&quo

9、t; n 交换后的数组 :n" ); for(k=0;k< N;k+)printf(" %4d" ,ak); 28. 若有定义 int a35; 则排列在数组中的第 9 个元素是 a13 。( A)29. 下面程序段运行时输出结果是:456 (B )void main() int a3= 1,2,3,4,5,6,7,8,9,i,k=2; for(i=0;i< 3;i+) printf(“%d”,aki); 30. 下面程序段运行时输出结果是:"AAAA" ( B)void main() char ch35= "AAAA&q

10、uot; ,"BBB" ,"CC" ; printf(" "%s" " ,ch1); 31. strlen("How are youn") 的值是 12 。( A)32. C 语言中字符串结束的标志是 '0' (A )33. strcmp("how","How") 的值 >0 。( A)34. 以下程序的功能是:字符串a连接到字符串b,并显示字符串b。(B)void main() char a200= ” how are you. ”

11、, b200; int i=0; while(ai !=' 0' ) bi=ai; i+; bi=' 0' ;printf( “新字符串是 %s”, b); 35. 当运行以下程序时 ,从键盘输入 :AAAaaaAAA Abcd234abc AAaa ,运行结果为: AaaAAAaaa 。 void main() char s80, c='a'int i=0;scanf("%s",s); (注意 scanf 遇到空格的处理,与 gets 的不同) while(si+!='0')if(si = c) si=si-

12、32; else if(si=c-32) si=si+32;puts(s); (A )36. 下面程序段运行时输出结果是: 6 ( B)void main() int *p,a=5,b=1; p=& a; *p=10; a=*p+b; printf(“%d ”,a); 37. 下面程序段运行时输出结果是: 135 (A )void main() int a23=1,3,5,7,9,11; int m,*ptr;ptr=& a01;m=(*ptr)*(*(ptr+1)*(*(ptr+3);printf(" %d" ,m); 38. 下面程序段运行时输出结果是:

13、 -5, -12, -7(A)void sub(int x,int y,int *z) *z=y-x; void main()int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c); printf("%4d,%4d,%4dn",a,b,c);39. 下面程序段运行时输出结果是: 4 ( A )fun(char *s) char *p=s;while (*p) p+;return(p-s); char *str="abcd"void main()共 21 页,第 5 页int i;i=fun(s

14、tr);printf("%d",i);40. int *f(); 表示函数返回一个整型指针。 ( A)41. 下面程序段运行时输出结果是: 0,0 1,3 (B)f() int x=0; static int y=0; printf(" %d,%d " ,x,y); x+; y=y+3; void main() int i; for(i=0;i< 2;i+) f(); 42. 下面程序段运行时输出结果是 2 ( A)int f(int n) int s; if(n=1|n=2) s=1; else s=n-f(n-1); return s; voi

15、d main() printf( “ %d ” ,f(3);43. 下面程序段运行时输出结果是 7 ( B)void fun(int x,int y,int z) z=x+y;void main() int a=3; fun(5,2,a); printf("%d",a); 44. 在定义函数时,函数名后面的括号中的变量名称为实参。(B )45. 为了保证被调用函数不返回任何值,其函数定义的类型应为void 。 (A)46. 若定义的函数没有参数,则函数名后的圆括号可以省略。(B)47. 函数的实参和形参可以是相同的名字。 ( A)48. 函数调用中,形参与实参的类型和个数必

16、须保持一致。( A)49. 函数的函数体可以是空语句。 (A)50. 在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。(A)51. 在函数内定义的变量是局部变量, 在函数外定义的变量是外部变量。 外部变量是全局变量。 (A)52. 变量的存储类别有 自动型 、 静态型 、 寄存器型 、和 外部类型 共 4种,它们分别用 auto 、 static 、 register 、 extern 标识。( A)53. 对 10 个数进行从小到大排序。要求排序在函数 sort 内完成,用起泡算法。 main 函数内进行数据输入、调用排序函数sort、并输出排序后的数据。判断以下程

17、序是否正确:(B)void sort(int a,int n) int i,j,k;for ( i=0; i< n-1; i+) for ( j=0; j< n-1-i; j+) if (aj> aj+1) k=aj ; aj=aj+1 ; aj+1=k; void mai n() int a10, i, j, k;for ( i=0 ; i< 10 ; i+) scanf(" %d" , & ai) ; printf(” n");sort(a10,10);(注意数组作函数参数)for (i=0; i< 10; i+) pri

18、ntf(“ %d," , ai) ;54. 预处理命令#inelude的作用是文件包含。55. 结构体的成员不能是结构体变量。(A)56. "按位与”运算指两个运算数相应的二进制位中只要有一个为1,则该位结果值为1,比如0|0=0,1|0=1。( B)57. C语言库函数fgets(str,n,fp)的功能是从文件fp中读取n个字符串存入str指向的内存。(B)58. 函数rewind的作用是使位置指针自动移至下一个字符位置。(B)59. 函数fseek的作用是使位置指针移至第一个字符位置。(B)60. C语言中以w+方式打开文件后,可执行的文件操作是可任意读写。(B)二、

19、单项选择题(本大题共45个小题)61. 一个C语言程序总是从_B 开始执行。A.主过程 B. 主函数 C. 子程序 D.主程序62. 下面四个选项中,均是不合法的用户标识符的选项是C。A . BA 、x_0、doB . float、1a0、_YC . x-y 、goto、123D . _123、tmp、CHAR63.C语言中,int型数据在内存中的存储形式是D。A. ASCII码B. 原码C. 反码D.补码64.下列属于C语言合法的字符常量的是C。A. ' 85B.“n ”C.'t 'D.“ 065.下面正确的字符串常量是C。A .'a'B.'3

20、76'C ."n"D .37666.不合法的常量是:D。A. 2'B.""C.3'D. 483'67.字符串""123"" 的长度是 _BA. 11B. 7C. 5 D. 368.存储字符串"'abc376"需要的字节数是 DA .11B .1369. 表达式'A'+4*25.0-'b'A . 67B . 67.0C . ) 6 D . ) 7的正确结果是 _B。C .不确定 D . 67L70. 下面哪个式子在 a为奇数时

21、结果为假CA .a%2=1 B . !(a%2=0)C . ! (a%2 D . a%271. 若x是int型变量,y是float型变量,所用的scanf调用语句格式为scanf("x=%d,%f",&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应是:AA. x=10,66.6< 回车 > B. 10 66.6< 回车 >C. 10< 回车 >66.6< 回车 > D. x=10< 回车 >66.6< 回车 >72. w=4,x=3,y=2,z=1,则条件表达式 w&

22、lt;x?w:y<z?y:z 的结果为 _DA. 4 B. 3 C. 2 D. 173. 能表示条件 OW x w 100的表达式是 D 。共21页,第11页A. 0<=x<=100B . x>=0,x<=100C . 0 W x< 100D . x>=0&&x<=100B . ch>='0'&&ch<='9'D. ch>='0'|ch<=9D 。B.通过编译,但不能连接输出kkkkB。74.判断char型变量ch为数字的正确表达式是 _BA

23、. ch>="0"&&ch<="9"C . '0' w chw '9'75. 分析以下程序,下列说法正确的是void mai n()int x=0,a=0,b=0;if(x=a+b) pri ntf("ttttn");else prin tf("kkkkn");A. 有语法错,不能通过编译C.输出 ttttD.76. 程序段如下,则以下说法中正确的是:int k=-5;A. while循环执行5次B.循环体语句一次也不执行循环体语句执行一次while(k=

24、O) k=k+1;C.循环是无限循环D.77.下述for循环语句 B 。int i,k;for(i=0,k=-1;k=2;i+,k+) printf("* * * *");A.判断循环结束的条件非法B.是无限循环C.只循环一次D.一次也不循环78.下列程序段执行后 k值为_Aint k=0,i,j;for(i=0;i<5;i+)for(j=0;j<3;j+)k=k+1 ;A. 15 B. 3 C. 5 D. 879.以下关于数组的描述正确的是C 。A. 数组的大小是固定的,但可以有不同的类型的数组元素。B. 数组的大小是可变的,但所有数组元素的类型必须相同。C.

25、 数组的大小是固定的,但所有数组元素的类型必须相同。D. 数组的大小是可变的,但可以有不同的类型的数组元素。80. 在c语言中引用数组元素时,其数组下标的数据类型允许是_CA.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式81. 对以下说明语句的正确理解是_B。int a10=6,7,8,9,10;A. 将5个初值依次赋给 a1至a5B. 将5个初值依次赋给 a0至a4C. 将5个初值依次赋给 a6至a10D.因为数组长度与初值的个数不相同,所以此语句不正确82.在执行 int a3=1,2,3,4,5,6;语句后,a11的值是 DA. 4B. 1C. 2D. 583.对于

26、类型相同的两个指针变量之间,不能进行的运算是A. < B. = C. + D.-84.以下不能正确赋值的是 A 。A. chars110;s仁"test"B. char s2=C. char s320= "test" D. char s44=t',''''''''''''''85.对字符串"Boy"进行完整赋值的操作是_BA. char s3 = 'B','o','y&#

27、39;B. char s = "Boy"C. char s3 = "Boy"86.在C语言程序中,以下描述正确的是D.char s3; s="Boy"B。A. 函数的定义可以嵌套,但函数的调用不可以嵌套B. 函数的定义不可以嵌套,但函数的调用可以嵌套C. 函数的定义和函数的调用均不可以嵌套D. 函数的定义和函数的调用均可以嵌套87.以下函数调用语句中实参的个数为A<共21页,第15页实参与其对应的形参各自占用独立的内存单元 实参与其对应的形参共同占用一个内存单元 只有当实参和形参同名时才占用同一个内存单元 形参是虚拟的,不占用内

28、存单元exce(v1,v2),(v3,v4,v5),v6);A. 3B.488. 下述函数定义形式正确的是A. int f(int x; int y)C. i nt f(int x, i nt y)89. 关于函数参数,说法正确的是A.B.C.D.C. 5D.6C。B. i nt f(int x,y)D. i nt f(x,y: int)_确定。B.调用函数的类型D.被调用函数的类型90. 一个函数的返回值由_DA. return语句中的表达式C.系统默认的类型91.当调用函数时,实参是一个数组名,则向函数传送的是B.A.数组的长度B. 数组的首地址C. 数组每一个元素的地址D. 数组每个元素

29、中的值92. 若有以下说明:int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10 , *p=a ;则数值为3的表达式是 C 。A. *p+3 B. *(p+3) C. *p+=2 D. p+293. 下面程序用于输出数组中的最大值,则程序段中空白处应是void mai n() int a5=3,2,5,6,4,*p,*s;for(p=a,s=a;p_a<10;p+)if( ) s=p;printf( “ max is %d ” ,*s);A. *s<*p B. s<p C.as<ap D. p-a>p-s94. 设有如下的程序段:char s

30、tr =“ china" ;char *ptr ;ptr=str ;执行上面的程序段后,*( ptr+5 )的值为_B。的地址A. 'o' B. '0' C.不确定的值 D. 'o'95. 以下程序输出结果为 _A。main () char *str="zhao","qia n","su n","li"int i;for (i=0;i<4;i+)prin tf("%c",striO);A. zqsl B. zhaoqiansunli

31、 C.zhao D. 以上都不对96. 若x=5,y=5,则x&y的结果是D.A. 0 B. 2 C. 3D. 597. 在位运算中,操作数每左移两位,则结果相当于DA.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以498. 当用户定义一个结构体变量时,系统分配给它的内存为各成员所需内存的_AA.和 B.最大值C.不确定D.无关99. 若有以下结构体定义,则正确的引用或定义是B。struct example int x;i nt y;v1;C. struct v2;v2.x=10;D. struct example v2=10;100.设有如下定义:struct sk in

32、t a;float b ; data , *p ;若有 p=& data ;,则对 data 中的 a 域A. example.x=10;B. example v2.x=10;的正确引用是 DC.p-> data.a D.p.data.aA. ( *p) .data.a B. ( *p) .a101. C语言可以处理的文件类型是_BA.文本文件和数据文件B.文本文件和二进制文件102.C.数据文件和二进制文件D.数据代码文件如果要打开C盘file文件夹下的abc.dat文件,fopen函数中第一个参数应为A. ufileabc.datB. c:fileabc.dat int i,

33、sum=0;共21页,第#页C. "c:fileabc.dat" D. "c:fileabc.dat"103. 若想对文本文件只进行读操作,打开此文件的方式为AIIB."W"C."a"D."r+"104. 在C程序中,可把整型数以二进制形式存放到文件中的函数是CA.fprintf 函数 B.fread 函数 C.fwrite 函数 D.fputc 函数105. 打开文件,操作完毕后用C函数关闭它。A.fope n B.ope n C.fclose D.close三、编程题(本大题共16个小题)1

34、06.求200到800之间所有能被3整除但不能被7整除的数的和。答:#in clude <stdio.h> void mai n()for(i=200;i<=800;i+)if(i%3=0&&i%7!=0)sum=sum+i;printf("The sum is: %dn",sum);107. 输入一百分制成绩,要求输出成绩等级 A, B' ,'C', D', E'°90分及以上为 A' ,80 -89 分为B', 70-79分为C', 60-69分为D',

35、60分以下为E'。答:#include <stdio.h>void main( )int score,temp ;char grade;scanf("%d",&score) ;if (score>100)|(score<0)printf("ndata errorn");elseif(score= =100) temp=9;else temp=score/10;switch (temp)case 9 : grade='A'break;case 8 : grade='B'break;ca

36、se 7: grade='C'break;case 6: grade='D' ; break;case 5:case 4:case 2: case 1:case 0: grade='E' ;printf("%d,%cn", score,grade);108. 输入任意十个数,打印出它们中的最大数、最小数。 答:#include <stdio.h>void main( )int i, k,min,max; scanf("%d",&k);i=1; max=min=k; for(i=2;i&l

37、t;=10;i+) scanf("%d",&k); if(max<k) max=k; if(min>k) min=k;printf(" 最大 :%dn",max); printf(" 最小 :%dn", min);109. 输入一行字符,统计其中的英文字母、数字、空格和其他字符个数。 答:#include <stdio.h>void main( )int n1,n2,n3,n4;共 21 页,第 # 页char c;n1=n2=n3=n4=0; c=getchar(); while(c!= '

38、n') if(c>= 'a'&&c<='z' | c>= 'A'&&c<=' Z' ) n1+; else if(c>= ' 0' &&c<='9') n2+;else if(c= ' ' ) n3+;else n4+; c=getchar(); /why?printf("%d %d %d %dn",n1,n2,n3,n4);110.求 1 ! +2 ! +3 ! + +

39、100 !。答:#include <stdio.h>void main()int i;double t,s;i=1;t=i; s=t; for(i=2;i<=100;i+) t=t*i s+=t; printf("%ld ",s);111. 打印如下 7行 7列的左直角三角形:答:#in elude <stdio.h> void mai n() int i,j;for (i=1;i<=7;i+) for (j=1;j<=i;j+) printf (" *");prin tf("n");其各位数

40、字立方和等于该数112. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数, 本身。例如153是一个水仙花数,因为 153 = 13 53 33。答:方法1:#in elude <stdio.h> void mai n() in t i,k1,k2,k3;for (i=100;i<=999;i+) k仁 i%10; k2=i/10%10; k3=i/100;if (i=k1*k1*k1+k2*k2*k2+k3*k3*k3)prin tf("%d=%dA3+%dA3+%dA3n",i,k1,k2,k3);方法2#in elude <stdio.

41、h> void mai n()for (k1=1;k1<=9;k1+)for (k2=0;k2<=9;k2+)for (k3=0;k3<=9;k3+) i=k1*100+k2*10+k3;if (i=k1*k1*k1+k2*k2*k2+k3*k3*k3)prin tf("%d=%dA3+%dA3+%dA3n",i,k1,k2,k3);113. 有 10 个地区的面积,要求对它们按由小到大的顺序排列(采用起泡法排序) 。答:#include <stdio.h>void main( )int a10; int i,j,t;printf(&qu

42、ot;input 10 numbers :n");for (i=0;i<10;i+) scanf("%d",&ai);printf("n");for(j=0;j<9;j+)for(i=0;i<9-j;i+)if (ai>ai+1)t=ai;ai=ai+1;ai+1=t;printf("the sorted numbers :n");for(i=0;i<10;i+) printf("%d ",ai);printf("n");114. 已知 5 个整数

43、,已经由大到小排好序,现输入一个数,将其插入到该数组适当位置,使其仍然 有序。答:#include <stdio.h>void main( )共 21 页,第 21 页int a6=20,15,12,8,6;int i,k=9;if(k<=a4) a5=k;elsefor (i=4;i>=0;i-) if(k>ai) ai+1=ai; else break;ai+1=k;for (i=0;i<6;i+)printf("%d ",ai);115. 有一行文字,要求删去某一个字符。此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入

44、(如输入 a 表示要删去所有的 a 字符)。答:#include <stdio.h> void main()char str1100,str2100;char ch;int i=0,k=0;while (str1i=getchar()!=' n ' ) i+;str1i='0'scanf("%c",&ch);for (i=0;str1i!='0 'i+)if (str1i!=ch) str2k=str1i; k+; str2k='0'printf("n%sn",str2)

45、;116. 有一个3 X 4的矩阵,编程求出其中值最大的那个元素的值,以及其所在的行号和列号。答:#include <stdio.h>void main() int a34,i,j,max,x,y;for (i=0;i<3;i+)for(j=0;j<4;j+)scanf(“ %d” ,&aij);max=a00;x=y=0; for (i=0;i<3;i+)for(j=0;j<4;j+)if (max<aij) max=aij;x=i;y=j;117. 任意输入 10 个学生 4 门课成绩,求每门课的最高分,放入一个一维数组中,并输出每个学生成 绩和每门课的最高分。答:#include <stdio.h>void main() int a410,b4,i,j;for(i=0;i<4;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论