[计算机]C语言期末模拟试题.doc_第1页
[计算机]C语言期末模拟试题.doc_第2页
[计算机]C语言期末模拟试题.doc_第3页
[计算机]C语言期末模拟试题.doc_第4页
[计算机]C语言期末模拟试题.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

一、选择题:(20分,每题2分)1以下不正确的C语言标识符是( D )。 A. ABC B. abc C. a_bc D. ab.c2C程序是由B构成的。A. 主程序与子程序 B. 主函数与若干子函数C. 一个主函数与一个其它函数D. 主函数与子函数3以下说法中正确的是: A 。A. 在C语言中,实参与其对应的形参各占独立的存储单元;B. 在C语言中,实参与其对应的形参共占同一个存储单元;C. 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;D. 在C语言中,形参是虚拟的,不占存储单元。4设n=3;则n+的结果是(B )。A. 2 B. 3 C. 4 D. 55设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是( A )。 A. 0 B. 1 C. 2 D. 36凡是函数中未指定存储类别的局部变量其隐含的存储类别是( A )。 A. 自动(auto) B. 静态(static) C. 外部(extern) D. 寄存器(register)7在while(x)语句中的x与下面条件表达式等价的是: D 。A. x= =0 B. x= =1 C. x!=1 D. x!=08若有以下说明和语句: struct worker int no;char *name; work, *p=&work; 则以下引用方法不正确的是( D )。 A. work.no B. (*p).no C. p-no D. work-no9以下对二维数组进行正确初始化的是(B )。A. int a23=1,2,3,4,5,6; B. int a3=1,2,3,4,5,6; C. int a2=1,2,3,4,5,6;D. int a2=1,2,3,4; 10二维数组a有m列,则在aij之前的元素个数为: B 。A) j*m+i B) i*m+j C) i*m+j-1 D) i*m+j+1二、给出下列程序的运行结果:(20分,前四题每题3分,后两题每题4分)1#includemain()int i=16,j,x=6;j=i+1;x*=i=j;printf(“%d,%dn”,j,x); 运行结果是:2#include #include main() int a=1,b=4,c=2;float x=10.5,y=4.0,z;z=(a+b)/c+sqrt(double)y)*1.2/c+x;printf(“%fn”,z); 运行结果是:3#include main() int a,b,c,d;a=c=0;b=1;d=20;if(a) d=d-10;else if(!b) if(!c) d=25; else d=15;printf(“d=%dn”,d); 运行结果:4main()int i=10;switch(i) case 9: i+=1; case 10: i+=1; case 11: i+=1; default : i+=1; printf(“%d”,i);运行结果:5#includemain() int a=1,2,3,4,i,j,s=0; j=1; for(i=3;i=0;i-) s=s+ai*j; j=j*10; printf(s=%dn,s);运行结果:6func(int x) x=20; main()int x=10;func(x);printf(“%d”,x);运行结果:三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(20分,每空2分)1已知能被4整除而不能被100整除的或者能被400整除的年份是润年,则判断某一年是否是润年的程序如下:main() int year,leap; scanf(“%d”,&year); if( ) leap=1; else leap=0; if( ) printf(“是润年”); else printf(“不是润年”);2将100至200间不能被3整除的数输出:main()int n;for(n=100;n=200;n+) if(n%3=0) ;printf(“%d ”,n); 3判断m是否是素数 #include main()int m,i,k;scanf(“%d”,&m); k=sqrt(m);for(i=2;i=k+1) printf(“%d is a prime numbern”,m);else printf(“%d is not a prime numbern”,m);4给定一3*4的矩阵,求出其中值最大的元素的值,及所在的行列号。main() int i,j,row=0,colum=0,max; static int a34=1,2,3,49,8,7,610,-10,-4,4; ;for(i=0;i=2;i+) for(j=0;jmax) max=aij; ; ; printf(“max=%d,row=%d,colum=%dn”,max,row,colum);5下面函数的功能是将两个字符串s和t连接起来。char *conj(char *s, char *t) char *p=s; while(*s) ; while(*t) *s= ;s+;t+;*s=0; ; 四、编程(40分)1计算1-1/2+1/3-1/4+1/99-1/100+,直到最后一项的绝对值小于10-4为止。(13分)2输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果。(13分)3任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。(14分)答案一、选择题1、D,2、B,3、A,4、B,5、A, 6、A,7、D,8、D,9、B,10、B二、给出下列程序的运行结果1、17,1022、13.7000003、d=204、135、s=12346、10三、阅读程序,在标有下滑线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。1、 (year%4= = 0 & year%100 !=0)| year%400= =0) leap2、 continue3、 break4、 max = a00row = i +1colum = j +15、 s+*treturn(p)四、编程 1、#includemain() int i; float sum,sign; i=1; sum=0; sign=1.0; while(1.0/i)=1e-4) sum += sign / i ; i+; sign = - sign; printf(sum=%.4f,sum);2、#includemain() char str81; int i ; int letter,space ,num ,other ; char c; printf (Please enter a string : ); gets(str); letter=space=num=other=0; for( i= 0;stri!=0; i+) c=stri; if(c= A&c=a& c=0 & c=9) num+; else if ( c= ) space+; else other +; printf(In this string : letter =%d,space=%d ,num=%d,other=%d,letter ,space,num,other);3、#includemain() int num10; int i,j,k; int temp; printf(Please enter 10 numbers :n); for(i=0;i10;i+) scanf(%d,&numi); for (i=0;i9;i+) k= i ; for (j=i+1;jnumj) k=j; if(k!=i)temp=numi;numi=numk;numk=temp; printf(After sorted :n); for (i=0;i 6) printf( %dn,m); e1se printf(%dn,-m ); A)4 B)5 C) 7 D) 68、 当a=1,b=3,c=5,d=4,执行完下面一段程序后x 的值是 :B if(ab) if(cd) x=1; else if(ac) if(bd) x=2; else x= 3; else x=6; else x=7; A)1 B)2 C)3 D)69、 阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为 D main()int x,y,z scanf(%d%d%d,&x,&y,&z );printf(“x+y+z=%dn” ,x+y+z);。 A)x+y+z=48 B)x+y+z=35 C)x+y+z=35 D)不确定值10、 已知各变量的类型说明如下 int k,a,b; unsigned long w= 5; double x=1.42;则以下不符合C语言语法的表达式是 A :A) x%(-3) B) w+=-2C) k=(a=2,b=3,a+b) D) a+= a-=(b=4)*(a=3)11、 设有:int a=1, b=2, c=3, d=4, m=2, n=2;执行 (m=ab)&(n=cd)后n的值为_B_。A) 1 B) 2 C) 0 D) 412、 判断char型变量ch是否为大写字母的正确表达式是_C_。 A) A =ch = A)&(ch= A )&(ch=Z) D)( A = ch)13、 以下描述中正确的是_C_: A)由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B) 在while循环体中,循环体至少要执行一次。 C)在do一while循环体中,循环体至少无条件的执行一次 D) do一while循环由do开始,用while结束,在while(表达式)后面不能写分号14、 已知int x=10,y=20,z=30; 以下语句执行后x, y, z的值是_D_。if (xy)z=x; x=y; y=z;A) x=10, y=20, z=30 B) x=20, y=30, z=20C) x=20, y=30, z=10 D) x=20, y=30, z=30 15、 若i为整型变量,则以下循环执行次数是:D for ( i=2; i!=0; ) printf(%d,i- - ); A)无限次 B) 0次 C) 1 次 D) 2次16、 下面程序段: Bfor (t=1; t=100;t+) scanf(%d,&x); if(x0) continue; printf(%3d,t); A) 当x=0时什么也不输出 C) printf函数永远也不执行 D)最多允许输出100个非负整数17、 若有说明:int a34;则对a数组元素的正确引用是_C_。A) a24 B) a1,3 C) a1+10 D) a(2)(1)18、 定义如下变量和数组: B int k; int a33=1,2,3,4,5,6,7,8,9; 则下面语句的输出结果是:B for(k=0;k3;k+) printf (%d,a2-k k); A) 3 6 9 B) 7 5 3 C) 9 6 3 D) 3 5 719、 判断字符串a和b是否相等,应当使用_D_.A) if (a= =b) B) if (a=b)C) if (strcpy (a,b) ) D) if (strcmp (a,b) )20、 对两个数组a和b进行如下初始化 char a =ABCDEF; char b =A,B,C,D,E,F; 则以下叙述正确的是 _D_. A) a与b数组完全相同 B) a与b长度相同 C) a和b中都存放字符串 D) a数组比b数组长度长21、 有两个字符数组a和b,则以下正确的输入语句是_B_:A) gets(a,b); B) scanf(“%s%s”,a,b);C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”);22、 下面程序段的运行结果是_B_ char str =ABC , *p=str ;printf (%dn,*(p+2); (A) 0 (B) 字符C的ASCII码(C) 字符C的地址 (D) 字符C 23、 下面描述正确的是_D_。A) 两个字符串所包含的字符个数相同时,才能比较字符串B) 字符个数多的字符串比字符个数少的字符串大C) 字符串”STOP ”(注:有一个空格)与”STOP”相等D) 字符串”That”小于字符串”The”24、 下面判断正确的是_B_。A)char *a= “china”; 等价于 char *a; *a= “china”;B)char str10=“china”;等价于 char str10; str =“china”;C)char *s= “china”; 等价于 char *s; s= “china”;D)char c4= “abc”, d4= “abc”; 等价于 char c4=d4= “abc”;25、 若用数组名作为函数调用的实参,传递给形参的是_A_。A) 数组的首地址B) 数组第一个元素的值C) 数组中全部元素的值D) 数组元素的个数26、 下面函数调用语句含有实参的个数为_C_。 y = func ( a, b, max(d ,e));A)5 B) 2 C) 3 D) 427、 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_B_。A)float型B)int 型C)long 型D)double 型28、 在C语言中,形参的缺省存储类是AA) auto B) register C) static D) extern29、 以下正确的函数定义形式是_A_: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);30、 在宏定义 #define PI “3.14159”中,用宏名PI代替一个_D_。A) 常量 B)单精度数 C)双精度数 D)字符串31、 #define ADD(x) x+xmain( ) int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(“sum=%d”,sum);上面的程序运行结果是_B_:A) sum=9 B) sum=10 C) sum=12 D) sum=1832、 以下有关宏替换和函数的调用叙述不正确的是_A_:A) 宏替换和函数的调用均占用运行时间。B) 宏名无类型,函数有类型C) 宏替换只是字符替换,不分配内存,但函数调用要分配内存D) 再调用宏时程序的长度要加长,而函数调用不变33、 以下程序的输出的结果是Cmain( ) int i;for (i=1;i=2;i+) incre();incre() static int x=1;x*=x+1;printf(%d,x);A) 3 3 B) 2 2 C) 2 6 D) 2 534、 有如下定义Dstruct personchar name9; int age;strict person class10=Johu, 17,Paul, 19,Mary, 18,Adam”, 16,;根据上述定义,能输出字母M的语句是A) prinft(%cn,class3.mane);B) pfintf(%cn,1);C) prinft(%cn,1)D) printf(%cn,0);35、 以下程序的输出结果是哪一项?D#include main() int a12=1,2,3,4,5,6,7,8,9,10,11,12, *p4,i; for(i=0;i4;i+) pi=&ai*3; printf(%dn,p32); A. 输出项不合法 B. 6 C. 8 D. 1236、 以下程序的输出结果是Bunion myun struct int x, y, z; u;int k; a;main() a.u.x=4; a.u.y=5; a.u.z=6;a.k=1;printf(%dn,a.u.y);A) 4 B) 5 C) 6 D) 137、 以下关于结构体与共用体的说法,其中正确的是CA) 共用体同一个内存段可以来存放几种不同类型的成员,但在某一时刻只能存放一个成员。B) 结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内存长度是各成员占的内存长度之和。C) 共用体每个成员分别占有自己的内存单元。D)结构体类型可以出现在共用体类型的定义中,但共用体不能出现在结构体类型定义之中。38、 以下程序的输出结果是Blong fun( int n) long s;if(n= =1 | n= =2) s=2;else s=n-fun(n-1);return s;main() printf(%ldn, fun(5); A) 1B) 2 C) 3 D) 439、 下列程序段的输出结果为Aint arr=6,7,8,9,10;int * ptr;ptr=arr;* (ptr+2)+=2;printf (%d,%dn,*ptr,*(ptr+2);A) 8,10 B) 6,8 C) 7,9 D) 6,1040、 设有如下定义:Dint (*ptr)( );则以下叙述中正确的是A) ptr是指向一维组数的指针变量B) ptr是指向int型数据的指针变量C) ptr是指向函数的指针变量,该函数返回一个int型数据D) ptr是一个函数名,该函数的返回值是指向int型数据的指针 1-5:BCABC 6-10:CDBDA 11-15:BCCDD 16-20:BCBDD 21-25:BBDBA 26-30:CBAAD31-35:BACDD 36-40:DABD一 单项选择题(每小题1分,共10分) 1.以下4组用户定义标识符中,全部合法的一组是( )A)_total clu_1 sumB)if -max turbC)txt REAL 3COMD)int k_2 _0012.以下程序的输出结果是( ) #include main( )int a = 1, b = 2, c = 3;printf(“%d”, cba); A) 2 B) 1 C) 0 D) 3 3.以下正确的叙述是( )A) 在C语言中,main函数必须位于文件的开头B) C语言每行中只能写一条语句C) C语言本身没有输入、输出语句D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误4.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( )A)scanf(%d,pa);B)scanf(%d,a);C)scanf(%d,&pa); D)scanf(%d,*pa);5.若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1;则执行后,c3中的值是( )A) 0 B) 0.5 C) 1 D) 26.能正确表示逻辑关系:“a=10或a0”的C语言表达式是( )A) a=10 or a=0|a=10 &a=10a=07.执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的输入是( ) main( )int a,b,c,d;scanf(“%d,%d,%d%d”,&a,&b,&c,&d);A)1 2 3 4 B)1 2 3,4 C) 1,2,3,4 D) 1,2,3 48.有以下程序段main( )int k=0;while(k=1) k+;则while循环执行的次数是( )A) 无限次 B) 有语法错,不能执行C) 一次也不执行 D) 执行1次9.以下程序的输出结果是( ) #include main( ) int a = 5, b = 4, c = 6, d; printf(“%d”,d=ab?(ac?a:c): b); A) 5 B) 4 C) 6 D) 不确定10.下面是对数组a的初始化,其中不正确的是( )A)a5ABCDB)a5A,B,C,DC)a5 D)a5ABCDE二、填空题(每空2分,共32分)1.结构化程序设计中的三种基本结构是 1 、 2 、 3 。2.C程序的基本组成单位是 4 。3.标识符的第一个字符必须是 5 或 6 。4.实常数123.457的规范化指数表示形式是 7 。5.表达式7/2的结果是 8 。表达式7%2的结果是 9 。6.定义一个整型数组a10,则下标最大的数组元素为 10 。7.在函数的递归调用过程中,要使递归过程不是无限制进行下去,必须具有 11 。8.C语言提供了 12 命令用来实现“文件包含”的操作。9.已知:char c =“china”;将字符数组c中整个字符串一次输出的语句书写格式为 13 。10.表达式43 & 75-!0的值为 14 。11.按照变量在函数中作用域不同,可以将变量分为 15 和 16 。三、计算题(要求写出步骤)(每题4分,共8分)1. 设int a=12,求出表达式a+=a-=a*a运算后a的值.2. 设a=2,b=3,x=3.5,y=2.5求算术表达式(float)(b-a)/2+(int)x%(int)y的值四、读下列程序,写出程序的运行结果(43=12)1已知字符A的ACSII码值为65,写出以下语句的输出结果main( ) char ch=A; printf(%c,%d,ch,ch+3); 2. main( ) int a = 10; printf(“%d ”, +a); printf(“%d ”, a-); 3main( ) int t=1;for(i=1 ; i5 ; i+)t=t*i;printf(%d,t); 4. f(int *a, int b)b=b+*a; *a=*a+b; main( ) int x=2,y=4; int *p; p=&x; f(p,y); printf(%d ,%d,x,y); 五、程序填空(每空分,共14分)1.下列程序段以函数swap( )调用的形式实现两个变量值的互换,请填空完善程序。swap(int * m,int * n) int temp;temp= 1 ; 2 ;*n= 3 ;main( ) int x,y;scanf(“%d,%d”,&x,&y);swap( 4 );printf(%d,%d”,x,y);2.下面程序是计算1-3+5-7+ -99+101的值,请填空完善程序。main( )int i,m,t=1,s=0;for (i=1;i1).编写程序输出下列形式的杨辉三角形的前10行。(10分) 1 1 1 1 2 1 1 3 3 11 4 6 4 1C语言模拟试卷二答案及评分标准一、单项选择题(每小题1分)1. A 2. C 3. D 4. A 5. B 6. D 7. D 8. A 9. C 10. D二、填空题(每空2分)1. 顺序结构、选择结构、循环结构。2. 函数3. 字母、下划线4. 1.23457e2或1.23457E25. 3、16. a97. 使递归结束的条件8. #include9. printf(“%s”,c)10. 011. 全局变量、局部变量三、计算题(要求写出步骤)(每题4分)1.a-=a*a a=a-a*a a=12-144= -132a+=-132 a=a+(-132) a=-132-132= -2642. 1.0/2+3%2=0.5+1=1.5四、读下列程序,写出程序的运行结果(每题分). . ,. . . . . . ,五、程序填空:(每空分)1.*m 2.*m=*n 3. temp 4. x,y 5. i=i+2 6. m=i*t 7. t=-t六、编程题.main() int i; float t=1,s=0; for(i=1;i=;i+) t=t*i; s=s+t; printf(s=%en,s);.total(int n) int c; if (n=1) c=1; else c=total(n-1)+n+1; return(c);main() int n; scanf(“%d”,n);printf(“%d”,total(n);.main( ) int a1010,i,j; for(i=0;i10;i+) for(j=0;j0); D) if(b=0) m=1;n=2;6. 有以下定义语句 double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是( )。A) a=a+b=b+ B) w%(int)a+b) C) (c+w)%(int)a D) w=a=b; 7. 设有定义:int n=0,*p=&n,*q=&p;则以下选项中,正确的赋值语句是( )。A) p=1; B) *q=2; C) q=p; D) *p=5;8. 设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( )。A) scanf(“%d”,pa) ; B) scanf(“%d”,a) ;C) scanf(“%d”,&pa) ; D) scanf(“%d”,*pa);9. 若有说明:char *language=”FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”;则表达式*language1*language2比较的是()。A)字符B和字符P B) 字符串FORTRAN和字符串BASICC)字符F和字符B D) 字符串BASIC和字符串PASCAL10. 执行语句for(i=1;i+4;);后变量i的值是( )。 A) 3 B)4 C) 5 D) 不定一、填空题(每空2分,共18分)1. 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为 。2. 有程序段:int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b; b=p5; 则b中的值是 。3. 函数swap(int x,int y)实现对x和y值的交换。则执行语句int a2=1,2; swap(a0,a1);后,a0= ,a1= 。4. 设有以下宏定义:#define f(z) z*z,执行赋值语句k=f(44)/f(22);(k为int型变量)后,k的值是 。5. 书写语句求a, b两个数的最大值max。 ? : ;6. 若x为int型变量,则执行x=7; x=x=xx; 语句后,x的值是 。二、读程序写结果(每题6分,共24分)1. 有以下程序int f(int a) int b=0;static c=3;b=b+1;c=c+1;return(a+b+c); void main() int a=2,i; for(i=0;i3;i+) printf(“%2d”,f(a);执行后输出的结果是 。2. 有以下程序void f(int y,int *x

温馨提示

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

评论

0/150

提交评论