第一篇:2015 上海計算機等級考試二級C(B卷)
2015二級C(B卷)
一、單項選擇題(答案在最后)
二、填空題(答案在最后)
程序功能:輸入一個正整數(shù),將其各位上為偶數(shù)的數(shù)字去除,剩余的數(shù)按原來從高位到低位的順序組成一個新的數(shù),并將其輸出到文件out1.txt中。例如,輸入:134456779,輸出到文件:135779。代碼:
#include
程序功能:從鍵盤輸入一個字符串和一個字符,統(tǒng)計字符串中該字符出現(xiàn)的次數(shù),并輸出結(jié)果。例如,輸入字符串:aBEddfghDdd,輸入字符:d,輸出結(jié)果:4。代碼:
#include
三、操作題
(一)程序調(diào)試題(3小題,第1、2小題各3處錯,第3小題4處錯,每錯誤點3分,共30分)1.程序調(diào)試題1
調(diào)試要求:下列程序(C:KSB_2_1.c)包含3個錯誤,請按題中的功能要求,調(diào)試并修改該程序(在所修改語句后加/*******/字樣的注釋),使其運行能得到正確的結(jié)果。將程序結(jié)果(包括B_2_1.c文件和B_2_1.EXE文件)保存到目錄C:KS中。
功能說明:輸入某人某一個月的月收入(在2500元到8000元之間),計算并輸出該月份他應(yīng)繳的個人所得稅。個人所得稅采用分段計算方法計算,具體為:月收入不超過3500元(含3500元,以下同)免稅;月收入超過3500元但不超過5000元的,超過部分的稅率為3%;月收入超過5000元但不超過8000元的,超過5000元部分的稅率為10%。運行示例:
輸入:請輸入月收入: 7000 輸出:個人所得稅為: 245.00 說明:月收入7000元中3500元免稅,1500元的稅利為3%,2000元的稅利為10%。含錯誤源程序:
#include
參考答案: #include
float salary,tax;
printf(“請輸入月收入: ”);
scanf(“%f”, &salary);
/*******/
if(salary<=3500)tax=0;
/*******/
else if(salary<=5000)tax=(salary-3500)*0.03;
else tax=1500*0.03+(salary-5000)*0.1;
/*******/
printf(“個人所得稅為: %.2fn”, tax);}
2.程序調(diào)試題2
調(diào)試要求:下列程序(C:KSB_2_2.c)包含3個錯誤,請按題中的功能要求,調(diào)試并修改該程序(在所修改語句后加/*******/字樣的注釋),使其運行能得到正確的結(jié)果。將程序結(jié)果(包括B_2_2.c文件和B_2_2.EXE文件)保存到目錄C:KS中。
功能說明:自定義一個表示分?jǐn)?shù)的結(jié)構(gòu)體類型,在主函數(shù)中輸入兩個分?jǐn)?shù),通過調(diào)用函數(shù)計算兩個分?jǐn)?shù)的和,最后在主函數(shù)中輸出計算的結(jié)果(不化簡)。運行示例: return 0;
含錯誤源程序: #include
參考答案:
#include
3.程序調(diào)試題3
調(diào)試要求:下列程序(C:KSB_2_3.c)包含4個錯誤,請按題中的功能要求,調(diào)試并修改該程序(在所修改語句后加/*******/字樣的注釋),使其運行能得到正確的結(jié)果。將程序結(jié)果(包括B_2_3.c文件和B_2_3.EXE文件)保存到目錄C:KS中。
功能說明:輸入兩個由整型數(shù)構(gòu)成的集合(元素個數(shù)均為5)分別放到數(shù)組A和B中,求這兩個集合的交集(交集的元素由兩個集合中的相同元素構(gòu)成),最后輸出交集中的元素。運行示例:
含錯誤源程序:
#include
參考答案:
#include
/*******/ int main(void){
int a[5],b[5],c[5];
int i,n;
printf(“請輸入第一個集合內(nèi)容,5個整型數(shù)n”);
for(i=0;i<5;i++)
scanf(“%d”,&a[i]);
printf(“請輸入第二個集合內(nèi)容,5個整型數(shù)n”);
for(i=0;i<5;i++)
scanf(“%d”,&b[i]);
n=inter(a,b,c);
printf(“A,B交集元素為:n”);
for(i=0;i /*******/ printf(“%4d”, c[i]); printf(“n”); return 0;} int inter(int s1[],int s2[],int s3[]){ int j,i,k=0; /*******/ for(i=0;i<5;i++) { for(j=0;j<5;j++) if(s1[i]==s2[j])break; if(j<5)s3[k++]=s1[i]; /*******/ } return k;} (二)編程題(2小題,共35分,其中第1小題15分,第2小題20分)1.編程題1 編程要求:請按題中的功能要求,編寫程序并能得到正確的結(jié)果。將程序結(jié)果(包括B_4_1.c文件和B_4_1.EXE文件)保存到目錄C:KS中。程序功能:按示例格式完成以下要求。 (1)輸入10個整數(shù)(存入數(shù)組a),再輸入整數(shù)x。(2)輸出數(shù)組a中大于等于x的所有元素。運行示例: 輸入:22 55 66 99 44 33 77 11 0 88 60 輸出:66 99 77 88 參考答案: #include 2.編程題2 編程要求:請按題中的功能要求,編寫程序并能得到正確的結(jié)果。將程序結(jié)果(包括B_4_2.c文件和B_4_2.EXE文件)保存到目錄C:KS中。 程序功能:按示例格式完成以下要求(驗證數(shù)學(xué)上考拉茲猜想:任意一個大于1正整數(shù),連續(xù)進行特定運算,經(jīng)有限步驟后,計算結(jié)果得到1)。 (1)輸入整數(shù)n,如果n小于2,輸出“Error”并結(jié)束運行。 (2)如果整數(shù)n為偶數(shù),計算n/2,否則計算3*n+1,生成新的整數(shù)(仍存為n)。(3)如果生成的整數(shù)結(jié)果等于1,則結(jié)束運行,否則重復(fù)步驟(2)與(3)。運行示例1: 輸入:12 輸出:[12] {1}6 {2}3 {3}10 {4}5 {5}16 {6}8 {7}4 {8}2 {9}1 說明:輸入12,第1次計算生成6,第2次計算生成3,……,第9次計算生成1。示例中{1}、{2}至{9}為生成的次數(shù)標(biāo)記,[]、{}與間隔空格都必須保留。運行示例2: 輸入:0 輸出:Error 說明:輸入為0、1或負數(shù),輸出“Error”。參考答案: #include long n; int i,j; scanf(“%ld”,&n); if(n<=0) { printf(“Errorn”); return-1; } printf(“[%ld] ”,n); for(i=1;1;i++) { if(n%2==0) n = n/2; else n = 3*n + 1; printf(“{%d}%ld ”,i,n); if(n==1) break; } printf(“n”); return 0;} 二級 C 程序設(shè)計 B 場 參考答案 一、單選題 1.D 2.D 3.B 4.B 5.B 6.C 7.D 8.A 9.D 二、程序填空題參考答案 1.1):【z=0】 2):【n!=0】【n】【n>0】【n>=1】 3):【n%10】【k=n%10】【n-n/10*10】 4):【fclose(fp)】 2.1):【str[i]!='