2010年秋江蘇二級C上機真題 |
江蘇省高等學校非計算機專業學生 計算機基礎知識和應用能力等級考試上機試卷(2010年秋) 二級C語言 (試卷代號C01) (本試卷完成時間70分鐘) 一、改錯題(16分) 【程序功能】 查找介于n1與n2(O<n1<n2<32768)之間所有滿足下列條件的整數:(1)該數的十進 制表示中有且僅有兩個相同的數字位;(2)該數是素數。 【測試數據與運行結果】 測試數據:n1=900 n2=1200 屏幕輸出: 911 919 929 977 991 997 1009 1013 1019 1021 1031 1033 1051 1061 1091 1103 1109 1123 1129 1153 1163 1187 1193 【含有錯誤的源程序】 #inelude<stdio.h> #include<math.h> int validate(int n) { int i,j,k=0,num[5]={0},size=0; do { num[size]=n%10; n=n/10; size++; }while(n<0); for(i=0;i<size-1;i++) for(j=i+1;j<size;j++) if(num[i]==num[j]) k=k+1; if(k>1) return 1; else return 0; } int prime(int) { int i; for(i=2;i<=(int)sqrt(n);i++) if(n%i==0)retum 0; return 1; } void main() { int i,count=0,n1,n2; scanf("%d%d",&n1,&n2); for(i=n1;i<=n2;i++) { if(validate(int i)&&prime(int i)) { count++; printf("%d\t",i); if(count%8==0)printf("\n"); } } } 【要求】 1. 將上述程序錄入到文件myf1.C中,根據題目要求及程序中語句之間的邏輯關系對程序 中的錯誤進行修改。 2. 改錯時,可以修改語句中的一部分內容,調整語句次序,增加少量的變量說明或編譯預 處理命令,但不能增加其他語句,也不能刪去整條語句。 3. 改正后的源程序(文件名myf1.c)保存在T:盤根目錄中供閱卷使用,否則不予評分。 二、編程題(24分) 【程序功能】 字符串變換。 【編程要求】 1. 編寫函數void change(char *a,char *b,char *c)。函數功能是首先把b指向的字符串逆向存放,然后將a指向的字符串和b指向的字符串按排列順序交叉合并到c指向的數組中,兩個字符串中過長的剩余字符接在c指向數組的尾部。例如,當a指向的字符串為 "abcdefg",b指向的字符串為"1324"時,C指向的數組中字符串應為"a4b 2.編寫main函數。函數功能是聲明字符型數組s1、s2和t,用測試數據初始化數組s1和 s2,再用s1、s2和t作為實參調用函數change,將數組s1、s2和t中的字符串輸出到屏幕及文件myf2.out中。最后將考生本人的準考證號字符串輸出到文件myf2.out中。 【測試數據與運行結果】 測試數據:s1:abcdefg s2:1324 屏幕輸出:s1:abcdefg s2:4231 The result is:a4b 【要求】 1.源程序文件名為myf2.c,輸出結果文件名為myf2.out。 2.數據文件的打開、使用、關閉均用C語言標準庫中緩沖文件系統的文件操作函數實現。 3.源程序文件和運行結果文件均需保存在T:盤根目錄中供閱卷使用 4.不要復制擴展名為obj和exe的文件到T:盤中。 |