收藏 分销(赏)

四川省计算机等级考试二级C语言机试题23.doc

上传人:快乐****生活 文档编号:3065435 上传时间:2024-06-14 格式:DOC 页数:19 大小:52.50KB
下载 相关 举报
四川省计算机等级考试二级C语言机试题23.doc_第1页
第1页 / 共19页
四川省计算机等级考试二级C语言机试题23.doc_第2页
第2页 / 共19页
四川省计算机等级考试二级C语言机试题23.doc_第3页
第3页 / 共19页
四川省计算机等级考试二级C语言机试题23.doc_第4页
第4页 / 共19页
四川省计算机等级考试二级C语言机试题23.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、四川省计算机等级考试二级C语言机试题(第二十三次) 2009-03-29 16:39:03 (第一套)(60分钟)一、程序调试题( 文件名 test1-1.c )(40分)磁盘上有一个名为test1-1.c的C程序文件,其功能是:输入一个字符串,将其中的每一个连续的数字序列看作一个整数,将这些整数检索出来后依次放入一个long int型数组中。请改正程序中的错误,使程序能得出正确的结果。注意:不要增加或删除行,不要修改程序结构。源程序如下:#include #include main() char str100, *p=str, help15; static long int num50; i

2、nt i=0, k=0, m, sign=0; printf(ninput the string:); scanf(%s, p); do if(*p=0 & *p=0) numi+=(helpk-48)*(long int)pow(n+,10); i+; k=0; sign=0; else p+; while(*(p-1)!=0); for(m=0; mi; m+) printf(%d, numm);二、编写程序( 程序文件名取为 test1-2.c )(60分)请用函数调用方式编写程序,要求能实现:(1)在被调函数中求出1到1000之内能被7或11整除、但不能被7或11同时整除的所有整数,并

3、把它们放到数组a中。(2)在主函数中将符合上述条件的整数个数和所有整数输出到屏幕以及文件test1-2.dat中。(要求每行输出10个数)(第二套)(60分钟)一、程序调试题( 文件名 test2-1.c )(40分)磁盘上有一个名为test2-1.c的C程序文件,其功能是:求出数组中值最大的元素在数组中的下标,并将最大值增添在数组的最后。如:876 675 896 101 301 401 980 431 451 777 (原数组)876 675 896 101 301 401 980 431 451 777 980 (增添后的数组)请改正程序中的错误,使程序能得出正确的结果。注意:不要增加或

4、删除行,不要修改程序结构。源程序如下:#include #define N 80void fun(int *s, int *t, int k) int i,m; *k=0; m=*s; for(i=1;i(*t-1);i+) if(ms+i) m=*(s+i); k=i; si+1=m; *t+; main() int aN=876,675,896,101,301,401,980,431,451,777; int i, n=10, mi; fun(aN, &n, &mi); printf(nThe index of max is:%dn,mi); printf(The result:n); f

5、or(i=0;in;i+) printf(%4d, &ai);二、编写程序( 程序文件名取为 test2-2.c )(60分)在三位整数(100至999)中寻找其中有两位数字相同的完全平方数,例如,144、676等,它们既是完全平方数,又有两位数字相同,将符合条件的整数依次从小到大存入数组aa中。要求:(1)编制函数fine()实现寻找满足条件的完全平方数,并将满足条件的完全平方数的个数通过函数fine()返回。(2)在main()函数中把符合要求的完全平方数及个数输出到屏幕上和文件test2-2.dat中。(第三套)(60分钟)一、程序调试题( 文件名 test3-1.c )(40分)磁盘上

6、有一个名为test3-1.c的C程序文件,其功能是:实现将字符串中字母以外的其他字符去掉组成新的字符串输出。运行结果为:abcdEEEa请改正程序中的错误,使程序能得出正确的结果。注意:不要增加或删除行,不要修改程序结构。源程序如下:#include #include void fun(char s) int i,j; for(i=j=0;si;i+); if(isalpha(si) sj=si; si=0; void main() char str80=a*b$c(d!EEE !a.; fun(str80); printf(n); puts(str);二、编写程序( 程序文件名取为 test

