(完整版)河海大学C语言期末试题A_第1页
(完整版)河海大学C语言期末试题A_第2页
(完整版)河海大学C语言期末试题A_第3页
(完整版)河海大学C语言期末试题A_第4页
(完整版)河海大学C语言期末试题A_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、20082009 学年第二学期 C 语言期末考试( A 卷)(2008 级理科专业)专业班级: 学号: 姓名:选择题 (用铅笔把选中的方格涂黑40 1=40 分 )51ABCD25ABCD69ABCD1013ABCD1417ABCD1821ABCD2225ABCD2629ABCD3033ABCD3437ABCD38ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD3ABCD47ABCD811ABCD1215ABCD1619ABCD2023ABCD2427ABCD2831ABCD3235ABCD3639ABCD40ABCDABCDABCDABCDABCDABCDAB

2、CDABCDABCDABCD、填空题 (252=50 分)(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14) (15) (16) (17)(18)(19)(21)(22)(23)(24)(25)三、编程题( 10 分)求 10 个数的最大公约数和最小公倍数 ( 定义两个函数,求两个数的最大公约数 和两个数的最小公倍数 )、 选择题 ( 401 分=40 分)1. 以下叙述中正确的是(1) D 。A在编译时可以发现注释中的拼写错误BC语言程序的每一行只能写一条语句Cmain( ) 必须位于程序的开始 DC语言程序可以由一个或多个函数组成2. 以下选项中

3、不能用作变量名的是( 2)B。A _floatB switch CsumD _1233. 已知 sizeof(int) 的值为 2,为将 10! 的值存储到变量 f 中(10!=3628800 ),变量 f 的类 型应声明为( 3)A。A long intBintC short int Dunsignedint4. 以下表示中 , 不能用作 C语言常量的是(4)B。A. 0UL B. (long)123 C. 1e0D. x2 a5. 数学式 在 C 程序中正确的表示形式为(5)B2bAsqrt(a)/2*bB sqrt(a)/2/bCsqrt(a)/2bD sqrt a/(2*b)6. 已知

4、有程序段“charstr10=Aoyun,Beijing,*p=&str00;printf(%sn ,p+10); ”,则执行printf 语句后输出为 (6)AA BeijingB Aoyun C ing D ng7. 以下声明中错误的是(7) C。Aint a2; Bint a=0,1; Cint a3=0; Dint a34=0;8. 以下表示数学式“ abc”的逻辑表达式中,错误的是( 8) AA. abcB. ab&b=b)&!(b=c)9. 已有声明“ int a=3,b=3,c=2; ”,以下选项中值为A. !a&!b&cB. !a|!b|c C. a=b&b=c10. 若有声明

5、“ char ss8=Red;”,则 sizeof(ss)D. !(a=b|b=c)0 的表达式是( 9) AD. a=b&bc 的值是( 10) A。A 8B3 D11. 以下程序运行后的输出结果是( 11)B。A. 2 2B. 7 2C. 7 5D. 6 2main() char a7=a00a00; int i,j; i=sizeof(a); j=strlen(a); printf(%d %d,i,j);12. 下面关于循环语句 for 、 while 、 do_while 的叙述中,正确的是(12) DA. 三种循环语句的循环体都必须放入一对花括号中B. 三种循环语句中都可以缺省循环终

