1、江苏计算机等级考试二级 C 语言上机真题 2012 年 10 月及答案解析(总分:40.00,做题时间:70 分钟)1.改错题 【程序功能】 函数 fun 的功能是将 str 所指向的一行包含若干单词的文本(单词之间用空格隔开)依次拆分成长度不超过 20 个字符的若干文本行,单词不跨行,且使拆分出的行数最少,再将拆分出的每行字符以字符串的形式存储到 page 指向的二维数组的一行中,函数返回拆分出的行数 【测试数据与运行结果】 测试数据:A great discovery solves a greate problem. 屏幕输出: A great disconvery solves a gr
2、eat problem 【含有错误的源程序】 以下源程序已保存在 T 盘 myf1.c 文件内,考生可直接打开该文件调试程序 #include #include #include int fun(char str,char pag) int i,k=0,j,flag=1; while(*str while(*str 改为 strcpy(pagk,str) (3) pagkj=stri 修改为 pagkj=strj (4) char str80=A great discovery solves a great problem.; 修改为 char str80=“A great discovery
3、 solves a great problem.”;)解析:2.编程题(24 分) 【程序功能】 寻找所有水仙花数(水仙花数是指一个三位数中各位数字的立方之和等于该三位数自身。例如,153=1 +5 +3 ,因此 153 是水仙花数),并生成每个水仙花数的反序数 【编程要求】 1.编写函数 int sxh(int a ,int b ),函数的功能是:将所有水仙花数保存到 a 指向的数组,将所有水仙花数的反序数保存到 b 指向的数组,函数返回水仙花数的个数 2.编写 main 函数,函数的功能:声明数组a 和 b,用 a、b 作实参调用 sxh 函数,将 a、b 数组中全部数据输出到屏幕 myf
4、2.out 中,最后将考生本人的准考证号字符串输出到文件 myf2.out 中 【测试数据与运行结果】 屏幕输出: Three daffodil number: 153 370 371 407 Three inverse number:351 73 173 704 【要求】 1.源程序文件名为 myf2.c,输出结果文件名为 myf2.out。 2.数据文件的打开、使用、关闭均用 C 语言标准库中的文件操作函数实现。 3.源程序文件和运行结果文件均需保存在 T 盘中供阅卷使用。 4.不要复制扩展名为 obj 和 exe 的文件到 T盘中。(分数:26.00)_正确答案:(#include #i
5、nclude int sxh(int a,int b) int n1,n2,n3,count=0,i; for(i=100;i=999;i+) n1=i/100; n2=i/10%10; n3=i%10; if(n1*n1*n1+n2*n2*n2+n3*n3*n3)=i) acount=i; bcount+=n3*100+n2*10+n1; return count; int main() int a100,b100,i,count=0; FILE *fp; fp=fopen(“myf2.out“,“w“); count=sxh(a,b); printf(“Three daffodil number:“); fprintf(fp,“Three daffodil number:“); for(i=0;i解析: