22次机试试题.doc_第1页
22次机试试题.doc_第2页
22次机试试题.doc_第3页
22次机试试题.doc_第4页
22次机试试题.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

四川省计算机等级考试第二十二次二级 (C与 C+语言 ) 机试试卷(2005年4月 17日)(第一套)(60分钟)一、程序调试题 (文件名 testl-l.c)(40分) 磁盘上有一个名为testl-l.c的C程序文件,其中函数move的功能是将字符串str中的字符循环左移 r位。例如,输入HELLO,r=2,则应该输出LLOHE。注意:不得增行或删行,也不得更改程序的结构。源程序如下:#include #include char move( char *str, int r) char t; int i,len; len=strlen(str); for(k=0;kstrlen(s) printf(n Data error!n); while(mstrlen(s); printf(n Result:%sn,move(s,m);二、编写程序 (程序文件名取为 testl-2.c)(60分) 编写一个程序,从文件testl-2.in中读出一行字符(即一个字符串,长度在128个字符内),将排列在奇数位上的字符取出,按从小到大的顺序排列并输出到屏幕上。要求: (1) 在main函数中实现从文件testl-2.in中读出一行字符,调用sort函数排序,然后将结果输出到屏幕上。(2)编写sort函数,实现将排列在奇数位上的字符取出,然后按从小到大的顺序排列。例如,hqwbodze奇数位为q、b、d、e,排序后为bdeq。(第二套)(60分钟)一、程序调试题 (文件名为 test2-l.c)(40分)磁盘上有一个名为test2-l.c的C程序文件,其功能是找出数组a中每行的最小值并输出。请改正程序申的错误,使程序能得出正确的结果。注意:不得增行或删行,也不得更改程序的结构。源程序如下:#include main() float a 10, min; int i, j; int invert(); for(i=0;i10;i+) for(j=0;j10;j+) aij= i+j; for(i=0;i10;i+) min=invert(a,10); printf(a%dmin=%fn,i,min); float invert(float *a, n) int i; float min; min=*(a+0); for(i=1;in;i+) if(min*(a+i) min=(a+i); return min;二、编写程序 (程序文件名取为 test2-2.c)(60分)请编写函数select判断一个数能否被3和5整除,main函数中调用select函数,求出所有小于400、能被3和5整除的数(例如15,30等),然后将求得的数以每行5个数,每个数占10列方式输出到屏幕上和存放到文件test2-2.dat中。(第三套)(60分钟)一、程序调试题 (文件名为 test3-1.c) (40分)磁盘上有一个名为test3-l.c的C程序文件,其函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数返回,平均分存放在形参aver所指的存储单元中。例如,若8名学生的成绩为:80.5 60 72 90.5 98 51.5 88 64,则低于平均分的学生人数为4(平均分为75.5625)。请改正程序中的错误,便它能计算出正确的结果。注意:不得增行或删行,也不得更改程序的结构。源程序如下:#include int fun(float s, int n, float *aver) float ave,t=0.0; int count,k,i; for(k=0;kn;k+) t=sk; ave=t/n; for(i=0;iave) count+; *aver=&ave; return count;main() float s30,aver; int m, i; printf(nPlease enter n(30):); scanf(%d, &m); printf(nPlease enter %d mark:n,m); for(i=0;im;i+) scanf(%f, s+i); printf(nThe number of students:%d n,fun(s, m, aver); printf(Ave=%f n, aver);二、编写程序 (程序文件名取为 test3-2.c) (60分)编写函数fun和input: (1) 函数fun对整数数组s中除首、尾数据外的其余M-2个数据按升序排列。 例如,若原来的数据为9876543,则排序后输出为9456783。 (2) 函数input从文件test3-2.in中读出待排序的数据。编写main函数,调用input函数和fun函数,将排序的结果输出到屏幕上。22-1套 参考答案:一、程序调试题(文件名为test1-1.c)(40分)#include #include char move( char *str, int r) /* 改为 *move */ char t; int i,len;/* 改为 k */ len=strlen(str); for(k=0;k=r;k+) /* 改为 kstrlen(s) printf(n Data error!n); while(mstrlen(s); printf(n Result:%sn,move(s,m);评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为 test1-2.c)(60分)评分标准:1被调函数编写正确 25分2文件打开、数据读出正确 10分3函数调用正确10分4屏幕输出正确10分5程序结构合理5分参考程序:#include sort(char a,char b) char c; int i,j=0; for(i=1;istrlen(a);i+=2) bj+=ai; bj=0; for(i=1;istrlen(b);i+) for(j=0;jbj+1) c=bj; bj=bj+1; bj+1=c; main() FILE *in; char a128,b65; in=fopen(test1-2.in,r); fgets(a,128,in); fclose(in); sort(a,b); puts(b);22-2套 参考答案:一、程序调试题(文件名为test2-1.c)(40分)#include main() float a 10, min;/* 改为 a1010 */ int i, j; int invert(); /* 改为 float */ for(i=0;i10;i+) for(j=0;j10;j+) aij= i+j; for(i=0;i10;i+) min=invert(a,10);/* 改为 ai */ printf(a%dmin=%fn,i,min); float invert(float *a, n) /* 改为 int n */ int i; float min; min=*(a+0); for(i=1;in;i+) if(min */ min=(a+i);/* 改为 *(a+i) */ return min;评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为 test2-2.c)(60分)评分标准:1被调函数编写正确 15分2文件打开、数据写入正确 15分3函数调用正确10分4屏幕输出正确10分5程序结构合理10分参考程序:# include int select(int a) if(!(a%3)&!(a%5) return 1; else return 0;main() int i,k=0; FILE *fp; if(fp=fopen(test2-2.dat,wb)=NULL) printf(cannot open the filen); exit(0); for(i=3;i400;i+) if(select(i) k=k+1; printf(%10d,i); fprintf(fp,%10d,i); if(k%5=0) printf(n); fprintf(fp,n); fclose(fp);22-3套 参考答案:一、程序调试题(文件名为test3-1.c)(40分)#include int fun(float s, int n, float *aver) /* 改为 *s */ float ave,t=0.0; int count,k,i; /* 改为 count=0 */ for(k=0;kn;k+) t=sk; /* 改为 += */ ave=t/n; for(i=0;iave) count+; /* 改为 */ *aver=&ave; /* 改为 ave */ return count;main() float s30,aver; int m, i; printf(nPlease enter n(30):); scanf(%d, &m); printf(nPlease enter %d mark:n,m); for(i=0;im;i+) scanf(%f, s+i); printf(nThe number of students:%d n,fun(s, m, aver); /* 改为 &aver */ printf(Ave=%f n, aver);评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为 test3-2.c)(60分)评分标准:1被调函数编写正确 20分2文件操作和读数据正确 15分3函数调用正确10分4屏幕输出正确10分5程序结构合理5分参考程序:#include#include#define M 10void fun(int *s) int i,j,t; for(i=1;iM-2;i+) for(j=i+1;jsj) t=si; si=sj; sj=t; int input(int s) FILE *fp; i

温馨提示

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

评论

0/150

提交评论