四川省第二十九次计算机二级考试C与C++语言 机试试题(2008年10月19日)
printf(\ scanf(\ n2=fun(); /* 改为:n2=fun(n1) */ printf(\
fprintf(fp,\ fclose(fp); }
评分标准:每改对一处得8分
二、编程题(程序文件取名为 test2-2.c)(60分) 评分标准:
1. fun函数编写40分 1)函数定义、形参书写正确 10分 2)能正确将字符数组a复制到字符数组c 10分 3)能正确将字符数组b复制到字符数组c 10分 4)c[k]=’\\0’ 10分 参考程序:
# include
void fun(char *a,char *b,char *c) {
int i,j,k;
for(i=0;a[i]!='\\0';i++) c[i]=a[i];
for(k=i,j=strlen(b)-1;j>=0;k++,j--) c[k]=b[j]; c[k]='\\0'; }
void main() {
char a[50],b[50],c[100]; printf(\ gets(a);
printf(\ gets(b); fun(a,b,c);
printf(\}
29-3套 参考答案:
一、程序调试题(文件名为 test3-1.c)( 40 分 )
# include
int i,j=0,b[20]; for(i=0;i
第 11 页 共 16 页
2. main函数20分 1)能正确字义数组,并能对字符串进 行正确的输入和输出 10分 2)能正确调用fun函数 10分 四川省第二十九次计算机二级考试C与C++语言 机试试题(2008年10月19日)
b[j]=a[i]; /* 改为:j++ */ for(i=0;i void main() { int a[10],i; char filename[20]; FILE *fp; printf(\ scanf(\%c\ /* 改为:%s */ if((fp=fopen(filename,\ printf(\ exit(0); } for(i=0;i<10;i++) fscanf(fp,\a[i]); /* 改为:&a[i] */ fun(a,10); for(i=0;i<10;i++) printf(\a+i); /* 改为:a[i] */ fclose(fp); } 评分标准:每改对一处得8分 二、编程题(程序文件取名为 test3-2.c)(60分) 评分标准: 1.fun函数编写40分: 1) 函数定义、形参书写正确 10分 2) 能正确处理n大于s的长度的情况 10分 3) 能正确处理n小于s的长度的情况 10分 4) t[j]=’\\0’ 10分 2.main函数20分: 1) 能正确定义数组,并能正确进行输入输出 10分 2) 能正确调用函数 10分 参考程序: # include void fun(char *s,char *t,int n) { int i,j,k; k=strlen(s); if(n>=k) { for(i=0;s[i]!='\\0';i++) t[i]=s[i]; 第 12 页 共 16 页 四川省第二十九次计算机二级考试C与C++语言 机试试题(2008年10月19日) t[i]='\\0'; } else { for(i=k-n,j=0;s[i]!='\\0';i++,j++) t[j]=s[i]; t[j]='\\0'; } } void main() { char s[80],t[80]; int i,n; printf(\ gets(s); printf(\ scanf(\ fun(s,t,n); printf(\ puts(t); } 29-4套 参考答案: 一、程序调试题(文件名为 test4-1.c)( 40 分 ) # include \# define N =3 /* 改为: 3 */ int fun(int a[][N],n) /* 改为:int n */ { int i,j; for(i=0;i a[i][j]=*n; /* 改为:*= */ } main() { int a[N][N],n,i,j; FILE *fp; for(i=0;i printf(\ } do n=rand(); while(n<=3) /* 改为:(n<=3); */ 第 13 页 共 16 页 四川省第二十九次计算机二级考试C与C++语言 机试试题(2008年10月19日) printf(\ fun(a,n); fp=fopen(\ if(fp==NULL) { printf(\ exit(0); } for(i=0;i { printf(\ fprintf(fp,\ } printf(\ } fclose(fp); } 评分标准:每改对一处得8分 二、编程题(程序文件取名为 test4-2.c)(60分) 评分标准: 1.fun函数编写20分: 1) 函数定义、形参书写正确 10分 2) for循环书写正确 10分 2.main函数40分: 1) 字符串输入和输出正确 5分 2) 字符串的长度计算准确 10分 3) 字符串前导*号个数计算准确 10分 4) 字符串尾部*号个数计算准确 10分 5) 函数调用参数传递正确 5分 参考程序: # include void fun(char *a,int n,int h ,int e) { int i,j=0; for(i=h;i void main() { char s[81],*t,*f; int m=0,tn=0,fn=0; printf(\ gets(s); t=f=s; while(*t) {t++; m++; } t--; while(*t=='*') { t--; tn++; } 第 14 页 共 16 页 四川省第二十九次计算机二级考试C与C++语言 机试试题(2008年10月19日) while(*f=='*') { f++; fn++; } fun(s,m,fn,tn); printf(The string after deleted:\\n); puts(s); } 29-5套 参考答案: 一、程序调试题(文件名为 test5-1.c)( 40 分 ) # include void fun(double a,b,*x,*y) /* 改为:double b, double *x, double *y */ { x=a*b; y=a/b; /* 改为:*x=a*b; *y=a/b; */ } io() { int i; double a,b,c,d; file *rf,*wf; /* 改为:FILE */ rf=fopen(\ wf=fopen(\ fscanf(rf,\ fun(a,b,c,d); /* 改为:fun( a , b , &c , &d ) */ fprintf(\/* 改为:fprintf ( wf , \ */ printf(\; fclose(rf); fclose(wf); } void main() { double a,b,c,d; clrscr(); io(); } 评分标准:每改对一处得8分 二、编程题(程序文件取名为 test5-2.c)(60分) 评分标准: 1.convert函数25分 1) 函数定义(参数)正确 10分 2) 转置正确 15分 2.main函数35分 1) 二维数组定义正确 5分 2) 数据输入正确 10分 3) 函数调用参数传递正确 10分 4) 结果输出正确 10分 参考程序: # include void convert(int a[][4],int b[][3]) { 第 15 页 共 16 页 四川省第二十九次计算机二级考试C与C++语言 机试试题(2008年10月19日) int i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) b[j][i]=a[i][j]; } void main() { int a[3][4],b[4][3]; int i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(\ convert(a,b); for(i=0;i<4;i++) { for(j=0;j<3;j++) printf(\ printf(\ } } 第 16 页 共 16 页