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; } |