1、 四川省计算机等级考试二级四川省计算机等级考试二级 C 语言机试题语言机试题 23 四川省计算机等级考试二级 C 语言机试题(第二十三次)2009-03-29 16:39:03 (第一套)(60 分钟)一、程序调试题(文件名 test1-1.c)(40 分)磁盘上有一个名为 test1-1.c 的 C 程序文件,其功能是:输入一个字符串,将其中的每一个连续的数字序列看作一个整数,将这些整数检索出来后依次放入一个 long int型数组中。请改正程序中的错误,使程序能得出正确的结果。注意:不要增加或删除行,不要修改程序结构。源程序如下:#include#include main()char st
2、r100,*p=str,help15;static long int num50;int 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 之内能被
3、7 或 11 整除、但不能被 7 或 11 同时整除的所有整数,并把它们放到数组 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
4、 980(增添后的数组)请改正程序中的错误,使程序能得出正确的结果。注意:不要增加或删除行,不要修改程序结构。源程序如下:#include#define N 80 void 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);prin
5、tf(The result:n);for(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 分钟)一、程序调试
6、题(文件名 test3-1.c)(40 分)磁盘上有一个名为 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);二
7、、编写程序(程序文件名取为 test3-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 分钟)一、程序调试题(文件名 te
8、st4-1.c)(40 分)磁盘上有一个名为 test4-1.c 的 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;ma
9、in()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);二、编写程序(程序文件名取为 test4-2.c)(60 分)在 main 函数中定义一个二维数组 a,从已给文件 test4-2.in中读入 n n 个整数到二维数组 a 中,其中 n 的大小由用户在运行程序过程中从键盘上输入(要求 n=5),调用 fun函数,fun 函数实现:(1)数组主对角线上各元
10、素的值加 1。(2)其余元素以主对角线划分,右上角各元素的值乘以 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;pri
11、ntf(ninput the string:);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 1000 int 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);fprintf(fp,%dn,n);for(k=0;kn
13、;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 80 void 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);k=i;/*改为*k */si+1=m;*t+;/*改为(*t)+*/main()int aN=876
14、,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 分)评分标准:1被调函数 fun 编写正确 20 分 2文件打开和关闭正确 10 分 3函数调用正确 5分 4屏幕输出和文件输出正确 15分 5输
15、出格式正确 5分 6程序结构合理 5 分 参考程序:#include#define M 1000 int 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);fprintf(fp,%dn,n);for(k=0;kn;k+)printf(%5d,ak);fprintf(fp,%5d,ak);if(k+1)%1
16、0=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(si)sj=si;/*改为 sj+*/si=0;/*改为 sj */void main()char str80=a*b$c(d!EEE !a.;fun(str80);/*改为 str */printf(n);puts(str);评分标准
17、:每改对一处得 6 分,结果正确得 4 分 二、编程题(程序文件取名为 test3-2.c)(60 分)评分标准:1文件定义、打开、关闭正确 10 分 2数据讲稿和文件写入正确 10 分 3函数调用正确 5分 4函数定义和参数使用正确 20 分 5结果正确 10 分 6程序结构合理 5 分 参考程序:#include void sort(int aa,int 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=aa
18、i;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=fopen(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#
19、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 continue;/*改为 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
20、);m=fun(s,t);printf(nThe result is:m=%dn,m);评分标准:每改对一处得 6 分,结果正确得 4 分 二、编程题(程序文件取名为 test4-2.c)(60 分)评分标准:1被调函数编写正确 20 分 2函数调用正确 5 分 3文件打开和关闭正确 5 分 4文件读、写正确 15 分 5N 输入和屏幕输出正确 10 分 6程序结构合理 5 分 参考程序:#include#define N 5 void 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
21、;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(“*input n*n”);scanf(“%d”,&n);fp=fopen(test4-2.in,r);if(fp=NULL)printf(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(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);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1