C语言期末模拟试题12_第1页
C语言期末模拟试题12_第2页
C语言期末模拟试题12_第3页
C语言期末模拟试题12_第4页
C语言期末模拟试题12_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、一、选择题:(20分,每题2分)1 以下不正确的C语言标识符是()。A. ABC B. abc C. a_bc D.2. C程序是由构成的。A. 主程序与子程序B. 主函数与若干子函数C. 一个主函数与一个其它函数D. 主函数与子函数3. 以下说法中正确的是:。A. 在C语言中,实参与其对应的形参各占独立的存储单元;B. 在C语言中,实参与其对应的形参共占同一个存储单元;C. 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;D. 在C语言中,形参是虚拟的,不占存储单元。4 .设n=3;则n+的结果是()。A. 2 B. 3 C. 4 D. 55. 设整型变量n=10,i=4,

2、则赋值运算n%=i+1执行后,n的值是()。A. 0 B. 1 C. 2 D. 36. 凡是函数中未指定存储类别的局部变量其隐含的存储类别是()。A.自动(auto ) B.静态(static ) C.外部(extern ) D.寄存器(register )7. 在while (x)语句中的x与下面条件表达式等价的是: 。A. x= =0 B. x= =1 C. x!=1 D. x!=08. 若有以下说明和语句:struct workerint no;char *n ame;work, *p=&work;则以下引用方法不正确的是()。A. B. (*p). no C. p- no D. wor

3、k- no9. 以下对二维数组进行正确初始化的是()。a23=1,2,3,4,5,6;a3=1,2,3,4,5,6;a2=1,2,3,4,5,6;a2=1,2,3,4;10. 二维数组a有m列,则在aij之前的元素个数为: 。A) j*m+iB) i*m+jC) i*m+j-1D) i*m+j+1二、给出下列程序的运行结果:(20分,前四题每题3分,后两题每题4分)1. #includemai n()int i=16,j,x=6;j=i+1;x*=i=j;printf(“d,%d n” ,j,x);运行结果是:2. #include#in cludemai n()int a=1,b=4,c=2

4、;float x=,y=,z;z=(a+b)/c+sqrt(double)y)*c+x; printf( “%f n”,z);运行结果是:3#includemain()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=%d n”,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(

5、)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;fun c(x);printf( “%d ,x);运行结果:三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(20分,每空2分)1 已知能被4整除而不能被100整除的或者能被400整除的年份是润年,贝U判断某一年是否是润年的程序如下:mai n()int year,leap;scanf( “%d,&year);if( )leap=

6、1;else leap=0;if( ) printf(“是润年”);else printf(“不是润年”);2 将100至200间不能被3整除的数输出:mai n()int n;for(n=100 ;n=200; n+)if(n %3=0)printf( “ d ”,n);3 .判断m是否是素数#in elude mai n()int m,i,k;seanf( “%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. 给

7、定一 3*4的矩阵,求出其中值最大的元素的值,及所在的行列号mai n()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=%di”,max,row,colum);5. 下面函数的功能是将两个字符串 s和t连接起来。char *con j(char *s, char *t)char *p=s;while(*s);while(*t)*s=;s+;t+;*s=0;四、编程(40分)1.

8、计算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、3、d=204、135、s=12346、10三、阅读程序,在标有下滑线的空白处填入适当的表达式或语句,使程序完整 并符合题目要求。1、( year%4= = 0 & y

9、ear%100 !=0 )| year%400= =0)leap2、continue3、break4、max = a00row = i +1colum = j +15、s+*treturn(p)四、编程 1、 #include main() int i;float sum,sign;i=1; sum=0;sign=;while (i)=1e-4)sum += sign / i ; i+;sign = - sign;printf(sum=%.4f,sum);2、#include main()char str81; int i ;int letter,space ,num ,other ;char

10、 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、#include main()int num10;int i,j,k;int temp;p

