2013春江蘇省計算機二級Visual C++上機試卷1 |
2013年(春)江蘇省計算機等級考試 二級Visual C++上機試卷1 一、改錯題 【題目】 如果將一個二進制數的各位數字的順序顛倒后所得到的新二進制數與原數相等,則稱該二進制數為回文數,以下程序的功能是:在由兩個正整數確定的范圍內,查找對應的二進制數為回文數的整數,采用的算法是:將待判斷的整數轉換為二進制數形式,并按正序和反序方式分別存入兩個字符串中,比較兩個字符串,若兩個字符串相等則該數為符合要求的數 正確程序的輸入/輸出結果如下(下劃線部分為鍵盤輸入): 請輸入查找范圍:100 200 對應的二進制數為回文數的個數為:8 107à1101011 119à1110111 127à1111111 129à10000001 153à10011001 165à10100101 189à10111101 195à11000011 含有錯誤的源程序如下 #include <iostream.h> #include <string.h> char *fun(int t) { char s1[33]={0},s2[33]={0},c,*p1,*p2; p1=s1;p2=s2+31; while(t){ c=t%2; t/=2; *p1++=c; *p2++=c; } p2++; if(!strcmp(s1,p2)){ char *p=new char[33]; strcpy(p,s1); return *p; } else return 0; } void main() { int a[200]={0},low,up; char *bin[200]={0},*p; cout<<"請輸入查找范圍:"; cin>>low>>up; for(int i=0,j=low;j<=up;j++) if(p==fun(j)){ a[i]=j; bin[i++]=p; } cout<<"對應的二進制數為回文數的個數為:"<<i<<endl; for(i=0;bin[i];i++){ cout<<a[i]<<"-->"<<bin[i]<<endl; delete[] bin[i]; } } 【要求】 1.打開T盤中myfa.txt文件,將其文本拷貝到文件myfa.cpp中(或將上述程序錄入到文 件myfa.cpp中),根據題目要求及程序中語句之間的邏輯關系對程序中的錯誤進行修改。程 序中的注解可以不輸入。 2.改錯時,可以修改語句中的一部分內容,增加少量的變量說明、函數原型說明或編譯預 處理命令,但不能增加其他語句,也不能刪除整條語句。 3.將改正后的源程序文件myfa.cpp必須放在T盤根目錄下,供閱卷用。 二、編程題(20分) 【題目】 試定義一個類STR,統計一個字符串中包含的句子數和單詞數,規定單詞之間以空格、”,”或”.”分隔,句子以”.”結束,具體要求如下 (1)私有數據成員 char *s :指向待統計的字符串 int m,n: 分別記錄求得的單詞數和句子數 (2)公有成員函數 STR(char *t): 構造函數,用參數t初始化字符串s void fun(): 按題意統計單詞數,結果存放在數據成員m中,再統計句子數,結果存放在數據成員n中 void print(): 按輸出示例的格式輸出統計結果 ~STR(): 析構函數,實現必要的功能 (3)在主函數中對該類進行測試 輸出示例: 字符串:I am a student. I am twenty. I com from china 句子數:3 單詞數:11 【要求】 源程序文件名必須為myfb.cpp,并放在T盤根目錄下,供閱卷用 |