7、3-2.c )(60分)编写main函数,从键盘输入任意5个4位正整数存入数组aa中,调用函数sort(),函数sort()的功能是:按每个数后三位的大小进行升序排列,并将结果依次存入数组bb中,如果后三位的数组相等,则按4位正整数的大小进行降序排列。例如:输入:6012,5099,9012,7025,8088,则输出结果为:9012,6012,7025,8088,5099。最后,在main()函数中把排序后的结果输出到文件test3-2.dat中。注意:程序中不得使用全局变量。(第四套)(60分钟)一、程序调试题( 文件名 test4-1.c )(40分)磁盘上有一个名为test4-1.c的

8、C程序文件,其功能是:从s所指向的串中,找出包含有t所指字符串的个数。例如:s所指向的串为abcdabfab,t所指字符串为ab,则所求个数为3。请改正程序中的错误,使程序能输出正确的结果。注意:不得增行或删行,也不得更改程序的结构。源程序如下:#include #include int fun(char s, char t) int n=0 ; char *p , *r ; while(*s) p=s; r=t ; while(*r) if(*r=*p) r+; p+; else continue; if(r=0) n+; r+; return *s; main() int m ; char

9、 s100, t100; printf(nPlease enter string s:); gets(s); printf(nPlease enter string t: ); gets(t); m=fun(s,t); printf(nThe result is: m= %dn,m);二、编写程序( 程序文件名取为 test4-2.c )(60分)在main函数中定义一个二维数组a,从已给文件test4-2.in中读入nn个整数到二维数组a中,其中n的大小由用户在运行程序过程中从键盘上输入(要求n=5),调用fun函数,fun函数实现:(1)数组主对角线上各元素的值加1。(2)其余元素以主对角

10、线划分,右上角各元素的值乘以3,左下角各元素的值乘以2。最后,在主函数中将修改后的数组按n行n列的格式输出到屏幕和磁盘文件test4-2.out中。四川省计算机等级考试二级C语言机试题(第二十三次)答案 2009-03-29 16:39:32 23-1套 参考答案:一、程序调试题(文件名为test1-1.c)(40分)#include #include /* 改为: math.h */main() char str100, *p=str, help15; static long int num50; int i=0, k=0, m, sign=0; printf(ninput the stri

11、ng:); scanf(%s, p); do if(*p=0 & *p=0 & *p=48 & *p=0) numi+=(helpk-48)*(long int)pow(n+,10); /* 改为:pow(10,n+) */ i+; k=0; sign=0; else /* 改为:else; */ p+; while(*(p-1)!=0); for(m=0; mi; m+) printf(%d, numm); /* 改为:%ld (即长整型格式输出)*/评分标准:每改对一处得6分,结果正确得4分二、编程题(程序文件取名为 test1-2.c)(60分)评分标准:1被调函数fun编写正确 20分

12、 2文件打开和关闭正确 10分3函数调用正确 5分 4屏幕输出和文件输出正确 15分5输出格式正确 5分 6程序结构合理 5分参考程序:# include # define M 1000int fun(int *a) int m,k=0; for(m=1;m=M;m+) if( (m%7=0 & m%11!=0) | (m%7!=0 & m%11=0) ) ak+=m; return k;main() int aM,n,k; FILE *fp; clrscr(); /*清屏函数*/ fp=fopen(test1-2.dat,w); n=fun(a); printf(%dn,n); fprint

13、f(fp,%dn,n); for(k=0;kn;k+) printf(%5d,ak); fprintf(fp,%5d,ak); if( (k+1)%10 = 0 ) printf(n); fprintf(fp,n); fclose(fp);23-2套 参考答案:一、程序调试题(文件名 test2-1.c)( 40 分 )#include #define N 80void fun(int *s, int *t, int k) /* 改为 *k */ int i,m; *k=0; m=*s; for(i=1;i(*t-1);i+) if(ms+i) /* 改为 *(s+i) */ m=*(s+i)

