![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
江蘇計算機二級c2009春上機試題2 |
2009春第二套 一:改錯題: 程序功能: 函數(shù)mergeu的功能是:合并兩個字符集合為一個新集合,每個字符串在新集合中僅出現(xiàn)一次,函數(shù)返回新集合中字符串的個數(shù) [測試數(shù)據(jù)與運行結果] 測試數(shù)據(jù): s1集合{“while”,”for”,”switch”,”if”,”continue”} s2集合{“for”,”case”,”do”,”else”,”char”,”switch”} 運行結果: while for switch if break continue case do else char [含有錯誤的源代碼] #include <stdio.h> #include <string.h> int merge(char s1[ ][10],char s2[ ][10],char s3[ ][10],int m,int n) {int i,j,k=0; for(i=0;i<m;i++) s3[k++]=s1[i]; for(i=0;i<n;i++) {for(j=0;j<m;j++) if(strcmp(s2[i],s1[j])) break; if(j>m) strcpy(s3[k++],s2[i]); } return k; } void main() {int i,j; char s1[6][10]={“while”,”for”,”switch”,”if”,”break”,”continue”}, s2[6][10]={“for”,”case”,”do”,”else”,”char”,”switch”},s3[20][10]; j=merge(s1[][10],s2[][10],s3[ ][10],6,6); for(i=0;i<j;i++) printf(“%s “,s3[i]); } 【要求】 1. 將上述程序錄入到文件myf1.C中,根據(jù)題目要求及程序中語句之間的邏輯關系對程序中的錯誤進行修改。 2. 改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預處理命令,但不能增加其它語句,也不能刪去整條語句. 3. 改正后的源程序(文件名myfl.c)保存在T:盤根目錄中供閱卷使用,否則不予評分。 二:編程題 [程序功能] 從一個指定的自然數(shù)n0開始,按以下公式生成一個數(shù)列,直到n(i+1)為1,計算數(shù)列的長度(數(shù)列中數(shù)的個數(shù)) 當n(i)是偶數(shù)時,n(i+1)=ni/2 當n(i)是奇數(shù)時,n(i+1)=3*ni+1 例如:當n0=7時生成的數(shù)列為:7,22,11。34,17,52,26,13,40,20,10,5。 16,8,4,2,1.該數(shù)列的長度為17。 【編程要求】 1.編寫函數(shù)int linkrun(int a,int b,int *p),以[a,b]中所有自然數(shù)作為n0可以生成b-a+1個滿足上述特性的數(shù)列,求出這些數(shù)列的長度并依次保存到p指向的數(shù)組中, 函數(shù)返回p數(shù)組中的最大值。 2.編寫main函數(shù),聲明變量a、b和一維數(shù)組P,接收鍵盤輸入的兩個自然數(shù)保存到a、b變量中,以a、b和P作為實參調(diào)用linkrun函數(shù),將P數(shù)組中存儲的各數(shù)列的長度值和最大值輸出到屏幕及結果文件myf2.out中。最后將考生本人的準考證號字符串也保存到結果文件myf2.out中。 【測試數(shù)據(jù)與運行結果】 測試數(shù)據(jù):a=5 b=9 運行結果: 6 9 17 4 20 max=20 【要求】 1.源程序文件名為myf2.c,輸出結果文件名為myf2.out。 2.數(shù)據(jù)文件的打開、使用、關閉均用C語言標準庫中緩沖文件系統(tǒng)的文件操作函數(shù)實現(xiàn). 3.源程序文件和運行結果文件均需保存在T:盤根目錄中供閱卷使用. 4.不要復制擴展名為obj和exe的文件到T:盤中。
|