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

下载本文档

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

文档简介

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*b-c 。 (

2、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. 以下程序运行结果是: 1,7,0 ( a )void main()

3、int x=1,y=1,z=10;if(z 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 c :printf(“ c”);default: printf( “ other” );16. 下面程序段运行时输出结果是a=2,b=8 (b )void m

4、ain()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);17. 下面程序,当输入为: abc? 时,执行结果是: abc ( a )void main() char c;c=getchar();while (c!=? ) putchar(c); c=getchar();18. 该程序运行结果是:void main() int i;for(i=1;i=5;i+)if(i

5、%2) putchar( );putchar( # );19. break 语句可用于循环语句和 if 语句中。 (b )20. continue 语句不可用于循环语句中。 ( b )21. 以下程序的功能是判断一个数是否是素数( a )#include#include void main( ) int m,i;scanf( %d ,& m);for(i=2;i sqrt(m) printf( “ %d 是素数 ,m);else printf( “ %d 不是素数 ,m); 22. 以下程序的功能是计算2+4+6+8+.+98+100 。 ( b )void main() int i,s ;

6、for(i=2;i =100;i+=2 ) s+=i; (注意 s 的初始值)23. 数组的下标是从1 开始计数的。 ( b )24. 若有 int s4=1,2,3,4; ,则 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() int a8=1,0,1,0,1,0,1,0,i;f

7、or(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 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( n 交换后的数组 :n ); for(k=0;k n;k+)printf( %4d ,ak); 28. 若有定义 int a35;

8、 则排列在数组中的第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;i0 。 ( a)34. 以下程序的功能是:字符串a连接到字符串b,并显示字符串b。(b)void main() char a200= ” how are you. ” , b200; int i=0;while(ai != 0 ) bi=ai; i+; bi= 0 ;printf( “新字符串是%s ” , b); 35. 当运行以下程序时,从键盘输入:aaaaaaaaa abcd2

9、34abc aaaa ,运行结果为: aaaaaaaaa 。void main() char s80, c=a;int i=0;scanf(%s,s); (注意scanf遇到空格的处理,与 gets的不同)while(si+!=0)if(si = c) si=si-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 ma

10、in() int a23=1,3,5,7,9,11; int m,*ptr;ptr=& a01;m=(*ptr)*(*(ptr+1)*(*(ptr+3);printf( %d ,m); 38. 下面程序段运行时输出结果是: -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;wh

11、ile (*p) p+;return(p-s);void main() char *str=abcd;int i;i=fun(str);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)

12、s=1; else s=n-f(n-1); return s; void 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. 函数的实参和形参可以是相同的名字。

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

14、 函数内进行数据输入、调用排序函数sort、并输出排序后的数据。判断以下程序是否正确:(b)void sort(int a,int n) int i,j,k;for ( i=0; i n-1; i+) for ( j=0; j aj+1) k=aj ; aj=aj+1 ; aj+1=k; void main() 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+) printf( d, , ai) ; 54. 预处理命

15、令#include的作用是文件包含 。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)二、单项选择题(本大题共45个小题)61. 一个c语言程序总是从b 开始执行

16、。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. 85, b.n c. t d. “0 ”65. 下面正确的字符串常量是c。a .a b . 376c .n d .37666. 不合法的常量是:d。a. 2b. c. 3d. 48367. 字符串123 的

17、长度是 b。共21页,第9页a. 11b. 7c. 5 d. 368. 存储字符串abc376需要的字节数是 d。a .11 b .13 c . ) 6 d . ) 769. 表达式a+4*25.0-b的正确结果是 b。a . 67 b . 67.0 c .不确定 d . 67l70. 下面哪个式子在 a为奇数时结果为假c。a.a%2=1 b. !(a%2=0) c . ! (a%2d. a%271. 若x是int型变量,y是float型变量,所用的scanf调用语句格式为scanf(x=%d,%f,&x,&y); 则为了将数据10和66.6分别赋给x和y,正确的输入应是a. x=10,66.

18、6 b. 10 66.6 回车c. 1066.6回车d. x=1066.6回车72. w=4,x=3,y=2,z=1,则条件表达式 wx?w:yz?y:z 的结果为 da. 4 b. 3 c. 2 d. 173. 能表示条件 0wxw100的表达式是da.0=x=0,x=100c . 0 x=0&x=0&ch=0|ch=0&ch=9c . 0& ch 975. 分析以下程序,下列说法正确的是void main()int x=0,a=0,b=0;if(x=a+b) printf(ttttn);else printf(kkkkn);a.有语法错,不能通过编译c.输出 ttttd.76. 程序段如下

19、,则以下说法中正确的是:int k=-5;while(k=0)k=k+1;a. while循环执行5次 b.循环体语句一次也不执行c.循环是无限循环d.循环体语句执行一次77. 下述for循环语句b 。int i,k;for(i=0,k=-1;k=2;i+,k+) printf(* * * *);a.判断循环结束的条件非法b.是无限循环c.只循环一次d.一次也不循环78. 下列程序段执行后k值为 a。int k=0,i,j;for(i=0;i5;i+)for(j=0;j3;j+)k=k+1 ;a. 15 b. 3c.5 d. 879. 以下关于数组的描述正确的是c。a.数组的大小是固定的,但可

20、以有不同的类型的数组元素。b.数组的大小是可变的,但所有数组元素的类型必须相同。c.数组的大小是固定的,但所有数组元素的类型必须相同。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.在执行 inta口3=1,2,3,4,5,

21、6;语句后,a11的值是 da. 4b. 1c. 2d. 583.对于类型相同的两个指针变量之间,不能进行的运算是84.85.86.87.88.89.90.91.a. b. = c. + d.-以下不能正确赋值的是aa. char s110;s1=test; b. char s2=c. char s320= test;d. char s44=对字符串boy进行完整赋值的操作是ba. char s3 = b,o,y;c. char s3 = boy;在c语言程序中,以下描述正确的是a.b.c.d.t, e, s, t t , e, s, tb. char s = boy;d.char s3; s

22、=boy;函数的定义可以嵌套,但函数的调用不可以嵌套函数的定义不可以嵌套,但函数的调用可以嵌套函数的定义和函数的调用均不可以嵌套函数的定义和函数的调用均可以嵌套以下函数调用语句中实参的个数为exce(v1,v2),(v3,v4,v5),v6);a. 3b. 4下述函数定义形式正确的是a. int f(int x; int y)c. int f(int x, int y)关于函数参数,说法正确的是a.b.c.d.c. 5d. 6b. int f(int x,y)d. int f(x,y: int)实参与其对应的形参各自占用独立的内存单元实参与其对应的形参共同占用一个内存单元只有当实参和形参同名时

23、才占用同一个内存单元形参是虚拟的,不占用内存单元一个函数的返回值由确定。a. return语句中的表达式c.系统默认的类型b.调用函数的类型d.被调用函数的类型当调用函数时,实参是一个数组名,则向函数传送的是a.数组的长度b.数组的首地址c.数组每一个元素的地址d.数组每个元素中的值共21页,第13页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 .下面程序用于输出数组中的最大值,则程序段中空白处应是avoid main() int

24、 a5=3,2,5,6,4,*p,*s;for(p=a,s=a;p-a10;p+)if( ) s=p;printf( max is %d ” ,*s);a. *s*p b. sp c.asp-s94 .设有如下的程序段:char str = china ;char *ptr ;ptr=str ;执行上面的程序段后,* (ptr+5 )的值为 b 。a. o b. 0 c.不确定的值 d. o 的地址95 .以下程序输出结果为 a。main() char *str尸zhao,qian,sun,li;int i;for (i=0;i data.a d.p.data.a101 . c语言可以处理的文

25、件类型是b。a.文本文件和数据文件b.文本文件和二进制文件c.数据文件和二进制文件d.数据代码文件102 .如果要打开 c盘file 文件夹下的abc.dat文件,fopen函数中第一个参数应为d 。a. cfileabc.datb. c:fileabc.datc. c:fileabc.dat d. c:fileabc.dat”103 .若想对文本文件只进行读操作,打开此文件的方式为a 。a rb.wc.ad.r+104 . 在c程序中,可把整型数以二进制形式存放到文件中的函数是c。a.fprintf 函数 b.fread 函数 c.fwrite 函数 d.fputc 函数105 .打开文件,

26、操作完毕后用 c函数关闭它。a.fopen b.open c.fclose d.close三、编程题(本大题共 16个小题)106 .求200到800之间所有能被3整除但不能被7整除的数的和。答:#include void main() int i,sum=0;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,60 分以下为e。答:#in

27、clude void main( )int score,temp ;char grade;scanf(%d,&score) ;if (score100)|(score0)printf(ndata errorn);elseif(score= =100) temp=9;else temp=score/10;switch (temp)case 9 : grade=a;break;case 8 : grade=b;break;case 7: grade=c;break;case 6: grade=d ; break;case 5:case 4: case 3:case 2:case 1:case 0:

28、 grade=e ;printf(%d,%cn, score,grade);108 . 输入任意十个数,打印出它们中的最大数、最小数。答:#include void main( )int i, k,min,max;scanf(%d,&k);i=1;max=min=k;for(i=2;i=10;i+)scanf(%d,&k);if(maxk) min=k;printf(最大:%dn,max);printf(最小:%dn, min);109 . 输入一行字符,统计其中的英文字母、数字、空格和其他字符个数。答:#include void main( )int n1,n2,n3,n4;共 21 页,第

29、 15 页char c;n1=n2=n3=n4=0;c=getchar();while(c!= n)(if(c= a &c= a &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! + -+100!o答:#include 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列的

30、左直角三角形:答:#include void main() int i,j;for (i=1;i=7;i+) for (j=1产i;j+) printf ( *);printf(n);其各位数字立方和等于该数112 .打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,333本身。例如153是一个水仙花数,因为 153 = 13+53 +33。答:方法1:#include void main() int i,k1,k2,k3;for (i=100;i=999;i+) k1=i%10; k2=i/10%10; k3=i/100;if (i=k1*k1*k1+k2*k2*k2+k3*k3*k

31、3)printf(%d=%da3+%da3+%da3n,i,k1,k2,k3);方法2#include void main() int k1,k2,k3,i;共21页,第17页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)printf(%d=%da3+%da3+%da3n,i,k1,k2,k3);113. 有 10 个地区的面积,要求对它们按由小到大的顺序排列(采用起泡法排序) 。答:#include void main(

32、)int a10; int i,j,t;printf(input 10 numbers :n);for (i=0;i10;i+) scanf(%d,&ai);printf(n);for(j=0;j9;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;printf(the sorted numbers :n);for(i=0;i10;i+) printf(%d ,ai);printf(n);114. 已知 5 个整数,已经由大到小排好序,现输入一个数,将其插入到该数组适当位置,使其仍然有序。答:#include void main( )int a6=20,15,12,8,

33、6;int i,k=9;if(k=0;i-)if(kai)ai+1=ai;else break;ai+1=k;for (i=0;i6;i+)printf(%d ,ai);115. 有一行文字,要求删去某一个字符。此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入(如输入 a 表示要删去所有的 a 字符) 。答:#include 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+)

34、if (str1i!=ch) str2k=str1i; k+; str2k=0;printf(n%sn,str2);116 .有一个3x4的矩阵,编程求出其中值最大的那个元素的值,以及其所在的行号和列号。答:#include void main() int a34,i,j,max,x,y;for (i=0;i3;i+)for(j=0;j4;j+)scanf(“ %d” ,&aij);max=a00;x=y=0;for (i=0;i3;i+)for(j=0;j4;j+)if (maxaij) max=aij;x=i;y=j;117 . 任意输入 10 个学生 4 门课成绩,求每门课的最高分,放入一个一维数组中,并输出每个学生成绩和每门课的最高分。答:#include void main() int a410,b4,i,j;for(i=0;i4;i+)for(j=0;j10;j+)scanf(%d,&aij);for(i=0;i4;i+) bi=ai0;for(j=1;j10;j+)if(biaij) bi=aij;for(i=0;i4;i+) for(j=0;j10;j+)print

温馨提示

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

评论

0/150

提交评论