14、; k=i; /* 改为 *k */ si+1=m; *t+ ; /* 改为 (*t)+ */main() int aN=876,675,896,101,301,401,980,431,451,777; int i, n=10, mi; fun(aN, &n, &mi); /* 改为 a */ printf(nThe index of max is:%dn,mi); printf(The result:n); for(i=0;in;i+) printf(%4d, &ai ); /* 改为 ai */评分标准:每改对一处得6分,结果正确得4分二、编程题(程序文件取名为 test2-2.c)(60

15、分)评分标准:1被调函数fun编写正确 20分 2文件打开和关闭正确 10分3函数调用正确 5分 4屏幕输出和文件输出正确 15分5输出格式正确 5分 6程序结构合理 5分参考程序:# include # define M 1000int fun(int *a) int m,k=0; for(m=1;m=M;m+) if( (m%7=0 & m%11!=0) | (m%7!=0 & m%11=0) ) ak+=m; return k;main() int aM,n,k; FILE *fp; clrscr(); /*清屏函数*/ fp=fopen(test1-2.dat,w); n=fun(a)

16、; printf(%dn,n); fprintf(fp,%dn,n); for(k=0;kn;k+) printf(%5d,ak); fprintf(fp,%5d,ak); if( (k+1)%10 = 0 ) printf(n); fprintf(fp,n); fclose(fp);23-3套 参考答案:一、程序调试题(文件名 test3-1.c)( 40 分 )#include #include /* 改为 ctype.h */void fun(char s) /* 改为 *s */ int i,j; for(i=j=0;si;i+); /* 改为 去掉分号 ;*/ if(isalpha(

17、si) sj =si; /* 改为 sj+ */ si =0; /* 改为 sj */void main() char str80=a*b$c(d!EEE !a.; fun(str80); /* 改为 str */ printf(n); puts(str);评分标准:每改对一处得6分,结果正确得4分二、编程题(程序文件取名为 test3-2.c)(60分)评分标准:1文件定义、打开、关闭正确 10分 2数据讲稿和文件写入正确 10分3函数调用正确 5分 4函数定义和参数使用正确 20分5结果正确 10分 6程序结构合理 5分参考程序:#include void sort(int aa,int

18、bb) int i,j,data; for(i=0;i5;i+) for(j=i+1;jaaj%1000) data=aai; aai=aaj; aaj=data; else if(aai%1000=aaj%1000) if(aaiaaj) data=aai; aai=aaj; aaj=data; for(i=0;i5;i+) bbi=aai;void main() int aa5,bb5; FILE *out; int i; printf(nplease input 5 numbers:); for(i=0;i5;i+) scanf(%d,&aai); sort(aa,bb); out=fo

19、pen(test3-2.dat,w); printf(n); for(i=0;i5;i+) printf(%5d,bbi); fprintf(out,%5d,bbi); fclose(out);23-4套 参考答案:一、程序调试题(文件名 test4-1.c)( 40 分 )#include #include int fun(char s, char t) /* 改为 char *s, char *t */ int n=0 ; char *p , *r ; while(*s) p=s; r=t ; while(*r) if(*r=*p) /* 改为 = */ r+; p+; else cont

20、inue; /* 改为 break */ if(r=0) /* 改为 *r */ n+; r+; /* 改为 s+ */ return *s; /* 改为 n */ main() int m ; char s100, t100; printf(nPlease enter string s:); gets(s); printf(nPlease enter string t: ); gets(t); m=fun(s,t); printf(nThe result is: m= %dn,m);评分标准:每改对一处得6分,结果正确得4分二、编程题(程序文件取名为 test4-2.c)(60分)评分标准:

21、1被调函数编写正确 20分 2函数调用正确 5分3文件打开和关闭正确 5分 4文件读、写正确 15分5N输入和屏幕输出正确 10分 6程序结构合理 5分参考程序:#include#define N 5void fun(int aNN,int n) int i,j; for(i=j=0;in;i+,j+) aij=aij+1; for(i=1;in;i+) for(j=0;ji;j+) aij=aij*2; for(i=0;in;i+) for(j=i+1;jn;j+) aij=aij*3;main() int aNN,i,j,n; FILE *fp; clrscr(); printf(“*in

22、put n *n”); scanf(“%d”,&n); fp=fopen(test4-2.in,r); if(fp=NULL) printf(file test4-2.in not open); exit(0); for(i=0;in;i+) for(j=0;jn;j+) fscanf(fp,%d,&aij); fclose(fp); fun(a,n); fp=fopen(test4-2.out,w); if(fp=NULL) printf(file test4-2.in not open); exit(0); for(i=0;in;i+) for(j=0;jn;j+) printf(%5d,aij); fprintf(fp,%d,aij); printf(n); fprintf(fp,n);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服