2013秋江蘇省計算機二級C上機真題第1套 |
2013秋江蘇省高校計算機等級考試 二級 C語言上機試卷第1套 (本試卷完成時間為70分鐘) 一、改錯題(16分) 【程序功能】 統計一組單詞(本題中含2個單詞)中的每個單詞在一篇文章中各自出現的次數,單詞中的字母字符區分大小寫。 【測試數據與運行結果】 測試數據: 文章正文: The Olympic Games will be held just outside the capital and the whole area will be called 'Olympic City'. 被統計的一組單詞:Olympic, will 屏幕輸出:Olympic:2 wi11:2 【含有錯誤的源程序】 以下源程序已保存在T盤myf1.c文件內,考生可直接打開該文件調試程序。 1 #include< stdio.h> 2 #include< conio.h> 3 #include< string.h> 4 #include< ctype.h> 5 void count( char str[] ,char substr[][10] ,int ct[],int n) 6 { 7 int i,j,k =0,m =0; 8 char t[]; 9 for(i=0;str[i];i++) 10 { 11 for(j=i;isalpha(str[j]);i++) 12 { 13 t[m]=str[j]; 14 j++;m++; 15 } 16 t[m]=’/0'; 17 for(k=0;k<n;k++) 18 if( t == substr[k]) 19 ct[k]++; 20 m=0; 21 } 22 } 23 int main() 24 { 25 char line[]="The Olympic Games will be held just outside the capital and the whole area will be 26 called 'Olympic City,.”; 27 char word[][10]={”Olympic”,”will”}; 28 int i,c[2]={0}; 29 count(line[] ,word[][],c,2); 30 for(i=0;i<2;i++) 31 printf("\n%8s:%2d",word[i],c[i]); 32 getch(); 33 return 0; 34 } 【要求】 1.打開T盤中myfl.c文件或將上述程序錄入到myfl.c文件中,根據題目要求及程序中 語句之間的邏輯關系對程序中的錯誤進行修改。 2.改錯時,可以修改語句中的一部分內容,調整語句次序,增加少量的變量說明或編譯預 處理命令,但不能增加其他語句,也不能刪去整條語句。 3.改正后的源程序(文件名myfl.c)保存在T盤中供閱卷使用,否則不予評分。 二、編程題(24分) 【程序功能】 找出[a,b]區間內所有滿足以下條件的整數:(1)該數是素數;(2)該數的十進制表示是 4位數并且是降序數(即從高位到低位的各位數字依次減小或不增加的整數)。例如,4211既是素數又是4位降序數,因此4211是滿足上述條件的整數。 【編程要求】 1.編寫函數int decend(long n1,long n2,long x[])。函數功能:找出[n1,n2]區間內滿足上述條件的所有整數并依次存放到x指向的一維數組中,函數返回滿足條件的整數個數。 2.編寫main函數。函數功能:聲明變量a、b及一維數組c,鍵盤輸入a、b的值,調用decend函數找出[a,b]區間內所有滿足上述條件的整數并保存到c數組,輸出c數組中的結果數據到屏幕及文件myf2.out中,最后將考生本人的準考證號輸出到文件myf2.out中。 【測試數據與運行結果】 測試數據:a =1000 b=5000 屏幕輸出:2111 2221 3221 3331 4111 4211 4421 4441 【要求】 1.源程序文件名為myf2.c,輸出結果文件名為myf2.out。 2.數據文件的打開、使用、關閉均用C語言標準庫中的文件操作函數實現。 3.源程序文件和運行結果文件均需保存在T盤中供閱卷使用。 4.不要復制擴展名為obj和exe的文件到T盤中。 參考答案 一、改錯題 第8行 char t[]; 改為t[10] 第16行 t[m]='/0'; 改為'\0' 第18行 if(t== substr[k]) 改為 !strcmp(t,substr[k])或strcmp(t, substr[k] ==0) 第29行 count (line[] ,word[][],c,2); 改為 (line, word,c,2) 二、編程題 #include <stdio.h> #include <stdlib.h> #include <conio.h> int prime(long n) { int i =2; while( n%i&&i<=n/2)i++; if(i<n/2) return 0; else return 1; } int decend( long n1 ,long n2, long x[]) { long int i,y; int a[4] ,k,j =0; for(i=n1;i<=n2;i++) if( prime(i)) {k=0;y=i; while(y){a[k++]=y% 10;y/= 10;} if(k==4) { k--; while(k>0&&a[k]>=a[k-1])k--; if(k==0) x[j++]=i; } } return j; } int main() { FILE *fp; int k,i; long a,b,c[100]; printf( "a,b: "); scanf("%ld%ld",&a,&b); fp=fopen( "myf2.out","w"); if( fp==NULL) {printf( "Create File myf2. out failed ! \n") ; exit(0) ;} k = decend( a,b,c) ; for(i = 0; i<k; i++ ) { printf("%10ld",c[i] ) ; fprintf(fp,"%lOld",c[i] ) ; } fprintf( fp, "my examination number is 00123456789\n") ; fclose ( fp) ; getch( ) ; return 0; } |