11、rintf(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=nu mi;nu mi=nu mk;nu mk=temp;prin tf(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 的值是 :if(ab)if(cd) x=

12、1;elseif(ac)if(bd) x=2;else x= 3;else x=6;else x=7;A) 1B)2C)3D)69、阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为mai n()int x,y,zsca nf(%d%d%d, &x, &y, &z);printf(“ x+y+z=%dn” ,x+y+z);。A) x+y+z=48B)x+y+z=35C)x+y+z=35D)不确定值10、已知各变量的类型说明如下int k,a,b;un sig ned long w= 5;double x=;则以下不符合C语言语法的表达式是:C) k=(a=2,b=3,a+b) D

13、) 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 的值为 A) 1 B) 2C) 0D) 412、判断 char 型变量 ch 是否为大写字母的正确表达式是 。A) A =ch = A)&(ch= A )&(ch=Z)D)( A = ch)13、以下描述中正确的是 :A) 由于 do 一 while 循环中循环体语句只能是一条可执行语句 , 所以循环体 内不能使用复合语句B) 在 while 循环体中,循环体至少要执行一次。C) 在 do 一 while 循环体中 , 循环体至少无条

14、件的执行一次D) do 一 while 循环由 do 开始 , 用 while 结束 , 在 while( 表达式 ) 后面不能 写分号14、已知 int x=10,y=20,z=30; 以下语句执行后 x, y, z 的值是 if (xy) z=x; x=y; y=z;A) x=10, y=20, z=30C) x=20, y=30, z=10B) x=20, y=30, z=20D) x=20, y=30, z=3015、若 i 为整型变量 , 则以下循环执行次数是for ( i=2; i!=0; ) printf(%d,i- - );A) 无限次 B) 0次 C) 1次 D) 2 次16

15、、下面程序段 :for (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 数组元素的正确引用是D) a(2)(1)D) 3 5 7A) a24B) a1 ,3 C) a1+1018、定义如下变量和数组 :int k;int a33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是 :for(k=0;k3;k+) printf (%d,a2-k k);A) 3 6 9 B

16、) 7 5 3 C) 9 6 319、判断字符串a和b是否相等,应当使用.A) if (a= =b)C) if (strcpy (a,b) )B) if (a=b)D) if (strcmp (a,b) )20、对两个数组a和b进行如下初始化char a =ABCDEF;char b =A, B,C,D, E, F;则以下叙述正确的是 _.A) a 与 b 数组完全相同B) a与 b 长度相同C) a 和 b 中都存放字符串D) a数组比 b 数组长度长21、有两个字符数组 a 和 b, 则以下正确的输入语句是 :A) gets(a,b);B) scanf( “%s%”s ,a,b);C) s

17、canf( “%s%”s ,&a,&b); D) gets(“a” ),gets( “b”);22、下面程序段的运行结果是 char str =ABC , *p=str;printf (%dn,*(p+2) ;(A) 0 (B) 字符 C 的 ASCII 码 (C) 字符 C 的地址 (D) 字符 C23、 下面描述正确的是 。A) 两个字符串所包含的字符个数相同时,才能比较字符串B) 字符个数多的字符串比字符个数少的字符串大C) 字符串” STOP” (注:有一个空格)与” STOP相等D) 字符串” That ”小于字符串” The”24、 下面判断正确的是 。A)char *a=“chi

18、na ” ;等价于 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=“I”“abc”;25、若用数组名作为函数调用的实参,传递给形参的是 。A) 数组的首地址B) 数组第一个元素的值C) 数组中全部元素的值D) 数组元素的个数26、下面函数调用语句含有实参的个数为 。y = func ( a, b, max(d

19、 ,e );A)5 B) 2 C) 3 D) 427、 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 ,A) float 型B) int 型C) long 型D) double 型28、在C语言中,形参的缺省存储类是A) auto B) register C) static D) extern29、 以下正确的函数定义形式是 :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 “”中,用宏名

20、 PI 代替一个 A) 常量 B )单精度数 C )双精度数 D31、#define ADD(x) x+xmain( )int m=1,n=2,k=3;int sum=ADD(m+n)*k;printf(“ sum=%”d ,sum);上面的程序运行结果是 :A) sum=9 B) sum=10 C) sum=12 D) sum=1832、以下有关宏替换和函数的调用叙述不正确的是 :A) 宏替换和函数的调用均占用运行时间。B) 宏名无类型,函数有类型C) 宏替换只是字符替换,不分配内存,但函数调用要分配内存D) 再调用宏时程序的长度要加长,而函数调用不变33、以下程序的输出的结果是main(

