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

下载本文档

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

文档简介

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。(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() 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 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);17. 下面程序,当输入为:abc? 时,执行结果是:abc (A)void main() 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(); 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 ; 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; 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 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;则排列在数组中的第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 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-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. 下面程序段运行时输出结果是: -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);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) 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. 函数的实参和形参可以是相同的名字。(A)48. 函数调用中,形参与实参的类型和个数必须保持一致。(A)49. 函数的函数体可以是空语句。(A)50. 在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。(A)51. 在函数内定义的变量是局部变量,在函数外定义的变量是外部变量。外部变量是全局变量。(A)52. 变量的存储类别有 自动型 、 静态型 、 寄存器型 、和 外部类型 共4种,它们分别用 auto 、 static 、 register 、 extern 标识。(A)53. 对10个数进行从小到大排序。要求排序在函数sort内完成,用起泡算法。main函数内进行数据输入、调用排序函数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. 预处理命令#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 开始执行。A. 主过程 B. 主函数 C. 子程序 D.主程序 62. 下面四个选项中,均是不合法的用户标识符的选项是 C 。. BA 、x_0、do . float、1a0、_Y. x-y、goto、123 . _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 . 376 .n .37666. 不合法的常量是: D 。A. 2B. C. 3D. 48367. 字符串123的长度是 B 。A. 11 B. 7 C. 5 D. 368. 存储字符串abc376需要的字节数是 D 。.11 .13 .)6 .)769. 表达式A+4*25.0-b的正确结果是 B 。. 67 . 67.0 . 不确定 . 67L70. 下面哪个式子在a为奇数时结果为假 C 。.a%2=1 . !(a%2=0) . !(a%2) . a%271. 若x是int型变量,y是float型变量,所用的scanf调用语句格式为: scanf(x=%d,%f,&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应是: A 。A. x=10,66.6 B. 10 66.6C. 1066.6 D. x=1066.672. w=4,x=3,y=2,z=1,则条件表达式wx?w:yz?y:z的结果为 D 。A. 4 B. 3 C. 2 D. 173. 能表示条件0x100的表达式是 D 。. 0=x=0,x=0&x=0&ch=0&ch=0|ch=975. 分析以下程序, 下列说法正确的是 D 。void main() int x=0,a=0,b=0;if(x=a+b) printf(ttttn);else printf(kkkkn);A. 有语法错,不能通过编译 B. 通过编译,但不能连接C. 输出tttt D. 输出kkkk76. 程序段如下,则以下说法中正确的是: B 。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. 3 C. 5 D. 879. 以下关于数组的描述正确的是 C 。A. 数组的大小是固定的,但可以有不同的类型的数组元素。B. 数组的大小是可变的,但所有数组元素的类型必须相同。C. 数组的大小是固定的,但所有数组元素的类型必须相同。D. 数组的大小是可变的,但可以有不同的类型的数组元素。80. 在c语言中引用数组元素时,其数组下标的数据类型允许是 C 。A整型常量 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的值是 D 。A. 4 B. 1 C. 2 D. 583. 对于类型相同的两个指针变量之间,不能进行的运算是 C 。A. B. =C. +D. -84. 以下不能正确赋值的是 A 。A. char s110;s1=test; B. char s2=t,e,s,tC. char s320= test; D. char s44= t,e,s,t85. 对字符串Boy进行完整赋值的操作是 B 。Achar s3 = B,o,y; B. char s = Boy;Cchar s3 = Boy;D.char s3; s=Boy;86. 在C语言程序中,以下描述正确的是 B 。A. 函数的定义可以嵌套,但函数的调用不可以嵌套B. 函数的定义不可以嵌套,但函数的调用可以嵌套C. 函数的定义和函数的调用均不可以嵌套D. 函数的定义和函数的调用均可以嵌套87. 以下函数调用语句中实参的个数为 A 。exce(v1,v2),(v3,v4,v5),v6);A. 3B. 4C. 5D. 688. 下述函数定义形式正确的是 C 。A. int f(int x; int y)B. int f(int x,y)C. int f(int x, int y)D. int f(x,y: int)89. 关于函数参数,说法正确的是 A 。A. 实参与其对应的形参各自占用独立的内存单元B. 实参与其对应的形参共同占用一个内存单元C. 只有当实参和形参同名时才占用同一个内存单元D. 形参是虚拟的,不占用内存单元 90. 一个函数的返回值由 D 确定。A. return语句中的表达式B. 调用函数的类型C. 系统默认的类型D. 被调用函数的类型91. 当调用函数时,实参是一个数组名,则向函数传送的是_B_。A数组的长度 B.数组的首地址C数组每一个元素的地址 D.数组每个元素中的值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. 下面程序用于输出数组中的最大值,则程序段中空白处应是 A 。void main() int 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.aD.p.data.a101. C语言可以处理的文件类型是 B 。A. 文本文件和数据文件 B. 文本文件和二进制文件C. 数据文件和二进制文件 D. 数据代码文件102. 如果要打开C盘file文件夹下的abc.dat文件,fopen函数中第一个参数应为 D 。A. c:fileabc.datB. c:fileabc.datC. c:fileabc.dat D. c:fileabc.dat103. 若想对文本文件只进行读操作,打开此文件的方式为 A 。ArB.WC.aD.r+104. 在C程序中,可把整型数以二进制形式存放到文件中的函数是 C 。A.fprintf函数 B.fread函数 C.fwrite函数 D.fputc函数105. 打开文件,操作完毕后用 C 函数关闭它。A.fopenB.openC.fcloseD.close三、 编程题(本大题共1016个小题)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(TheVsumVis: %dn,sum);107. 输入一百分制成绩,要求输出成绩等级A,B,C,D,E。90分及以上为A ,80-89分为B,70-79分为C,60-69分为D,60分以下为E。 答:#include void main( ) int score,temp; char grade; scanf(%d,&score); if (score100)|(score0) printf(ndata errorn); else if(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: 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;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!。答:#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列的左直角三角形:答:#include void main( ) int i,j; for (i=1;i=7;i+) for (j=1;j=i;j+) printf ( *); printf(n); 112. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数, 其各位数字立方和等于该数本身。例如 153是一个水仙花数,因为 153。答:方法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*k3) printf(%d=%d3+%d3+%d3n,i,k1,k2,k3); 方 法 2#include void main( ) int k1,k2,k3,i; 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=%d3+%d3+%d3n,i,k1,k2,k3); 有10个地区的面积,要求对它们按由小到大的顺序排列(采用起泡法排序)。113. 有10个地区的面积,要求对它们按由小到大的顺序排列(采用起泡法排序)。答:#include void main( )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,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+) if (str1i!=ch) str2k=str1i; k+; str2k=0;printf(n%sn,str2);116. 有一个 34的矩阵,编程求出其中值最大的那个元素的值,以及其所在的行号和列号。答:#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+) pri

温馨提示

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

评论

0/150

提交评论