2008年秋江蘇省計算機二級VC上機真題1 |
2008秋江蘇省高校計算機等級考試VC++ 上機1 一:改錯題 以下程序的功能是:查找10—1000之間的回文素數,所謂回文素數是左右對稱的素數,即從左向右和從右向左讀是相同的素數 程序正確的運行結果是: The results: 11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929 count=16 含有錯誤的源程序如下: #include <iostream.h> #include <math.h> int prime(int m) //判斷是否是素數 {if(m==2) return 1; //2是最小的素數 for(int i=2;i<(int)sqrt(m);i++) //i小于等于平方根,應為i<=sqrt(m) if(m%i==0) return 0; return 1; } void main() {int i,j,k,count; //count沒有初始化為隨機數,所以應為0,因為count要判斷有多少回文素數 cout<<”The result:\n”; for(int s=11;s<1000;s+=2){ if(prime(s)){ //如果是素數,則分解該素數 i=s/100; //i為百位數 j=s%10/10; //j為十位數,所以應為j=s/10%10 k=s%10; //k為個位數 } if(i==0 && j==k ||i!=0&&i==j){ //如果是兩位素數,那么應為十位數j等于個位數k, cout<<s<<’\t’; //如果是三位素數,那么應為百位數i等于個位數k,所以應為i==k count++; if(count%8==0) cout<<endl; //輸出8個數值后轉到下一行 } } cout<<”count=”<<count<<endl; } 二、編程題(20分) [題目] 試定義一個類Torch,計算奧運火炬傳遞的總時間,具體要求如下: (1)私有成員 int d,h,m,s:分別表示奧運火炬傳遞的天數、小時數、分鐘數及秒數 (2)公有成員 Torch(char *p):構造函數,用指針p所指向的全部由數字構成的8位字符串初始化火炬傳遞時間,其中,天、時、分、秒分別用兩位字符表示(假設火炬傳遞時間不超過99天),例如, 當char *p="06150650"時,則d=6,h=15,m=6,s=50 void add(Torch &t):將參數t所表示的火炬傳遞時間加入當前對象 void normal():將當前對象所表示的時間轉化為標準形式,即當秒數超過59時進位分鐘,當分鐘超過59時進位小時,當小時數超過23時進位天數 void print() :按規定格式輸出火炬傳遞的天數、小時數、分鐘數與秒數 在主函數中首先定義一個Torch對象t(各數據成員的初始值都為0),表示火炬傳遞的總時間,接著依次輸入若干個不同城市火炬傳遞的天數,小時數,分鐘數與秒數(需要為各城市定義一個Tourch對象,并判斷輸入數據的格式是否正確),并將火炬傳遞時間加入到對象t中, 輸入/輸出示例: 輸入城市1的火炬傳遞時間,輸入end結束: 01084523 輸入城市2的火炬傳遞時間,輸入end結束: 01091224 輸入城市3的火炬傳遞時間,輸入end結束: 011020304 輸入格式不對,請重新輸入 輸入城市3的火炬傳遞時間,輸入end結束: 01102030 輸入城市4的火炬傳遞時間,輸入end結束: end 火炬傳遞的時間為:4天4小時18分17秒 [說明]源程序文件必須為myfb.cpp,并放在T盤根目錄下,供閱卷用 |