1、2124次考试上机试题及参考答案四川省普通高等学校计算机应用知识和能力第二十一次等级考试二级 (C与 C+语言 )上机考试试卷 (第一套 ) 参考答案一、程序调试题(文件名为test1-1.c)(40分)#include #include char *fun( char str) /* 改为 *str */ int i ; for(i=0 ; str; i+) /* 改为 stri */ if(a=stri)|(stri=z) /* 改为 & */ stri+=32; /* 改为 -= */ return *str; /* 改为 str */main() char str81; printf(
2、n Please enter a string:); gets(str81); /* 改为 str */ printf(n The result string is:n%s , fun(str);评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为 test1-2.c)(60分)评分标准:1被调函数编写正确 20分 2文件打开、数据读入正确和定位正确 10分3函数调用正确 5分 4屏幕输出和文件输出正确 20分5程序结构合理 5分参考程序:# include # include int prime(int a,int n) int i,j,k=0,flag=0; for(
3、i=0;in;i+) for(j=2;jai;j+) if(ai%j=0) flag=0; break; else flag=1; if(flag) ak+=ai; return k;main() int n,i,a10; FILE *fp; fp=fopen(test1-2.txt,r+); for(n=0;n10;n+) fscanf(fp,%d,&an); n=prime(a,n); fseek(fp,0,2); for(i=0;in;i+) printf(%5d,ai); fprintf(fp,%5d,ai); fclose(fp);四川省普通高等学校计算机应用知识和能力第二十一次等级
4、考试二级 (C与 C+语言 )上机考试试卷 (第二套 ) 参考答案一、程序调试题(文件名为test2-1.c)(40分)#include #define N10 /* 改为 N 10 */void fi(int a,int m) /* 改为 int */ int low=0,high=N,mid; while (low=high) mid=(low+high)/2; if(m=amid) /* 改为 mamid */ low=mid+1; else return(mid); return(-1);main() int i, aN=-3,4,7,9,13,45,67,89,100,180,k,m
5、; for(i=0;i0) printf(m=%d,index=%dn,m,k); /* 改为 k=0 */ else printf(Not be found!n);评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为 test2-2.c)(60分)评分标准:1被调函数编写正确 20分 2文件打开、数据读入正确 15分3函数调用正确 5分 4屏幕输出及结果正确 15分5程序结构合理 5分参考程序:# include # define M 3# define N 4void fun(int ttMN,int ppN) int i,j,min; for(j=0;jN;j+)
6、min=tt0; for(i=0;iM;i+) if(ttijmin) min=ttij; ppj=min; main() int tMN; int pN,i,j,k; FILE *fp; fp=fopen(test2-2.dat,r); for(i=0;i3;i+) for(j=0;j4;j+) fscanf(fp,%d,&tij); fclose(fp); printf(The original data is :n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%6d,tij); printf(n); fun(t,p); printf(nThe resul
7、t is :n); for(k=0;kN;k+) printf(%4d,pk); printf(n);四川省普通高等学校计剪机应用知识和能力第二十一次等级考试二级 (C与 C+语言 )上机考试试卷 (第三套 ) 参考答案一、程序调试题(文件名为test3-1.c)(40分)#include void main() int i,k; /* 改为 k=0 */ char a80,b80,*p; p=*a; /* 改为 p=a */ gets(p); while(!*p) /* 改为 *p */ for(i=1;i3&*p!=0;p+,k+,i+) /* 改为 i=3 */ bk=*p; if(i=
8、4) bk=;k+; /* 改为 */ bk=0; puts(*b); /* 改为 b */评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为 test4-2.c)(60分)评分标准:1被调函数编写正确 20分 2文件打开、数据写入正确 10分3函数调用正确 10分 4屏幕输出正确 10分5m输入正确 5分 6程序结构合理 5分参考程序:# include int create(int a,int m) int i,j=0; for(i=1;i=m;i+) if(i%3=0 | i%7=0) aj+=i; return (j);main() int a80,m; int
9、 i,n; FILE *fp; if(fp=fopen(test3-2.dat,w)=NULL) printf(Cant open the file.n); exit(0); printf(Input m:n); scanf(%d,&m); n=creat(a,m); printf(n=%dn,n); fprintf(fp,n=%dn,n); for(i=0;in;i+) printf(%4d,ai); fprintf(fp,%4d,ai); fclose(fp);四川省普通高等学校计算机应用知识和能力第二十一次等级考试二级 (C与 C+语言 )上机考试试卷 (第四套 ) 参考答案一、程序调试
10、题(文件名为test4-1.c)(40分)#include main() char str81,c; int i,j,n; /* 改为 n=0 */ printf(n Enter a string:); gets(str81); /* 改为 str */ printf(n Enter a character:); getchar(c); /* 改为 c=getchar() */ for(i=j=0;stri;i+) if(stri!=c) strj=stri; /* 改为 j+ */ else n; /* 改为 n+ */ strj= ; /* 改为 strj= 0 */ printf(nST
11、R=%s,N=%dn,str,n); getchar();评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为 test4-2.c)(60分)评分标准:1输入数据正确 5分 2被调函数编写正确 20分3文件操作及数据写入正确 15分 4函数调用正确 5分5屏幕输出及结果正确 10分 6程序结构合理 5分参考程序:# include # include void fun(char *s,char *t) int i,j=0,n; n=strlen(s); for(i=0;in;i+) if(!(i%2=0 & si%2!=0) tj+=si; tj=0;main() cha
12、r s100,t100; FILE *fp; printf(Please enter a string:n); gets(s); fun(s,t); fp=fopen(test4-2.txt,w); printf(%sn%sn,s,t); fprintf(fp,%sn%sn,s,t); fclose(fp);四川省普通高等学校计算机应用知识和能力第二十二次等级考试二级 (C与 C+语言 )上机考试试卷 (第一套 ) 参考答案一、程序调试题(文件名为test1-1.c)(40分)#include #include char move( char *str, int r) /* 改为 *move
13、*/ 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
14、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);四川省普通高等学校计算机应用知识和能力第二十二次等级考试二级 (C与 C+语言 )上机考试试卷 (第二套 ) 参考答案一、程序调试题(
15、文件名为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;i
16、n;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.da
17、t,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);四川省普通高等学校计算机应用知识和能力第二十二次等级考试二级 (C与 C+语言 )上机考试试卷 (第三套) 参考答案一、程序调试题(文件名为test3-1.c)(40分)#include int fun(float s, int n, float *ave
18、r) /* 改为 *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
19、+) 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;i
20、M-2;i+) for(j=i+1;jsj) t=si; si=sj; sj=t; int input(int s) FILE *fp; int i; if(fp=fopen(test3-2.in,r)=NULL) printf(cannot open filen); return(0); for(i=0;iM;i+) fscanf(fp,%d ,&si); fclose(fp); return(1);main() int sM; int i; if(input(s) fun(s); printf(n); for(i=0;iM;i+) printf(%d ,si); 四川省普通高等学校计算机应
21、用知识和能力第二十三次等级考试二级 (C与 C+语言 )上机考试试卷 (第一套) 参考答案一、程序调试题(文件名为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 string:); scanf(%s, p); do if(*p=0 & *p=0 & *p=48 & *p=0) numi+=(helpk-48)*(long int)pow(n+,
22、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分 2文件打开和关闭正确 10分3函数调用正确 5分 4屏幕输出和文件输出正确 15分5输出格式正确 5分 6程序结构合理 5分参考程序:# include # define
23、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); 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);四川省普通高等学校计算机应用知识和能力第二十三次等级考试二级 (C与 C+语言 )上机考试试卷 (第二套) 参考答案一、程序调试题(文件名为 test2-1.c)( 40 分 )#include #define N 80void fun(int *s, int *t, int k) /* 改为 *k */ int i,m;