2012秋江苏省计算机二级C上机真题1 |
2012秋江苏省计算机高校计算机二级 C语言上机试卷01 一、改错题 【程序功能】 函数fun的功能是将str所指向的一行包含若干单词的文本(单词之间用空格隔开)依次拆分成长度不超过20个字符的若干文本行,单词不跨行,且使拆分出的行数最少,再将拆分出的每行字符以字符串的形式存储到page指向的二维数组的一行中,函数返回拆分出的行数 【测试数据与运行结果】 测试数据:A great discovery solves a greate problem. 屏幕输出: A great disconvery solves a great problem 【含有错误的源程序】 以下源程序已保存在T盘myf1.c文件内,考生可直接打开该文件调试程序 #include <string.h> #include <stdio.h> #include <conio.h> int fun(char str[],char pag[][]) {int i,k=0,j,flag=1; while(*str && flag) {if(strlen(str)<20) {pag[k]=str; flag=0; } else {i=20; while(str[i]!=' ') i--; for(j=0;j<i;j++) pag[k][j]=str[i]; pag[k][i]='\0'; strcpy(str,str+i+1); } k++; } return k; } int main() {char str[80]={A great discovery solves a great problem.}; char pag[40][21]; int i,k; k=fun(str,pag); for(i=0;i<k;i++) puts(pag[i]); getch(); return 0; } 【要求】 1.打开T盘中myf1.c文件或将上述程序录入到myf1.c文件中,根据题目要求及程序中 语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预 处理命令,但不能增加其他语句,也不能删去整条语句。 3.将改正后的源程序(文件名myf1.c)保存在T盘中供阅卷使用,否则不予评分。 二、编程题(24分) 【程序功能】 寻找所有水仙花数(水仙花数是指一个三位数中各位数字的立方之和等于该三位数自身。例如,153=1 【编程要求】 1.编写函数int sxh(int a[ ],int b[ ]),函数的功能是:将所有水仙花数保存到a指向的数组,将所有水仙花数的反序数保存到b指向的数组,函数返回水仙花数的个数 2.编写main函数,函数的功能:声明数组a和b,用a、b作实参调用sxh函数,将a、b数组中全部数据输出到屏幕myf2.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盘中。 改错题: (1) char pag[][] 改为 char pag[][21] (2) pag[k]=str; 改为 strcpy(pag[k],str) (3) pag[k][j]=str[i] 修改为 pag[k][j]=str[j] (4) char str[80]={A great discovery solves a great problem.}; 修改为 char str[80]={“A great discovery solves a great problem.”}; #include <stdio.h> #include <conio.h> 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) { a[count]=i; b[count++]=n3*100+n2*10+n1; } } return count; } int main() { int a[100],b[100],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<count;i++) { printf("%5d",a[i]); fprintf(fp,"%5d",a[i]); } printf("\n"); fprintf(fp,"\n"); printf("Three inverse number:"); fprintf(fp,"Three inverse number:"); for(i=0;i<count;i++) {printf("%5d",b[i]); fprintf(fp,"%5d",b[i]); } printf("\n"); fprintf(fp,"\n My exam number is:0112400123"); fclose(fp); getch(); return 0; } |