四川省第三十次等级考试二级C与C++语言 机试试题 参考答案
(2009年4月19日)
30-1套 参考答案:
一、程序调试题(文件名为 test1-1.c)( 40 分 )
# include
void fun(int a[][N]) {
int i,t;
for(i=0;i a[i][i]=a[i][N-i]; /* 改为:n-i-1 */ a[i][N-i]=t; /* 改为:n-i-1 */ } } void main() { int a[N][N],i,j; FILE *fp; fp=fopen(\ if(fp==NULL) { printf(\ exit(0); } for(i=0;i fscanf(\); /* 改为:fp,”%d”,&a[i][j] */ fclose(fp); fun( ); /* 改为:fun(a) */ printf(\ for(i=0;i printf(\&a[i][j]); /* 改为:a[i][j] */ printf(\ } } 评分标准:每改对一处得8分 二、编程题(程序文件取名为 test1-2.c)(60分) 评分标准: 1.fun函数编写40分。其中: 2. main函数20分。其中: 1)函数定义、形参书写正确(5分) 1)正确定义各种变量,能正确按行进行输出(10分) 2)数组前两项赋值正确(5分) 2)能正确调用fun函数(10分) 3)for循环正确(10分) 4)奇数下标项计算正确(10分) 5)偶数下标项计算正确(10分) 参考程序: # include 第 1 页 共 15 页 四川省第三十次等级考试二级C与C++语言 机试试题 参考答案 (2009年4月19日) # define N 20 void fun(int *a) { int i; a[0]=1; a[1]=2; for(i=2;i a[i]=(int)abs(a[i-1]-a[i-2]); else a[i]=a[i-1]+a[i-2]; } void main() { int a[N]; fun(a); printf(\ for(i=0;i if((i+1)%4==0) printf(\ } } 30-2套 参考答案: 一、程序调试题(文件名为 test2-1.c)( 40 分 ) # include \void main() { int i; FILE *fp; /*增行: void itoa(int); */ fp=fopen(\ if(fp==NULL) { printf(\ exit(0); } fscanf(fp,\ itoa(i); fclose(); /* 改为:fclose(fp) */ } void itoa(int k) { int n=0; char ch1,ch2,ch3,ch4,ch5; ch5=k000; /* 改为:ch5=k/10000 */ if(ch5>0) n++; ch5+='0'; ch4=(k000)/1000; 第 2 页 共 15 页 四川省第三十次等级考试二级C与C++语言 机试试题 参考答案 (2009年4月19日) if(ch4>0) n++; ch4+='0'; ch3=(k00)/100; if(ch3>0) n++; ch3+='0'; ch2=(k0)/10; if(ch2>0) n++; ch2+='0'; ch1=k/10; /* 改为:k */ n++; ch1+='0'; switch ( k ) /* 改为:n */ { case 5: printf(\ case 4: printf(\ case 3: printf(\ case 2: printf(\ case 1: printf(\ } } 评分标准:每改对一处得8分 二、编程题(程序文件取名为 test2-2.c)(60分) 评分标准: 1.正确书写程序格式,正确定义各种变量(5分) 2.循环参数正确(20分) 3.判断字符是否相同的条件正确(5分) 4.正确删除字符(20分) 5.字符串输入输出正确(10分) 参考程序: # include char str1[N],str2[N]; int i,j,k; int len1,len2; printf(\ gets(str1); len1=strlen(str1); printf(\ gets(str2); len2=strlen(str2); i=0; while(str2[i]!='\\0') { for(j=0;j 第 3 页 共 15 页 四川省第三十次等级考试二级C与C++语言 机试试题 参考答案 (2009年4月19日) { for(k=i;k if(j==len1) i++; } printf(\ printf(\ puts(str1); printf(\ puts(str2); } 30-3套 参考答案: 一、程序调试题(文件名为 test3-1.c)( 40 分 ) # include \void rev(void); FILE *f1,*f2; void main(int argc,char *argv[]) { char ch; if(argc>3) { printf(\ exit(0); } if((f1=fopen(*argv[1],\ { printf(\ exit(0); } if((fp=fopen(argv[2],\ { printf(\ exit(0); } while(!feof(f2)) { void rev(); fputc('\\n',f1); } fclose(f1); fclose(f2); } void rev(void) { char c; /* 增加:; */ /* 改为:< */ /* 改为:argv[1] */ /* 改为:rev( ) */ 第 4 页 共 15 页

