2009年春季江蘇計算機二級C語言上機試題 |
江蘇省高等學校非計算機專業學生 計算機基礎知識和應用能力等級考試上機試卷(2009年春) 二級C語言 (試卷代號C01) (本試卷完成時間70分鐘) 一、改錯題(20分) 【程序功能】 已知x數組中存儲的n階矩陣有一個鞍點(鞍點是指該位置上的數是所在行的最大數。 同時也是所在列的最小數),程序實現將矩陣中鞍點所在列移動到最右側。 【測試數據與運行結果】 測試數據; 1 3 2 0 4 6 5 -1 7 9 8 0 -1 lO 3 2 運行結果; An dian;a[0][1] 1 2 0 3 4 5 -1 6 7 8 0 9 -1 3 2 10 【含有錯誤的源程序】 #include<stdio.h> #define N=4 void exchange(int a[][N]) {int i,j,k,f,t,m,mj; for(i=O;i<N;i++) {m=a[i][0]; mj=O;f=1; for(j=0;j<N;j++) if(a[i][j]>m) {m=a[i][j]; mj=j;} for(k=O;k<N&&f;k++) if(a[k][mj]>m) f=O; if(k>=N)break; } if(f) {printf("An dian;a[%d][%d]\n",i,mj); for(i=O;i<N;i++) { t=a[i][mj]; for(j=mj;j<N-1;j++) a[i][mj]=a[i][mj+1]; a[i][N-1]=t; } } } void main() {int x[N][N]={{1,3,2,0},{4,6,5,-1),{7,9,8,0),{-1,10,3,2}},i,j; for(i=O;i<N;i++) {for(j=0;j<N;j++) printf("%3d",x[i][j]); printf("\n"); } printf("\n"); exchange(int x[N][N]); for(i=0;i<N;i++) {for(j=O;j<N;j++) printf("%3d",x[i][j]); printf("\n"); } } 【要求】 1. 將上述程序錄入到文件myfl.C中,根據題目要求及程序中語句之間的邏輯關系對程序 中的錯誤進行修改。 2. 改錯時,可以修改語句中的一部分內容,調整語句次序,增加少量的變量說明或編譯 預處理命令,但不能增加其它語句,也不能刪去整條語句. 3. 改正后的源程序(文件名myfl.c)保存在T:盤根目錄中供閱卷使用,否則不予評分。 二、編程題(20分) 【程序功能】 將一個十進制整數m轉換成r進制整數的字符串表示形式。 【編程要求】 1.編寫函數void trdec(char *str,int idec,int ibase),其功能是將十進制整數idec 轉換為ibase進制數的字符串表示形式,將得到的字符串保存到str指向的字符數組中。 2.編寫main函數,接收鍵盤輸入的一個整數,調用trdec函數分別將該整數轉換為二進 制、八進制及十六進制數的字符串表示形式,將轉換后得到的三個字符串按給出的運行 結果形式輸出到屏幕及結果文件myf2.out中.最后將考生本人的準考證號字符串也保 存到結果文件myf2.out中。 【測試數據與運行結果】 測試數據:26 運行結果:11O1OB,32Q,1AH 【要求】 1.源程序文件名為myf2.C。輸出結果文件名為myf2.out。 2.數據文件的打開、使用、關閉均用C語言標準庫中緩沖文件系統的文件操作函數實現. 3.源程序文件和運行結果文件均需保存在T:盤根目錄中供閱卷使用。 4.不要復制擴展名為obj和exe的文件到T:盤中. |