6、止条件表达式C. 三种循环语句的循环体都至少被无条件地执行一次D. 三种循环语句都可能出现无穷循环13. 若有声明“ int a=1,2,3,4,*p,i; ” , 则以下程序段中不能输出 13 的是( 13)B。A. for(i=0;i4;i+=2) printf(%d,ai);B. for(p=0;p4;p+=2) printf(%d,ap);C. for(p=a;pa+4;p+=2) printf(%d,*p);D. for(p=a,i=0;ia B.(+ptr)-a C.x1.a D.x0.b-a struct ss int a; struct ss *b; x3=5,&x1,7,&x

7、2,9,0, *ptr=&x0;22. 若需要对一个数据文件 abc.txt 作,则在“ fp=fopen(abc.txt, B 。中的数据做加密处理并且限定只能做一次打开文件操模式字符串 ); ”中,模式字符串应当是( 22)A. w+ B. r+ 23若有如下声明和语句: int t33,*pt3,k; for(k=0;k0;j-=2) k+; .for(j=0;j15;j+=2) k+; .for(i=0;i0;i-=2) k+;30已知 A 盘根目录下有文本文件“ data.txt ”且程序中已有声明“ FILE *fp; ”,若程序 需要先从“ data.txt ”文件中读出数据,修

8、改后再写入“ data.txt ”文件中,则调用 fopen 函数的正确形式是 (30) C 。A fp=fopen(a:data.txt,rw);B B. fp=fopen(a:data.txt,w+);C. fp=fopen(a:data.txt,r+);D. fp=fopen(a:data.txt,r);31以下选项均为 fun 函数定义的头部,其中错误的是 (31) B 。A. int fun(int x,int y)B. int fun(int x,int yx)C. int fun(int x,int y3) D. int fun(int x,int *y)32以下结构变量 stu

9、1 的声明形式中,错误的是 (32) D 。 typedef struct stuchar name10;float score;STU ; STU stu1; #define STU struct stuSTU char name10;float score; stu1; struct stuchar name10;float score;stu1; struct stuchar name10;float score;STU; STU stu1;33. 若有声明“ double x=3,c,*a=&x,*b=&c; ”, 则下列语句中错误的是( 33)C 。A a=b=0;B a=&c,b=

10、a; C &a=&b;D *b=*a;34若已有声明“ int x=4,y=3; ”,则表达式 xy ? x+:y+ 的值是(34) B。20082009 学年第二学期 C 语言期末考试( A 卷)(2008 级理科专业)A2B 3 C35程序段“ intx=3; do printf(“%d ”,xC。A3 2 1B 死循环4D 5- ); while( !x ); ”的执行结果是(35)C 3D 236以下关于 C语言语句的叙述中,正确的是( 36)D。A所有语句都包含关键字B所有语句都包含表达式C所有语句都可以出现在源程序中的任何位置D所有语句都以分号结束37设有变量声明“ char c;

11、 ”,执行“ for( ;c=(getchar() != n );) printf(c” ,c); ”时,从键盘上输入“ ABCDEF”G回车后,输出结果是( 37) C 。AABCDEFGC非字母数字字符D 语句不能执行AABBCCDDEEFFGG1338假定已有声明 “ char a30,*p=a; ”,则下列语句中能将字符串 “ This is a C program. ” 正确地保存到数组 a 中的语句是 ( 38) D a = “ This is a C program.A a30= “ This is a C program.” BC. p =“This is a C progra

12、m.D strcpy(p,This is a C program. ” );39. 以下关于函数定义的叙述中,正确的是(39) AA构成 C 语言源程序的基本单位之一是函数定义B所有被调用的函数必须在调用之前定义C main 函数定义必须放在其他函数定义之前D main 函数定义的函数体中必须至少有一条语句或声明40已知函数 fun 的定义如下:Void fun(int x,int y) int k;For (k=0;ky;k+) xk+=y;若 main 函数中有声明 int a10=10; 及调用 fun 函数的语句, 则正确的 fun 函数调 用形式是 ( 40) C 。Afun(a,a

13、0);B fun(a0,a0);C. fun(&a0,a0);D. fun(a0,&a0);二、填空题(每空 2 分,共 50 分)1 已知有函数定义“ int fun()return (3,4) ; ”,则调用 fun 后的函数返回值是( 1)4 。2.设 有 声 明 “int a=3,b=4;floatx=4.5, y=3.5; ” , 则 表 达 式“(float)(a+b)/2+(int)x%(int)y”的值是(2) 4.5。3执行“后的输出结果是(3)若有声明“ char s10=remindputs(s+2); ”4mind 。,则计算y(4) pow(x,y)若有声明“ dou

14、ble x=10,y=5; ”x 的库函数调用形式是。5.以下程序运行时输出结果的最后一行是(5)3/5,5/8。#include void main() int a=1,b=1,i;for(i=1;i=2;i+) a=a+b;printf(%d / %d , ,b,a); b=a+b;printf(%d / %d n,a,b);printf(n);ia1b11231/2,2/32583/5,5/83#include void main() int i,sum=0;for (i=0;i5;i+) switch(i) case 0:case 1: sum+;case 3: sum+;case 4

15、: sum-; break;printf(%dn,sum);7. 以下程序运行后输出结果为#include stdio.hint mystery(int a,int b) if(b=1)return a;else return a+mystery(a,b-1);void main() int x=5,y=3; printf(%dn,mystery(x,y);8. 以下程序运行时输出结果的第一行是#includeisum0012112322332415mystery(5,3)ab535+ mystery(5,2)525+ mystery(5,1)515(8)3 ,第二行是(9) 2。7) 156

16、. 以下程序运行时输出结果为 (6) 1int f1( ) static int i=0,f=1;return f*=+i;int f2( ) int i=0,f=1;return f*=+i;void main( ) printf(%dn,f1( )+f1( );printf(%dn,f2( )+f2( );9. 以下程序运行时输出结果是 (10) ABCxyz #include #include void sf(char *s1,char *s2) if(*s1=*s2)sf(s1+1,s2+1);void main( ) char a20= ABC,b20=xyz; sf(a+strle

17、n(a),b); puts(a);,第三行是 (12) 3 2 110. 以下程序运行时输出结果的第一行是 (11) 1 1 1 #include void main( ) int i,j,a33;for(i=0;i3;i+)for(j=0;j3;j+)if(ij)aij=1;elseaij=i-j+1;for(i=0;i3;i+) for(j=0;j3;j+)printf(%4d,aij);printf(n);11. 以下程序运行时输出结果是(13)8 3 4 1#include void sort(int a,int n) int i,j,p; int t;for(i=1;in-1;i+=

18、2) p=i;for(j=i+2;jap) p=j;if(p!=i) t=ai; ai=ap; ap=t; void main( ) int s =8,1,4,3,n=4,k; sort(s,n); for(k=0;kn;k+) printf(%4d,sk); printf(n);12. 以下程序运行时输出结果的第一行是(14) 100,第二行是 (15) 101#include struct s int x,*y;*p;int d5=10,20,30,40,50;struct s a5=100,&d0,200,&d1,300,&d2,400,&d3,500,&d4; void main( )

19、 p=a; printf(%5d,p-x+); printf(%5dn,p-x); printf(%5d,*p-y); printf(%5dn,*+p-y);( 16) 32659 ,第二行为 ( 17)2356913. 以下程序运行后输出结果中第一行为 第三行为( 18) 256 。#include stdio.h#include stdlib.hstruct node char data; struct node *next; struct node *insert(struct node *h,char c) struct node *p,*p1,*p2;p=(struct node*)

20、malloc(sizeof(struct node); p-data=c;p-next=NULL;if(h=NULL) h=p;else p1=p2=h; while(cp1-data&p1-next!=NULL) p2=p1;p1=p1-next; if(cdata) if(p1=h) p-next=h;h=p; else p2-next=p;p-next=p1;else p1-next=p;return h;struct node *del(struct node *h) struct node *p=h;while(p!=NULL) if(p-data%2=0) p-next=p-nex

21、t-next;p=p-next;return h;void print(struct node *h) struct node *p=h;while(p!=NULL) printf(%c,p-data); p=p-next; printf(n);void main() struct node *head=NULL;char *item=32659,*p=item;puts(item);while(*p) head=insert(head,*p+);print(head); del(head); print(head);14. 以下程序的功能是:求 a 数组中前 4 个元素之和及后 6 个元素之

22、和。试完善程序以达 到要求的功能。int fsum(int *array,int n) int i,s;s=0;for(i=0;( 19) in ; i+)s+=arrayi;return(s);void main(void) int a15=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;int sumh,sumt;sumh=fsum(a,4);sumt=( 20) fsum(&a9,6);printf( “ %d %d n” ,sumh,sumt);15以下程序对二维数组 a 中存储的 N N矩阵做如下操作:先将每一行中值最大的元素与 该行位于主对角线处的元素交换值, 然后对主对角线上的所有元素排序使其自左上角 到右下角升序排列,最后输出排序后主对角线上各元素的值。试完善程序以达到要求 的功能。#include #define N 5vo

温馨提示

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

评论

0/150

提交评论