21、) 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、有如下定义struct 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,class

22、2.name1)D) printf(%cn,0);35、以下程序的输出结果是哪一项#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. 6C. 8 D. 1236、以下程序的输出结果是union myun structint x, y, z; u;int k; a;main() %dn, 4B) 5 C) 6 D) 137、以下关于结构体与共用体的说法,其中正确的是A) 共用体同一个内存段可以来存放几种不同类

23、型的成员,但在某一时刻只 能存放一个成员。B) 结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内 存长度是各成员占的内存长度之和。C) 共用体每个成员分别占有自己的内存单元。D) 结构体类型可以出现在共用体类型的定义中,但共用体不能出现在结构体类型定义之中。38、以下程序的输出结果是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(5);A) 1 B) 2 C) 3 D) 439、下列程序段的输出结果为int arr=6,7,8,9,10;i

24、nt * ptr;ptr=arr;* (ptr+2)+=2;printf (%d,%dn,*ptr,*(ptr+2);D) 6,10int 型数据A) 8,10 B) 6,8C) 7,9 40、设有如下定义 :int (*ptr)( );则以下叙述中正确的是A) ptr 是指向一维组数的指针变量B) ptr 是指向 int 型数据的指针变量C) ptr 是指向函数的指针变量 , 该函数返回一个D) ptr 是一个函数名 ,该函数的返回值是指向 int 型数据的指针1-5 : BCABC6-10 :CDBDA11-15 : BCCDD16-20 :BCBDD21-25 : BBDBA26-30

25、:CBAAD31-35 : BACDD36-40 :DABD一 单项选择题 (每小题 1分,共 10分)1.以下 4组用户定义标识符中,全部合法的一组是( )A)_total clu_1 sumB) if-max turbC) txt REAL 3COMD) intk_2 _0012. 以下程序的输出结果是( )#include main( )int a = 1, b = 2, c = 3; printf( “%d”, cba);A) 2 B) 1 C) 0 D) 33. 以下正确的叙述是( )A) 在C语言中,main函数必须位于文件的开头B) C 语言每行中只能写一条语句C) C 语言本身

26、没有输入、输出语句D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误4. 设有定义:int a,*pa=&a;以下seanf语句中能正确为变量a读入数据的是A)sca nf(%d,pa);C)sca nf(%d,&pa);B) sca nf(%d,a);D) sca nf(%d,*pa);5. 若有以下程序段,int c1=1,c2=2,c3;c3=c2*c1;则执行后,c3中的值是()A) 0 B) C) 1 D) 26. 能正确表示逻辑关系:“ a =10或a=10 or a=0|a=10&a=10 II a=07. 执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的

27、输入是()main ()int a,b,c,d;scanf( “ %d,%d,%d%d,&a,&b,&c,&d);A) 1 2 3 4B)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. 以下程序的输出结果是()#in elude main ()int a = 5, b = 4, c = 6, d;printf( “%d ,d=ab(aca:c): b);A) 5 B) 4 C) 6 D)不确定

28、10. 下面是对数组a的初始化,其中不正确的是()A)a5 = ABCDB)a5 = A , B , C , DC) a5 =D) a5=ABCDE二、填空题(每空2分,共32分)I. 结构化程序设计中的三种基本结构是_1、。程序的基本组成单位是4。3. 标识符的第一个字符必须是或6。4. 实常数的规范化指数表示形式是7。5. 表达式7/2的结果是 8。表达式7%2的结果是 9。6. 定义一个整型数组a10,则下标最大的数组元素为10。7. 在函数的递归调用过程中,要使递归过程不是无限制进行下去,必须具有-11。语言提供了12命令用来实现“文件包含”的操作。9. 已知:char c = “ c

