




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2005-2006学年第二学期C程序设计期末试卷(闭卷)一、单项选择题(20分)1. 在定义函数时,能用以下 (1) 标识符作函数名。 A.struct B._abc C. 8abc D. 2在一个函数被调用执行过程中,当执行到函数体中 (2) 语句后立即无条件返回主调函数。 A.goto B.break C.continue D.return 3以下关于main函数定义的叙述中,错误的是 (3) 。 A. main函数是自定义函数,因此函数体中的声明和语句都是可选的B. main函数定义时可以有形式参数也可以没有形式参数C. main函数定义必须出现在一个源程序的起始位置D. 在一个源程序中只能有一个main函数定义4以下函数定义中正确的是 (4) 。 A. double fun(int x,y) return x*y; B. double fun(int x,int x) return x*x; C. double fun(register int x,int y) return x*x;D. double fun(extern int x,int y) return x*y;5若函数定义为void fun(int x,int y,int *p) *p= xy ? x : y; , 且main函数中有声明“int a=1,b=2,c2=0;”,则以下语句中正确的是 (5) 。 A.printf(“%d”,fun(a,b,c); B.fun(a,b,c+1); C.fun(a,b,c2); D.fun(1,2);6. 若函数定义为double fun(double x,double y) return x/y;,则以下fun引用声明(函数原型)中错误的是 (6) 。 A. double fun(double x,double y);B. double fun(double a,double b);C. double fun(double ,double );D. float fun(double x,double y);7以下程序段中,有语法错误的是 。 A. double f; double f (double x) return f=x*x; C. double f (double x) double f; return f=x*x; B. double f (double f) return f*f; D. double f (double x) if(x0) double f ; return f=x; else double f ; return f= -x; 8以下一维数组声明中,正确的是 (8) 。 A. int a ; B.int b10,ab; C. int a4=1,2,3,4,5; D. int asizeof(a)=a;9以下二维数组声明中,正确的是 (9) 。 A. char b23=“a”.”b”.”c”; B. char b3=0; C. char b2=0; D. char b=0;10已知有二维数组声明“int a33=1,2,3,4,5,6,7,8,9;”,不能正确输出数组a中第2行(行下标为1)第3列元素(列下标为2)的语句是 (10) 。 A.printf(“%d”,a12); B. printf(“%d”,*(*(a+1)+2); C. printf(“%d”,*(a+1)2); D. printf(“%d”,*(a1+2);11若需要将字符串“happy”和“good luck”存储到数组中,则以下选项中正确的是 (11) 。A. char s210; s210=“happy”, “good luck” ; B. char s210; s0= “happy”;s1=“good luck”;C. char s210; strcpy(s00,“happy”);strcpy(s10,“good luck”);D. char s210; strcpy(s0,“happy”);strcpy(s1,“good luck”);12已知有声明“char *s=”happy birthday”,t10;”,要求将s指向的字符串中“birthday”子串复制到t数组中并输出t数组中的字符串,正确的操作的是 (12) 。 A.puts(strcpy(t,s); B. puts(strcpy(t,s+6); C. puts(strcat(t,s); D. puts(strcat(t,s+6);13在以下结构类型定义中,正确的是 (13) 。 A. struct for int x,y; ; C. struct For static int x, y; ; B. struct FOR int x,y; ; D. struct FOR int x; int x; ; A.B.C.D.13A.B.C.D.14已知有数据类型定义及变量声明如下:struct int a; struct char name10;b;s=1,”mark”,*ps=&s;则以下选项中能够输出“mark”的语句是 (14) 。A.puts(name); B.puts() C.puts(); D.puts(*);15若已有数据类型定义为“struct int x,y;a=2,3,b=0;”,则以下语句中正确的是 (15) 。A.b=a; B.if(a!=b)b=a; C.b+=a; D.b+;16在基于以下全局对象标识符p的声明中,不能做p+运算的声明是 。 A.int p; B.int a10, *p=a; C. int a2,*p2=a; D. int a22, (*p)2=a;17. 若已有声明“int a3=1,2,3,4,5,6,*p1=&a00, (*p2)3=a;”,以下选项中的语句分别被执行后,屏幕输出结果不是4选项是 (17) 。 A. printf(%d,a10); B. printf(%d,a03); C. printf(%d,p14); D. p2+; printf(%d,p200);18以下选项均为fun函数的定义,其中有语法错误的是 (18) 。 A. void fun(int x, int *y) x*=*y;B. void fun(int x, int *y) *x*=*y; C. void fun(int *x,int y) *x+=y;D. int *fun(int *x,int y) return x+=y;19以下表达式中,不要求操作数a必须是左值的选项是 (19) 。 A.a+ B.*a C.-a D.a=0; 20已知有数据类型定义为“enum flowerROSE,LILY,TULIPflo2=1,2,*pf;”则以下语句中正确的是 (20) 。 A. floROSE=LILY; B.ROSE=floLILY; C. pf=&ROSE;D. floLILY+TULIP=LILY;二、填空题(18分)1当定义一个无返回值函数时,函数的返回值类型标应为 (1) 。 2若已有二维数组声明“int a3=1,2,3,4,5,6;”,则该数组共有 (2) 个数组元素。 3若有如下数据类型定义及数组声明,则p数组在内存中占用的存储字节数为 (3) 。 struct long x; union int a; char b; float c;y;p5;4“int (*pa)();”是 (4) 的声明。 5当程序中需要调用库函数strcmp时,应当包含头文件 (5) 。 6当某程序准备从一个磁盘文件中读入数据,需要有类似“FILE *fp;”这样的声明,该声明中的FILE是指 (6) 。 7. 以下程序运行后输出结果是 (7) . #includeint f(int x,int y) if(xy) return x,y; else return y,x;main() printf(%d,f(2,3); 8. 以下程序运行后输出结果的第一行是 (8) 第二行是 (9) 。 #includevoid f(int *a,int n, int times) int i,t=a0; for(i=0;in;i+)ai=ai+1; an-1=t; times+;main() int a5=1,2,3,4,i; f(a,4, a4); for(i=0;i4;i+)printf(%d ,ai); printf(n%d,a4);9以下程序运行后输出结果的第一行是 (10) 第二行是 (11) 。 #includeint f() int i,s=0; for(i=1;i=3;i+) static int i=1; s=s+i; i+; return s;main() int i; for(i=0;i2;i+)printf(%dn,f();10以下程序运行后输出结果的第一行是 (12) 第二行是 (13) 。#includeint f(int n,int x) if(n=1)return x; else return f(n-1,x+2)+x;main() printf(%dn,f(1,2); printf(%d,f(3,2);11以下程序运行后输出结果的第一行是 (14) 第二行是 (15) 第三行是 (16) 。#include int create(int (*a)5,int m,int n) int i,j,k; a00=m; for(k=1;kn;k+) i=k; j=0; aij=+m; while(j0)a-ij=+m; main() int i,j,x55=0; create(x,1,3); for(i=0;i3;i+) for(j=0;j3;j+) printf(%d ,xij); printf(n); 12以下程序运行后输出结果的第一行是 (17) 第二行是 (18) 。 #include#includevoid ss(char a10,int *m,char b10,int *n) int i,j,k; for(i=0;i*m;i+) for(j=0;j*n;j+) if(strcmp(ai,bj)=0) for(k=i;k*m-1;k+) strcpy(ak,ak+1); *m=*m-1; i-; break; for(i=0;i*m;i+) strcpy(bi+*n,ai); *n=*n+*m;main() char a10=this,C; char b1010=this,VC; int i,m=2, n=2; ss(a,&m,b,&n); for(i=0;im;i+) printf(%s ,ai); printf(n); for(i=0;in;i+) printf(%s ,bi);三、完善程序题(12分)1函数change功能:将x指向的一个二维数组中存储的nn矩阵变换为其转置矩阵(转置矩阵的数学定义:把矩阵A的行换成同序数的列得到的一个新矩阵叫做A的转置矩阵)。#include#define swap(a,b,c) (1) void change(int x,int n) int i,j,k; for(i=0;in;i+) for(j=0; (2) ;j+) swap(xi*n+j,xj*n+i,k); main() int a33=1,1,1,2,2,2,3,3,3,i,j; change( (3) , 3); for(i=0;i3;i+) for(j=0;j3;j+) printf(%d ,aij); putchar(n); 2insert函数功能:将key中保存的一组数据(一个新记录)插入到a指向的一个有序结构数组中,已知该结构数组按name成员字典顺序存储,插入新记录后结构数组仍然按name成员的字典顺序存储。#include#includestruct p int id; char name5;int insert(struct p a,int n,struct p key) int i,j,k; for(i=0;i0 ) (4) ; for(j=n;ji;j-) (5) ; (6) =key; return +n;main() int i,n=4; struct p x5=1,a,3,c,4,d,5,e,y=2,b; n=insert(x,4,y); for(i=0;in;i+) printf(%d, %s n,xi.id,);3find函数功能:在x指向的一个有序二维数组的前n行中查找值为key的数组元素,若找到则将该数组元素在二维数组中的行、列下标值分别保存到row和col指向的变量中且函数返回1,若未找到则函数返回0。已知x指向的二维数组的每一行中元素的值均从小到大顺序存储,第i行中所有元素的值均小于第i+1行中所有元素的值(i=0,1,2,3n-1)。算法:用折半查找法定位值为key的数组元素所在行,用线性查找法在已经定位的行中查找值为key的数组元素。#includeint find(int x5,int n,int key,int *row,int *col) int i,low=0,high=n-1,mid; while(low=xmid0& key=xmid4)break; if(keyxmid4) low=mid+1; for(i=0;i5;i+) if( (9) ) *row=mid; *col=i; return 1; return 0;main() int a55=1,3,4,6,9,12,14,15,17,19,22,23,24,26,28, 31,33,34,36,37,42,44,46,47,48,m,n,key; puts(input key:); scanf(%d,&key); if(find(a,5,key,&m,&n)printf(%d is stored at a%d%d,key,m,n); else printf(n %d not found!,key);4f1函数功能:建立一个链表,链表各节点的数据来源于a指向的一个指针数组中的前n个元素所指向的n个字符串,函数返回链表首节点的地址。f2函数功能:对于h指向的链表中连续出现的多个name成员相同的那些结点,统计并保存这些相同结点的数量,保留一个结点,删除其余结点。#include#include#includetypedef struct p char name20; int count; struct p *next;PS;PS *f1(char *a,int n) int i,c=1;char name20; PS *head=0,*p,*tp; for(i=0;iname,ai); tp-count=1;tp-next=NULL; if(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 子电厂安全培训内容课件
- 子宫肌瘤的诊疗课件
- 年度公司安全培训总结课件
- 娱乐消防安全培训课件
- 威远消防安全培训课件
- 年前安全卫生培训内容课件
- 平面镜成像课件笔记
- 平面镜成像原理作图课件
- 平面设计移动对称课件
- 工业安全培训资料课件
- 电子政务概论-形考任务5(在线测试权重20%)-国开-参考资料
- 2024年贵州省贵阳市中考生物地理合卷试题(含答案逐题解析)
- DL∕T 2487-2022 电力燃煤机械名词术语
- 藏餐培训前台课程设计
- 对外投资合作国别(地区)指南 -玻利维亚-20240530-00504
- 19S406建筑排水管道安装-塑料管道
- 沪教版九年级上册化学第三章《物质构成的奥秘》检测卷(含答案解析)
- 如何与客户建立有效的沟通
- 薯片加工项目规划设计方案
- 复方电解质醋酸钠葡萄糖注射液-药品临床应用解读
- 变压器租赁协议书x
评论
0/150
提交评论