![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2012春江蘇省計(jì)算機(jī)二級C上機(jī)考試真題1 |
2012春江蘇省高校計(jì)算機(jī)等級考試 二級C語言上機(jī)試卷1 (本試卷完成時(shí)間為70分鐘) 一、改錯(cuò)題(16分) 【程序功能】 以下程序中函數(shù)void csort(char str[][N],int n)對str指向的二維數(shù)組前n行中存儲的n 個(gè)字符串分別作如下處理:從中間將字符串一分為二,左半部分字符子串按字符的ASCII碼值 從大到小排序(若字符串的長度為奇數(shù),則中間字符不參加排序)。 【測試數(shù)據(jù)與運(yùn)行結(jié)果】 測試字符串:"abcdefgh","123498765" 屏幕輸出:dcbaefgh 432198765 【含有錯(cuò)誤的源程序】 以下源程序已保存在T盤myf1.c文件內(nèi),考生可直接打開該文件的調(diào)試程序。 1 #include<stdio.h> 2 #include<string.h> 3 #include<conio.h> 4 #define N 80 5 void csort(char str[][N],int n); 6 void main() 7 {char s[2][N]="abcdefgh","123498765"; 8 int i; 9 csort(s,2); 10 for(i=0;i<2;i++) 11 puts(s); 12 getch(); 13 } 14 void csort(char str[][N],int n) 15 { int i,j,k,len,half; 16 char temp; 17 for(i=0;i<n;i++) 18 {len=strlen(str[i][0]); 19 half=len/2; 20 for(j=0;j<half-1;j++) 21 for(k=j+1;k<half-1;k++) 22 if(str[i][j]<str[i][k]) 23 {temp=str[i][j]; 24 str[i][j]=str[i][k]; 25 str[i][k]=temp; 26 } 27 } 28 } 【要求】 1.打開T盤中myf1.c文件或?qū)⑸鲜龀绦蜾浫氲?/SPAN>myf1.c文件中,根據(jù)題目要求及程序中 語句之間的邏輯關(guān)系對程序中的錯(cuò)誤進(jìn)行修改。 2.改錯(cuò)時(shí),可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù) 處理命令,但不能增加其他語句,也不能刪去整條語句。 3.將改正后的源程序(文件名myf1.c)保存在T盤中供閱卷使用,否則不予評分。 二、編程題(24分) 【程序功能】 對于所給的一個(gè)自然數(shù)n,查找并輸出所有滿足以下條件的等差數(shù)列:(1)公差為1; (2)數(shù)列中各項(xiàng)數(shù)值之和等于n。 【編程要求】 1.編寫函數(shù)int found(int a[][30],int n)。函數(shù)的功能:查找滿足上述條件的所有等差 數(shù)列并依次將其保存到a指向的數(shù)組中(一行保存一個(gè)數(shù)列),函數(shù)返回找到的數(shù)列個(gè)數(shù)。 2.編寫函數(shù)main()。函數(shù)的功能:聲明一個(gè)二維整型數(shù)組用于保存查找結(jié)果,輸入一個(gè)整 數(shù)并保存到變量n中(n≤600)。用n和整型數(shù)組作實(shí)參調(diào)用found函數(shù),將找到的所有等差數(shù) 列輸出到屏幕及數(shù)據(jù)文件myf2.out中。最后將考生本人的準(zhǔn)考證號輸出到文件myf2.out中。 【測試數(shù)據(jù)與運(yùn)行結(jié)果】 輸入:n=500 屏幕輸出: 8 9 10 11 12 13 14 15 16 17 18 19 20 59 60 98 99 100 101 102 500 【要求】 1.源程序文件名為myf2.c,輸出結(jié)果文件名為myf2.out。 2.數(shù)據(jù)文件的打開、使用、關(guān)閉均用C語言標(biāo)準(zhǔn)庫中的文件操作函數(shù)實(shí)現(xiàn)。 3.源程序文件和運(yùn)行結(jié)果文件均需保存在T盤中供閱卷使用。 4.不要復(fù)制擴(kuò)展名為obj和exe的文件到T盤中。 參考答案 一、改錯(cuò)題 第7行 {char s[2][N]="abcdefgh","123498765"; 改為{"abcdefgh","123498765"} 第11行 puts(s); 改為puts(s[i]) 第18行 {len=strlen(str[i][0]); 改為str[i] 第21行 for(k=j+1;k<half-1;k++) 改為k<half 二、編程題 #include<stdio.h> #include<conio.h> int found(int a[][30],int n) ’ { int i,k=0,s=0,j,count,l=0; for(i=1;i<=n;i++) { for(s=0,j=i;s<n;j++) s=s+j; if(s==n) {count=0; for(k=i;k<j;k++) a[1][count++]=k; l++; } } return l; } void main() {int i,j,n,m,a[10][30]={0}; FILE *fp; fp=fopen("myf2.out","w"); printf("input n:"); scanf("%d",&n); m=found(a,n); for(i=0;i<m;i++) { for(j=0;a[i][j];j++) {printf("%d",a[i][j]); fprintf(fp,"%d",a[i][j]); printf("\n"); fprintf(fp,"\n"); } fprintf(fp,"My exam number is:0012400124"); fclose(fp); getch(); } |