![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2013春江蘇省計算機二級Visual C++上機試卷1 |
2013年(春)江蘇省計算機等級考試 二級Visual C++上機試卷1 一、改錯題 【題目】 如果將一個二進制數(shù)的各位數(shù)字的順序顛倒后所得到的新二進制數(shù)與原數(shù)相等,則稱該二進制數(shù)為回文數(shù),以下程序的功能是:在由兩個正整數(shù)確定的范圍內(nèi),查找對應的二進制數(shù)為回文數(shù)的整數(shù),采用的算法是:將待判斷的整數(shù)轉(zhuǎn)換為二進制數(shù)形式,并按正序和反序方式分別存入兩個字符串中,比較兩個字符串,若兩個字符串相等則該數(shù)為符合要求的數(shù) 正確程序的輸入/輸出結(jié)果如下(下劃線部分為鍵盤輸入): 請輸入查找范圍:100 200 對應的二進制數(shù)為回文數(shù)的個數(shù)為: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<<"對應的二進制數(shù)為回文數(shù)的個數(shù)為:"<<i<<endl; for(i=0;bin[i];i++){ cout<<a[i]<<"-->"<<bin[i]<<endl; delete[] bin[i]; } } 【要求】 1.打開T盤中myfa.txt文件,將其文本拷貝到文件myfa.cpp中(或?qū)⑸鲜龀绦蜾浫氲轿?/SPAN> 件myfa.cpp中),根據(jù)題目要求及程序中語句之間的邏輯關系對程序中的錯誤進行修改。程 序中的注解可以不輸入。 2.改錯時,可以修改語句中的一部分內(nèi)容,增加少量的變量說明、函數(shù)原型說明或編譯預 處理命令,但不能增加其他語句,也不能刪除整條語句。 3.將改正后的源程序文件myfa.cpp必須放在T盤根目錄下,供閱卷用。 二、編程題(20分) 【題目】 試定義一個類STR,統(tǒng)計一個字符串中包含的句子數(shù)和單詞數(shù),規(guī)定單詞之間以空格、”,”或”.”分隔,句子以”.”結(jié)束,具體要求如下 (1)私有數(shù)據(jù)成員 char *s :指向待統(tǒng)計的字符串 int m,n: 分別記錄求得的單詞數(shù)和句子數(shù) (2)公有成員函數(shù) STR(char *t): 構(gòu)造函數(shù),用參數(shù)t初始化字符串s void fun(): 按題意統(tǒng)計單詞數(shù),結(jié)果存放在數(shù)據(jù)成員m中,再統(tǒng)計句子數(shù),結(jié)果存放在數(shù)據(jù)成員n中 void print(): 按輸出示例的格式輸出統(tǒng)計結(jié)果 ~STR(): 析構(gòu)函數(shù),實現(xiàn)必要的功能 (3)在主函數(shù)中對該類進行測試 輸出示例: 字符串:I am a student. I am twenty. I com from china 句子數(shù):3 單詞數(shù):11 【要求】 源程序文件名必須為myfb.cpp,并放在T盤根目錄下,供閱卷用 |