C语言模拟复习题及答案.doc_第1页
C语言模拟复习题及答案.doc_第2页
C语言模拟复习题及答案.doc_第3页
C语言模拟复习题及答案.doc_第4页
C语言模拟复习题及答案.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

一、选择题1. 以下叙述错误的是 a 。 ac程序在书写时,有严格的缩进要求,否则不能编译通过b一个c程序只能有一个主函数c一个c程序可以包含多个不同名的函数dc程序的主函数必须用main作为函数名2. 下列程序段的输出结果是 4 3 2 1 。void fun(int *x, int *y) printf(%d %d , *x, *y); *x=1; *y=2;main() int x=3,y=4;fun(&y,&x);printf(%d %d,x, y); 3. 若有定义语句:int x=3,y=2,z;在其后执行语句z=0.9+x/y;则z的值为 1 。4. 有以下程序#include main() int a;scanf(%d,&a);if(a+8) printf(%dn,a);else printf(%dn,a-); 程序运行时键盘输入8,则输出的结果是 9 。 5. 以下定义整型3行4列的二维数组a并初始化不正确的是 c 。aint a34=0 bint a4=0,1,2,3,4,5,6,7,8,9,10,11,12cint a3=0,1,2,3,4,5,6,7,8,9,10,11,12 dint a34=1,2,1,2,3,1,2,3,46. 有以下程序#include main() int c=0,k; for (k=1;k3;k+) switch (k) default: c+=k; case 2: c+;break; case 4: c+=2;break; printf(“%dn”,c); 程序运行后的输出结果是 3 。7. 已知如下定义(设long型变量占4个字节,float型占4个字节,char型占1个字节)union student long num;char name20; float score4; ;union student stu;则变量stu所分配的存储空间是 c 字节。 a4 b16 c20 d328. 设有以下语句char ch1,ch2, scanf(”%c%c”,&ch1,&ch2);若要为变量ch1和ch2分别输入字符a和b,正确的输入形式应该是 ab 。9. 有以下函数#include void f (char c)if(cx) f(c-1);printf (%c,c); main()f(z);程序运行输出结果是 xyz 。10. 在程序中可以用来作为变量名的合法的标识符是 c 。astatic b23_b1 cstu_1t d#3311. 有以下程序main() int a33, *p, i; p=&a 00 ; for ( i=0 ; i9 ; i+) pi=i+2; printf(%dn,a02); 程序运行后的输出结果是 4 。 12. 有以下程序main() int a10=1,2,3,4,5,6,7,8,9,10, *p=&a3, *q=p+2; printf(%dn, *p + *q); 程序运行后的输出结果是 c 。a6 b8 c10 d1613. 有以下程序#include int f(int x,int y) return (y-x)*x); main() int a=1,b=2,c=3,d; d=f(f(a,b),f(a,c); printf(%dn,d); 程序运行后的输出结果是 1 。14. 以下选项中非法的字符常量是 d 。 a102 b65 cxff d01915. 假设所有变量均为整型,则表达式(a=2,b=5,a+b+,a+b)的值是 b 。a7 b8 c5 d216. 以下对一维数组a的正确说明是 c 。 aint n; scanf(%d,&n); int an; bint n=10,an;c#define size 10 dint a(10); int asize; 17. 若有以下定义和语句:char c1=b,c2=e;printf(%d,%cn,c2-c1,c2-a+a);则输出结果是 b 。 a2,m b3,e c2,e d输出项与对应的格式控制不一致,输出结果不确定18. 对下述程序, a 是正确的判断。main ( ) int x,y; scanf(“%d,%d”,&x,&y);if (xy)x=y;y=x;else x+;y+;printf(“%d,%d”,x,y); a有语法错误,不能通过编译 b若输入3和4,则输出4和5c若输入4和3,则输出3和4 d若输入4和3,则输出4和519. fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下列划线处应该填写的是 。 #include #define n 5void fun(int xn) int m;for(m=n-1;m0;m-) scanf(“%d”, d ); a&x+m b&xm+1 cx+(m+) dx+m20. 有以下程序(注:字符a的ascil码值为97)#includemain() char *s=abc; do printf(%d,*s%10); +s; while(*s); 程序运行后的输出结果是 789 。21. 有以下函数#include void fun(int *s) static int j=0;do sj=sj+sj+1; while(+j2); main()int k,a10=1,2,3,4,5;for(k=1;k3;k+) fun(a);for(k=0;k5;k+) printf(%d, ak);printf(n); 程序运行输出结果是 35745 。 922. 程序中定义以下宏#define m(x, y) (x*y)若定义 int a; 且令a= m (1+3,5); 则变量a的值为 a 。a16 b20 c9 d以上均不是23. 以下程序运行后的输出结果是 abedcfg 。 # include void f(char *s, char *t) char k; k=*s; *s=*t; *t=k; main() char str10=abcdefg, *p ; p=str+strlen(str)/2+1; f(p, p-2); printf(%sn,str); 24. 以下程序的输出结果是 1 。long fun( int n) long s;if(n= =1 | n= =2) s=2;else s=n-fun(n-1);return s; main() printf(“%ldn”, fun(3); 25. 在if(x)语句中的x与下面条件表达式等价的是 d 。ax= =0 bx= =1 cx!=1 d x!=026以下对c语言函数的有关描述中,正确的是 a 。a在调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 b函数既可以嵌套定义又可以递归调用c函数必须有返回值,否则不能使用函数 dc程序中有调用关系的所有函数必须放在同一个源程序文件中27. 设有如下程序段 char s20= “bejing”,*p; p=s; 则执行p=s;语句后,以下叙述正确的是 a 。a可以用*p表示s0 bs数组中元素的个数和p所指字符串长度相等 cs和p都是指针变量 d数组s中的内容和指针变量p中的内容相等28. 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 b 。if(xy)z=x;x=y;y=z;a10,20,30 b20,30,30 c20,30,10 d20,30,2029. 若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是 c 。 anum%2=1 b!(num%2=0) c!(num%2) dnum%230若有定义语句:int year=2009,*p=&year;,以下不能使变量year中的值增至2010的语句是 d 。a*p+=1;b( *p)+;c+(*p);d*p+31. 设变量a是整型,f是实型,i是双精度型,则表达式10+a-i*f值的数据类型为 double。32. 执行下列语句中,sum变量的值是 15 。int sum=0;for(int i=0;i5;i+,sum+=i);33. 以下不正确的说法为 a 。a在函数内的复合语句中定义的变量在本函数范围内有效b形式参数是局部变量c在函数内定义的变量只在本函数范围内有效d在不同函数中可以使用相同名字的变量 34. 有以下函数#include #include main() printf(“%dn”, strlen(”atsn012”) ); 程序运行后的输出结果是 8 。35. 有以下函数void fun(int *s) static int j=0;do sj=sj+sj+1; while(+j2); main() int k,a10=1,2,3,4,5;for(k=1;k3;k+) fun(a);for(k=0;k5;k+) printf(%d,ak);printf(n); 程序运行输出结果是 35745 。36. 以下错误的定义语句是 c 。 aint x3=0,1,1,2,3; bint x43=1,2,3,1,2,3,1,2,3,1,2,3; cint x4=1,2,3,1,2,3,1,2,3,1,2,3; dint x3=1,2,3,4;37. 凡在函数中未指明存储类别的变量,其隐含的存储类别为 auto 。 二、程序填空题1. 设变量a和b已定义为int类型,若要通过scanf(”a=%d,b=%d”,&a,&b);语句分别给a和b输入1和2,则正确的数据输入内容是 a=1,b=2 。2. 若有定义:int a=1,3,5,7,9,11,*p=a;则*(p+2)的值和*(a+5)的值分别是 5和11 。3. 有以下程序段s=1.0;for(k=1,k=n;k+) s=s+1.0(k*(k+1);printf(“%fn”,s);请填空,使以下程序段的功能与上面的程序段完全相同。s=1.0; k=1;while k=n s=s+1.0(k*(k+1); k=k+1;printf(“%fn”,s); 4. 下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。hcf(int m,int n) int r;if(mn) r=m; m=n ;n=r;r=m%n;while( r!=0 ) m=n; n=r; r=m%n; return r ; 5. 有一个3*4矩阵,求其中的最大元素。max_value( int array34 ) int i,j,max;max=array00; for(i=0;i3;i+) for(j=0;jmax) max=arrayij; return (max); main( ) int a34, i,j; for(i=0;i3;i+) for(j=0;j4;j+) scanf(“%d”,aji); ;printf(“max value is %dn”,max_value(a); 6. 下面程序通过指向整型的指针将数组a34的内容按3行4列的格式输出,请给printf( )填入适当的参数,使之通过指针p将数组元素按要求输出。int a34=1,2,3,4,5,6,7,8,9,10,11,12, *p=a;main() int i,j;for(i=0;i3;i+ ) for(j=0;j=0&c=9 ) n+; c=getchar(); 9. 下面程序的功能是统计用0至9之间的不同的数字组成的三位数的个数。main() int i,j,k,count=0;for(i=1;i=9;i+)for(j=0;j=9;j+)if( i=j ) continue;else for(k=0;k=9;k+) if( k!=j&k!=i ) count+; printf(%d,count); 10. 有以下程序#include main() char a20=”this is a program!”,b20; scanf(“%s”,b);printf(“%s %sn”,a,b);程序运行时从键盘输入:this is a program!则输出结果为 this is a program! this 。11. 设a、b、c都是整型变量,如果a的值为2,b的值为3,则执行c=a+|b+;语句后,变量b的值是 3 。12. 下面这个程序的功能是将字符串s中所有的字符b删除。main() char s80; int i,j ;printf(please enter string s:); gets(s) ;for (i=j=0; si!=0 ; i+) if(si!=b) sj+=si sj=0; puts(s);13. 下面函数的功能是判断一个数是不是素数。int prime (int m)int i ; for (i=2; i=sqrt(m); i+) if ( m%i = =0 ) return 0;return 1 ; 14.有一个3*4矩阵,求其中的最大元素。max_value( int a34 ) int i,j,max;max=array00; for(i=0;i3;i+) for(j=0;jmax) max=arrayij; return (max); main( ) int a34, i,j; for(i=0;i3;i+) for(j=0;j4;j+) scanf(“%d”,aij); ;printf(“max value is %dn”,max_value(a); 三、编程题1任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。#includeint main()int i,a10,j,n=9,temp;printf(请输入十个数:); for(i=0;i10;i+) scanf(%d,&ai);printf(n);for(i=0;i9;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;printf(重新排列的数:);for(i=0;i10;i+) printf(%3d,ai);return 0;2编程检查用户输入的字符是数字、字母、空白还是其它字符,直到用户输入q为止。#includeint main()char ch; int i=0,j=0,l=0,m=0; printf(请输入字符: ); for(ch=getchar();ch!=q;) if(ch=a) & (ch=a) & (ch=0 & ch=9) printf(数字); l+; else if(ch=n);elseprintf(其他字符); m+;ch=getchar(); printf(字母=%dn空格=%dn数字=%dn其他字符=%dn,i,j,l,m);return 0; 3打印出如下图案(菱形)*#includeint main()int i,j,k;for(i=1;i2*i-1;k-)printf( ); for(j=1;j=2*i-1;j+)printf(*); printf(n);for(i=1;i4;i+)for(k=1;k=2*i-1;j-)printf(*); printf(n);return 0;4输入n值,输出如图所示高和上底均为n的等腰梯形。当n=5时#includeint main()int i,j,k,n;scanf(“%d”,&n);for(i=1;ii;k-)printf( ); for(j=1;j=2*(i+2)-1;j+)printf(*); printf(n);return 0;5编写程序,将两个字符串连接起来,不要使用strcat函数。#includeint main()int i=0,j=0;char a120;char b20;printf(输入第一个字符串); gets(a);printf(n); printf(输入第二个字符串);gets(b);printf(将两个字符串连接起来); while(ai!=0)i+;while(bj!=0) ai+=bj+; ai=0; print

温馨提示

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

最新文档

评论

0/150

提交评论