![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2011秋江蘇省計算機二級C上機真題 |
2011秋二級C語言上機試卷 (本試卷完成時間為70分鐘) 一、改錯題(16分) 【程序功能】 驗證猜想:當(dāng)f為41,x分別取1,2,3,4,...,40時,由多項式x 以下程序首先用多項式x 【測試數(shù)據(jù)與運行結(jié)果】 屏幕輸出: YES 41 43 47 53 61 71 83 97 113 131 151 173 197 223 251 281 313 347 383 421 461 503 547 593 641 691 743 797 853 911 971 1033 1097 1163 1231 1301 1373 1447 1523 1601 【含有錯誤的源程序】 以下源程序已保存在T盤myf1.c文件內(nèi),考生可直接打開該文件調(diào)試程序。 1 #include <stdio.h> 2 #include <conio.h> 3 int allprime(int n,int a[]) 4 { int i,j,b[]; 5 for(i=0;i<n;i++) 6 { b[i]=1; 7 for(j=1;j<a[i]/2;j++) 8 if(a[i]%j==0) b[i]=0; 9 } 10 for(i=0;i<n;i++) 11 if(0=b[i]) 12 return 0; 13 return 1; 14 } 15 void main() 16 {int i,j,x0=1,x1=40,f=41,a[40]; 17 for(j=x0;j<=x1;j++) 19 j--; 20 if(allprime(j,a[])) 21 {printf("\nYES\n"); 22 for(i=0;i<j;i++) 23 {printf("%d\t",a[i]); 24 if((i+1)%10==0)printf("\n"); 25 } 26 } 27 else 28 printf("\nNO\n"); 29 getch(); 30 } 【要求】 1.打開T盤中myf1.c文件或?qū)⑸鲜龀绦蜾浫氲?/SPAN>myf1.c文件中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。 2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。 3.改正后的源程序(文件名myf1.c)保存在T盤中供閱卷使用,否則不予評分。 二、編程題(24分) 【程序功能】 在已有的一份姓名登記表中刪除重復(fù)出現(xiàn)的姓名,輸出處理后的姓名登記表。 【編程要求】 1.編寫函數(shù)int del_name(char s[][20],int n)。函數(shù)功能:在s指向的數(shù)組前n行中存儲的n個字符串中刪除重復(fù)出現(xiàn)的字符串,只保留第一次出現(xiàn)的字符串,函數(shù)返回s指向的數(shù)組中剩余的字符串個數(shù)。 2.編寫函數(shù)main()。函數(shù)功能:聲明數(shù)組name并用測試數(shù)據(jù)初始化,用name作實參調(diào)用函數(shù)del_name,將經(jīng)過刪除后name數(shù)組中剩余的字符串輸出到屏幕及數(shù)據(jù)文件Myf2.out中。最后將考生本人準(zhǔn)考證號輸出到文件Myf2.out中。 【測試數(shù)據(jù)與運行結(jié)果】 測試數(shù)據(jù):"Ann","Belle","David","Ann","Mary","Belle","Ken","Ann","Mark","Mary" 屏幕輸出:Ann Belle David Mary Ken Mark 【要求】 1.源程序文件名為Myf2.c,輸出結(jié)果文件名為Myf2.out。 2.數(shù)據(jù)文件的打開、使用和關(guān)閉均用C語言標(biāo)準(zhǔn)庫中的文件操作函數(shù)實現(xiàn)。 3.源程序文件和運行結(jié)果文件均需保存在T盤中供閱卷使用。 4.不要復(fù)制擴展名為obj和exe的文件到T盤中。 參考答案 一、改錯題 第4行 {int i,j,b[]; 改為b[40] 第7行 for(j=1;j<a[i]/2;j++) 改為j=2 第11行 if(0=b[i]) 改為== 第20行 if(allprime(j,a[])) 改為a 二、編程題 #include<stdio.h> #include<string.h> #include<conio.h> #define M 20 #define N 100 int del_name(char s[][M],int n) {int i,j,k; for(i=0;i<n;i++) { j=i+1; while(j<n) if(strcmp(s[i],s[j])==0) {for(k=j;k<n-1;k++)strcpy(s[k],s[k+1]); s[k][0]=0; n--; } else j++; } return n; } void main() {char name[N][M]={"Ann","Belle","David","Ann","Mary", "Belle","Ken","Ann","Mark","Mary"}; int k,n=10; FILE *fp; fp=fopen("Myf2.out","w"); n=del_name(name,n); for(k=0;k<n;k++) {puts(name[k]); fputs(name[k],fp); } fprintf(fp,"\nMy Exam number is:0112400123"); fclose(fp); getch(); } |