2012年秋 二级 C语言 上机试卷(试卷代号C04) 答案
一、改错题(16分) 【程序功能】
函数del的功能是删除str字符串中的所有数字字符,并用删除的数字字符从前向后每4个组合成一个整数存放在n指向的整型数组中(最后不足4个的数字字符也生成一个整数),函数返回组合成的整数个数。 【测试数据与运行结果】
测试数据:
ab12cde345fgh6789 屏幕输出:
The string: abcdefgh
The number: 1234 5678 9
【含有错误的源程序】
以下源程序已保存在T盘myf1.c文件内,考生可直接打开该文件调试程序。 #include
void del(char str[],int *n) /* 改为 int del(char str[],int *n) */ { int k=0,num=0,s=0; char *p=str,*q=str; while(*p) { if(!(isdigit(*p))) { *q=*p; p++; q++; } else { s=s*10+*p; /* 改为 s=s*10+*p-'0'; 或s=s*10+*p-48; */ k++; if(k%4=0) /* 改为 if(k%4==0) */ { n[num++]=s; s=0; } p++; } } if(k%4!=0) n[num++]=s; *q=\ /*改为 *q='\\0'; */ return num; }
int main()
2012年秋C04-1 答案
{
int i,n[20],num;
char str[100]=\num=del(str,n);
printf(\ printf(\for(i=0;i printf(\printf(\getch(); return 0; } 【要求】 1. 打开T盘中myf1.c文件或将上述程序录入到myf1.c文件中,根据题目要求及程序中语 句之间的逻辑关系对程序中的错误进行修改。 2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译 预处理命令,但不能增加其他语句,也不能删去整条语句。 3. 改正后的源程序(文件名myf1.c)保存在T盘中供阅卷使用,否则不予评分。 【评分标准】 共16分。每改正一个错误得4分,共4个错误。 二、编程题(24分) 【程序功能】 找出符合下列条件的所有3位数:各位数字互不相同且不为0的三位数是37的倍数,将这个三位数的三个数字循环移位得到的另两个三位数也是37的倍数。例如,148是37的倍数,481和814也都是37的倍数,因此148是符合上述条件的一个三位数。 【编程要求】 1.编写函数int find(int a[][3])。函数功能:将满足上述条件的所有三位数及循环移位后得到的另两个三位数依次存放到形参a指向的二维数组中,函数返回存储到a数组中三位数的组数。注意:(148,481,814)、(481,814,148)和(814,148,481)被看作是同一组。 2.编写main函数。函数功能:声明一个二维数组a,用a作实参调用find函数,按每组数据一行的形式输出所有满足上述条件的三位数到屏幕及文件myf2.out中。最后将考生本人的准考证号字符串输出到文件myf2.out。 【测试数据与运行结果】 屏幕输出: 148 481 814 185 851 518 259 592 925 296 962 629 【要求】 1.源程序文件名为myf2.c,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中的文件操作函数实现。 3.源程序文件和运行结果文件均需保存在T盘中供阅卷使用。 4.不要复制扩展名为obj和exe的文件到T盘中。 2012年秋C04-2 答案 【参考答案】 #include int fun1(int n,int m,int a[][3]) { int i; for(i=0;i int find(int a[][3]) { int n,k,m,q,b,c,i=0; for(n=100;n<1000;n++) { if(n7==0) { k=n/100; m=n/10; q=n; if(k*m*q!=0&&(k==m)+(m==q)+(q==k)<3&&fun1(n,i,a)) { b=100*m+10*q+k; c=100*q+10*k+m; if(b7==0&&c7==0) { a[i][0]=n; a[i][1]=b; a[i][2]=c; i++; } } } } return i; } int main() { int a[300][3],i,n; FILE *fp; fp=fopen(\ n=find(a); for(i=0;i 【评分标准】 共24分 一、main函数(共12分) 1.函数框架:2分(头部1分,一对花括号1分) 2012年秋C04-3 答案 2.文件操作:3分(#include, 声明文件指针变量,fopen各1分) 3.变量/数组声明:2分 4.函数调用:2分 5.输出结果到屏幕:1分, 输出结果到文件:1分, 输出准考证号到文件:1分 二、find函数(共12分) 1. 函数框架:3分(头部2分,一对花括号1分) 2. 变量/数组声明并得到初值:2分 3. 查找满足条件的数并存放到a数组:6分 4. 函数返回a数组中三位数的组数:1分 2012年秋C04-4 答案
相关推荐: