C语言程序试卷及答案.doc_第1页
C语言程序试卷及答案.doc_第2页
C语言程序试卷及答案.doc_第3页
C语言程序试卷及答案.doc_第4页
C语言程序试卷及答案.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计期末考试模拟试卷及参考答案(B)2012.6.5整理一、选择题(每题2分,共30分) 1、# include 的结果是_ void main ( ) int a33=1,2,3,4,5,6,7,8,9; int s=0,i; for (i=0;i=0&ch=9 B.0=ch=0|ch=0&ch=9注意A和D的区别。参考答案D11、若执行以下程序时从键盘上输入9,则输出结果是_A.11B.10 C.9 D.8 main( ) int n; scanf(%d,&n);if(n+x?w:yz?y:z的结果是_ A.4 B.3 C.2 D.1参考答案B13、以下程序的输出结果是_ main( ) int x=023;printf(%dn,-x); A.18B.22C.23 D.19参考答案A14、下列4个函数中,_能实现交换变量值的功能。A. void fun_a(int x,int y) B. void fun_b(int *x,int *y) int *p; int *p; *p=x;x=y;y=*p; *x=*y;*y=*x; C. void fun_c(int *x,int *y) D. void fun_d(int x,int y) *x=*x+*y; int p; *y=*x-*y; p=x;x=y;y=p; *x=*x-*y; 参考答案A15、以下所列的各函数首部中,正确的是_A. void play(var :integer,var b:integer)B.void play(int a,b)C. void play(int a,int b)D. Sub play(a as integer,b as integer) 参考答案C二、填空题(每空1分,共10分)1、 选择结构语句有_、_两种语句。if语句、switch语句2、 二维数组有两处_,分别用一对_号括起。下标、方括句3、 数组指针是指_。 数组在内存的首地址4、 在访问一个结构元素前,你必须定义_。 结构变量5、 链表是以结构类型表示链中元素,以_表示链的一种线性数据结构。 指针三、程序填空题(每空4分,共20分)1、判断n是否是素数,若是,则返加1,否则返回0 int prim(int n) int m; for (m=2;m=n/2;m+) if (1)_ return 0; (2_ 参考答案(1)n%m=0; (2)return 1;2、下述程序段是要实现在数组中查找最大元素和最小元素的下标,# include void find(int *a,int n,int *max,int *min) int i; *max=*min=0; for(i=1;ia*max) (3) ; else if(aia*min) (4) ; return; void main( ) int a =5,8,7,6,2,7,3; int max,min; find( (5) ); printf(nmax=%d,min=%d,max,min); 参考答案(3)*max=I (4) *min=I (5)a,7,&max,&min四、看程序写结果(每题3分,共15分) 1、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是_ if (aB.if (cD. x=1; else if (aC. if (bD. x=2; else x=3; else x=6; else x=7; printf(“x=%d”,x); 参考答案 22、main() int i=1,s=3; Dos+=i+; If(s%7=0)continue; Else +i; while(s15); Printf(“i=%dn”,i); 参考答案 i=8 3、#include int x1=30,x2=40; main() int x3=10,x4=20; sub(x3,x4); sub(x2,x1); printf(“%d,%d,%d,%dn”,x3,x4,x1,x2); sub(int x,int y) x1=x;x=y;y=x1; 参考答案 10,20,40,40五、编程题:(共2小题,共25分) 1、编程打印如下的杨辉三角形(要求打印出10行):(15分) 11 2 11 3 3 1 4 6 4 115 10 10 5 11 6 15 20 15 6 12、猴子吃桃问题,猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子。求第一天共摘多少桃子。(10分) 参考答案汇总一、选择题 1、D 2、D 3、A 4、B 5、D 6、D 7、C 8、A9、B 10、D11、B 12、B 13、A 14、A 15、C二、填空题1、 if语句、switc语句 2、 下标、方括句 3、 数组在内存的首地址 4、 结构变量 5、 指针 三、程序填空题 1、(1)n%m=0; (2)return 1;2、(3)*max=I (4) *min=I (5)a,7,&max,&min 四、看程序写结果 1、 x=2 2、 i=8 3、 10,20,40,40五、编程题 1、 #define N 11Main() int i,j,aNN; For(i=1;iN;i+) aii=1; ai1=1; For(i=3;iN;i+) For(j=2;j=i-1;j+) aij=ai-1j-1+ai-1j; for(i=1;i=N;i+) for(j=1;j0) x1=(x2+1)*2; x2=x1; day-; Printf(“total=%dn”,x1); C语言程序设计试题十四一、选择题(114每题1分,15-18每题1.5分,共20分)1.可选作用户标识符的一组标识符是( )A void B c5_b8 C For D 3aDefine _53 -ab DOWORD IF Case int2.在C语言中,非法的八进制是:( ) A.018 B.016 C.017 D.02573.在TC中,基本int a4类型变量所占的字节数是( )A.1 B.2 C.4 D.84.设x,y,z,k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为( )A.4 B.16 C.32 D.525.设int型变量a为5,使b不为2的表达式是( ) A.b=a/2 B.b=6-(-a) C.b=a%2 D.b=a3?2:16.一个C程序的执行是从( )A.main()函数开始,直到main()函数结束。 B.第一个函数开始,最后一个函数结束。C.第一个语句开始,最后一个语句结束。 D.main()函数开始,直到最后一个函数。7.C语言中用于结构化程序设计的三种基本结构是( )A.if、switch、break B.if while forC.while do- while for D.顺序结构、选择结构、循环结构8.以下叙述中不正确的是( )A.在不同的函数中可以使用相同名字的变量。B.函数中的形式参数是局部变量。C.在一个函数内的符合语句中定义变量在本函数范围内有效。 D.在一个函数内定义的变量只在本函数范围内有效。 9.若k为int 类型,且k的值为3,执行语句k+=k-=k*k后,k的值为( )A.-3 B.6 C.-9 D.-1210.有以下程序main()int x=3,y=3,z=3; printf(“%d %dn”(+x,y+),+z); 输出结果( )A.3 3 B.3 4 C.4 2 D.4 311.若有定义和语句:int a=21,b=021; printf(“%x,%d n”,a,b);输出结果( )A.17,15 B.16,18 C.17,19 D.15,1712.已有定义语句:int x=3,y=4,z=5;则值为0的表达式是( )A.xy+ B.xy-z D.y%z=y-z13.能正确表达逻辑关系“a10或a0”的C语言表达式是( )A.a=10 or a=10|a=10&a=10|a=014.n为整型常量,且n=2;while(n-);printf(“%d”,n);执行后的结果是:( )A.2 B.1 C.-1 D.0 15.若有以下定义和赋值double *q,a=5.5; int *p,i=1; double *q,a=5.5;int *p,i=1; p=&i; q=&a; 以下对赋值语句叙述错误的是( )。 A)*p=*q 变i中的值。 B)p=oxffd0;将改变p的值,使p指向地址为ffd0的存储单元。 C)*q=*p;等同于a=i; D)*p=*q;是取q所指变量的值放在p所指的存储单元 16.若有以下定义语句double a8,*p=a; int i=5; 对数组元素错误的引用是( )A)*a B) *a5 C)*(p+i) D)p817.以下选项中不能使指针正确指向字符串的是( )A) char *ch;*ch=“hello” B) char *ch=“hello”C) char *ch=“hello”;ch=“bye” D) char *ch”;ch=“hello”18.若有以下说明和定义语句:union uti int n;double g;char ch9; struct srtfloat xy;union uti uv;aa;则变量aa所占内存的字节数是( )A) 9 B) 8 C) 13 D) 17二、填空题(每空1分,共12分)1.C语言源程序文件的扩展名是 (1) ,经过编译后,生成文件的扩展名是 (2) ,经过连接后,生成文件的扩展名是 (3) 。2.把a,b定义成长整型变量的定义语句是 (4) 3.设x和y均为整型变量,且x=3,y=2,则1.0*x/y表达式的值为 (5) 4.已有定义:float x=5.5;则表达式:x=(int)x+2的值为 (6) 5.已有定义:int x=0,y=0;则表达式:(x+=2,y=x+3/2,y+5)后,变量x的值为 (7),变量y的值为 (8),表达式的值为 (9) 。6.执行以下for(i=1;i+gmax)gmax=s;if (2) gmin=s;scanf(“%f”,&s);printf(“gmax=%fngmin=%fn”gmax,gmin);2.求任意两个正整数的最大公约数和最小公倍数#include “stdio.h”main()int r,m,n,temp,gcd,lcm;printf(“enter two number please:”);scanf(“ (3) ”,&m,&n);lcm=m*n;while(m%n!=0)r=m%n;(4);n=r;gcd=n;lcm=lcm/n;printf(“gcd=%dnlcm=%dn”,gcd,lcm);3.求y的x次方。Double fun1(double y,int x)main()int i;double z=1.0;for(i=1;i (5) ;i+)z= (6) ;return z;4.对输入一个整数进行判断,若是偶数,输出even,否则输出odd,在子函数fun2功能是判定整数是否为偶数,若是偶数,返回1,否则返回0。int fun2(int x)if(x%2=0) (7) ;return 0 ;main()int n;scanf(“%d”,&n);if (8) printf(“evenn”);else printf(“oddn”);四、按格式写出程序运行结果。(每题4分共20分)1. main()int a=1,c=65,d=97;printf(“a8=%o,a16=%xn”,a,a); printf(“c10=%d,c8=%o,c16=%x,cc=%cn”c,c,c,c);d+;printf(“d10=%d,dc=%cn”d,d); 程序运行结果为:2.有以下程序void f(int x,int y)int t;if(xy)t=x;x=y;y=t;main()int a=4,b=3;c=5;f(a,b); f(a,c); f(b,c);printf(“%d,%d,%d”,a,b,c); 执行后的结果是:( )3.程序执行的结果是( )main()int i=0,a=2;if(i=0)printf(“*”);else printf(“$”); printf(“*”);4.有以下程序main()int sum=0,n;scanf(“%d”,&n);while(n=0 (2)sgmin (3)%d,%d (4) m=n (5)i=x (6)z*y (7)return 1 (8)fun2(n) 四、按格式写出程序运行结果(20分)1.a8=1,a16=1 2. 4,3,5 3. * 4.sum=15 5. m=56 c10=65,c8=101,c16=41,cc=A d10=98,dc=b五、编写程序(24分)1.main() float x,y;char operator;scanf(“%f,%c,%f”,&x,&operator,&y)switch(operator) case +:printf(“n%.2f+%.2f”,x,y,x+y);break; case -:printf(“n%.2f-%.2f”,x,y,x-y);break; case *:printf(“n%.2f-%.2f”,x,y,x*y);break; case /:printf(“n%.2f-%.2f”,x,y,x/y);break; case /: if(y=0) printf(“error!”);break; printf(“n%.2f-%.2f”,x,y,x/y);break; default:printf(“operator is invalid”); 2. #include “math.h”main() int m,k,i,n; for(m=3;m=100;m+=2) k=sqrt(m); for(i=2;i=k+1) printf(“%d”,m); n+;3. #include “stdio.h” #define ROW 3#define COL 4main()int i,j,aROWCOL, aROWCOL; for(i=0;i=ROW;i+) for(j=0;j=COL;j+) scanf(“%d”,&aij); for(i=0;i=ROW;i+) for(j=0;j=COL;j+) bji=aij; for(i=0;i=ROW;i+) for(j=0;j0 | y=5的相反表达式为( )。A. x=0 | y!=5 B. x0 | y!=5 D. x0 & y=5 4. 枚举类型中的每个枚举常量的值都是一个( )。 A. 整数 B. 浮点数 C. 字符 D. 逻辑值 5. 循环语句“for(int i=0; in; i+) S;”中循环体S被执行的次数为( )。 A. 1 B. n-1 C. n D. n+1 6. 在下面的while循环语句中,其循环体被执行的次数为( )。 int i=0,s=0; while(sname等价的表达式是_。三、写出下列每个程序运行后的输出结果 1. #include void main() int i, s=0; for(i=1;i+) if(s50) break; if(i%2=0) s+=i; printf(i,s=%d, %dn,i,s); 2. #include void main() char ch=*; int i, n=5; while(1) for(i=0;in;i+) printf(%c,ch); printf(n); if(-n=0) break; 3. #include void main() int x=24,y=88; int i=2,p=1; do while(x%i=0 & y%i=0) p*=i; x/=i; y/=i; i+; while(x=i & y=i); printf(%dn,p*x*y); 4. #include void main() int a9=36,25,48,24,55,40,18,66,20; int i, b1, b2; a0=a1? (b1=a0, b2=a1):(b1=a1,b2=a0); for(i=2; i9; i+) if(aib1) b2=b1; b1=ai; else if(aib2) b2=ai; printf(%d %dn,b1,b2); 5. #include void main() int a=10, b=20; printf(%d %dn,a,b); int b=a+25; a*=4; printf(%d %dn,a,b); printf(%d %dn,a,b); 6. #include void SelectSort(int a, int n) int i,j,k,x; for(i=1;in;i+) /进行n-1次选择和交换 k=i-1; for(j=i;jn;j+) if(ajak) k=j; x=ai-1; ai-1=ak; ak=x; void main() int i; int a6=20,15,32,47,36,28; SelectSort(a,6); for(i=0; i6; i+) printf(%d ,ai); printf(n); 7. #include void LE(int* a, int* b) int x=*a; *a=*b; *b=x; void main() int x=15, y=26; printf(%d %dn,x,y); LE(&x,&y); printf(%d %dn,x,y); 8. #include #include struct Worker char name15; /姓名 int age; /年龄 float pay; /工资 ; int Equal(struct Worker* r1, struct Worker* r2) if(strcmp(r1-name, r2-name)=0) return 1; else return 0; void main() struct Worker a4=abc,25,420,defa,58,638, ghin,49,560,jklt,36,375; struct Worker x=defa; int i; for(i=0; i=4) printf(没有查找所需要的记录!n); else printf(%s %d %6.2fn,,ai.age,ai.pay); 四、写出下列每个函数的功能 1. int SE(int n) /n为大于等于1的整数 int x,s=0; printf(输入%d个整数: ,n); scanf(%d,&x); if(n=1) return x; s=x; while(-n) scanf(%d,&x); s+=x; return s; 2. #include void WA(int a, int n) int i,k,j,x; for(i=0;in-1;i+) k=i; for(j=i+1;jak) k=j; x=ai; ai=ak; ak=x; 3. #include int* LJ(int a, int n) int i,k=0; for(i=1;iak) k=i; return &ak; 4. int Output(struct IntNode *f) int sum=0; if(!f) return -9999; /用返回特定值-9999表示空表 while(f) sum+=f-data; f=f-next; return sum; 假定struct IntNode的类型定义为: struct IntNode int data; /结点值域 struct IntNode* next; /结点指针域 ; 5. int wr4(FILE* fptr) char ch; int c=0; fseek(fptr,0,SEEK_SET); while(1) ch=fgetc(fptr); if(ch!=EOF) c+; else break; return c; 五、根据下列每个题目要求编写程序 1. 编写一个函数fun(),首先从键盘上

温馨提示

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

评论

0/150

提交评论