29、hina ” ;将字符数组c中整个字符串一次输出的语句书写格式为13。10. 表达式 43 & 75-!0 的值为14。II. 按照变量在函数中作用域不同,可以将变量分为15 和16。三、计算题(要求写出步骤)(每题 4分,共8分)1. 设int a=12,求出表达式a+=a-=a*a运算后a的值.2. 设 a=2,b=3,x=,y=求算术表达式 (float)(b-a)/2+(int)x%(int)y 的值四、读下列程序,写出程序的运行结果(4X 3=12)1 已知字符A的ACSII码值为65,写出以下语句的输出结果 main( )char ch= A ; printf(%c,%d,ch,c

30、h+3);2. main( )int a = 10;printf( “%d ”, +a);printf( “%d ”, a -);3 main( ) 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);prin tf(%d,%d,x,y);五、程序填空(每空2分,共14分)1. 下列程序段以函数swap()调用的形式实现两个变量值的互换,请填空完 善程序。swap(i nt * m,i nt * n) int t

31、emp;temp= 1;;*n=;mai n() int x,y;seanf( “%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)3 .编写程序输出下列形式的杨辉三角形的前10行。(10分)11 11 2 11 3 3 11 4 6 4 1C语言模拟试卷二答案及评分标准一、单项选择题(每小题1分)2. C 3. D 4. A 5. B 6. D 7. D 8. A 9. C 10. D二、填空题(每空2分)1. 顺序

32、结构、选择结构、循环结构。2. 函数3. 字母、下划线或、197. 使递归结束的条件8. #i nclude (“ %s ,c)11. 全局变量、局部变量三、计算题(要求写出步骤)(每题 4 分)1.a-=a*a a=a-a*a a=12-144= -132 a+=-132 a=a+(-132) a=-132-132= -264四、读下列程序,写出程序的运行结果(每题3分)1 . 1 . A,6 82 . 2 . 11 113 . 3 . 2 44.4. 8,4五、程序填空: ( 每空2分 )1. *m 2.*m=*n 3. temp 4. x,y 5. i=i+2 6. m=i*t 7. t

33、=-t六、编程题1.main()int i;float t=1,s=0;for(i=1;i=5 0 ;i+)t=t*i; s=s+t; printf(s=%en,s);2.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);3 .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;

34、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) seanf( “ %d ,pa);B) scanf( “ %d ,a);C) scanf( “ %d,&pa) ;D) scanf( “ %d ,*pa

35、);9. 若有说明:char *language= ” FORTRAN ” BASIC , ” PASCAL, ” JAVA , ”C” ;则表达式 *language1*language2比较的是()。A)字符B和字符PB)字符串FORTRA和字符串BASICC)字符F和字符BD)字符串BASIC和字符串PASCAL10.执行语句 for(i=1;i+:;6. 若x为int型变量,则执行x=7; x + =x =x+ x;语句后,x的值是。二、读程序写结果(每题6分,共24分)1.有以下程序int f(int a) int b=0;static c=3;b=b+1;c=c+1;return(

36、a+b+c);void mai n() int a=2,i;for(i=0;i3;i+) printf(“ %2d ,f(a);执行后输出的结果是 。2. 有以下程序void f(i nt y,i nt *x) y=y+*x; *x=*x+y;void mai n() int x=2,y=4;f(y, &x);printf(“x=%d,y=%dn ,x,y);执行后输出的结果是 。3. 有以下程序#defi ne LETTER 1#in clude void mai n() char str20=C Language, c;int i=0;while(c=stri)!=0)#ifdef LET

37、TERif(c=a &cvz)c=c+1;else if(c=z) c=c-25;#elseif(c=B&c=Z)c=c-1;else if(c=A) c=c+25;#en difprin tf(%c,c); 执行后输出的结果是 。4. 有以下程序void fun (i nt *a,i nt i,i nt j) int t;if(ij) t=ai;ai=aj;aj=t;i+; j-;for(i=0;i4;i+) pri ntf(%2d,ai);fun( a,i,j);void mai n() int x=2,6,1,8,i;fun (x,0,3);for(i=0;i4;i+) printf(%2d,xi);prin tf(n);执行后输出的结果是0四、程序填空(每空1分,共8分)下面程序的功能是:计算从命令行中输入的第2个参数开

温馨提示

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

评论

0/150

提交评论