大學C 題庫及答案.doc

上傳人:小** 文檔編號:13291332 上傳時間:2020-06-12 格式:DOC 頁數:108 大小:558KB
收藏 版權申訴 舉報 下載
大學C 題庫及答案.doc_第1頁
第1頁 / 共108頁
大學C 題庫及答案.doc_第2頁
第2頁 / 共108頁
大學C 題庫及答案.doc_第3頁
第3頁 / 共108頁

下載文檔到電腦,查找使用更方便

5 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《大學C 題庫及答案.doc》由會員分享,可在線閱讀,更多相關《大學C 題庫及答案.doc(108頁珍藏版)》請在裝配圖網上搜索。

1、C++題庫答案 Q5.(10分)寫一個程序根據從鍵盤輸入的里氏強度顯示地震的后果。根據里氏強度地震的后果如下: 里氏強度 后果 小于4 很小 4.0到5.0 窗戶晃動 5.0到6.0 墻倒塌;不結實的建筑物被破壞 6.0到7.0 煙囪倒塌;普通建筑物被破壞 7.0到8.0 地下管線破裂;結實的建筑物也被破壞 超過8.0 地面波浪狀起伏;大多數建筑物損毀 **輸入格式要求:實數, 提示信息:cout << "請輸入地震的里氏強度: " << endl; **輸出格式要求: "本次地震后果:很??!" "本次地震后果:窗戶晃動!" "本次

2、地震后果:墻倒塌;不結實的建筑物被破壞!" "本次地震后果:煙囪倒塌;普通建筑物被破壞!" "本次地震后果:地下管線破裂;結實的建筑物也被破壞!" "本次地震后果:地面波浪狀起伏;大多數建筑物損毀!" #include using namespace std; int main() { double magnitude; cout << "請輸入地震的里氏強度: " << endl; cin >> magnitude; if (magnitude < 4.0) { cout << "本次地震后果:很??!" << endl; } els

3、e if (magnitude < 5.0) { cout << "本次地震后果:窗戶晃動!" << endl; } else if (magnitude < 6.0) { cout << "本次地震后果:墻倒塌;不結實的建筑物被破壞!" << endl; } else if (magnitude < 7.0) { cout << "本次地震后果:煙囪倒塌;普通建筑物被破壞!" << endl; } else if (magnitude < 8.0) { cout << "本次地震后果:地下管線破裂;結實的建筑物也被破壞!" << endl; } else {

4、 cout << "本次地震后果:地面波浪狀起伏;大多數建筑物損毀!" << endl; } return 0; } Q6.(10分)寫一個程序從鍵盤輸入1到7中的某個數字,其中1代表星期天,2代表星期一,3代表星期二等。根據用戶輸入的數字顯示相應的星期幾。如果用戶輸入的數字超出了1到7的范圍,顯示輸出一個錯誤提示信息。 **輸入格式要求:整數, 提示信息:cout << "Please input a single numeral(1-7): "; **輸出格式要求:"Monday" (星期幾的英文單詞首字母大寫加換行) 提示信息:"Invalid - please

5、 input a single numeral(1-7)."(加換行) #include using namespace std; int main() { int a; cout << "Please input a single numeral(1-7): "; cin >> a; if (a < 1 || a > 7) { cout << "Invalid - please input a single numeral(1-7)." << endl; } switch (a) { case 1: cout << "Sunday" << e

6、ndl; break; case 2: cout << "Monday" << endl; break; case 3: cout << "Tuesday" << endl; break; case 4: cout << "Wednesday" << endl; break; case 5: cout << "Thursday" << endl; break; case 6: cout << "Friday" << endl; break; case 7: cout << "Saturday" << endl; break; } return 0;

7、} Q7.(10分)有一天,一位百萬富翁遇到一個陌生人,陌生人找他談一個換錢的計劃,陌生人對百萬富翁說:“我每天給你10萬元,而你第一天只需給我1分錢,第二天我仍給你10萬元,你給我2分錢,第三天我仍給你10萬元,你給我4分錢……。你每天給我的錢是前一天的兩倍,直到滿一個月(30天)為止”,百萬富翁很高興,欣然接受了這個契約。請編程計算在這一個月中陌生人總計給百萬富翁多少錢,百萬富翁總計給陌生人多少錢。 **輸入提示信息和數據格式:無 **輸出提示信息和數據格式:cout << "百萬富翁給陌生人:" << toStranger << "元" << endl;

8、 cout << "陌生人給百萬富翁:" << toRichman << "元" << endl; #include using namespace std; int main() { int j; double toStranger = 0; /* 富翁給陌生人的錢,以元為單位 */ double toRichman = 0; /* 陌生人給富翁的錢,以元為單位 */ double term = 0.01; /* 富翁第一天給陌生人0.01元 */ for (j = 1; j <= 30; j++) { toRichman

9、 += 100000; /* 陌生人每天給富翁10萬元 */ toStranger += term; term = term * 2; /* 富翁每天給陌生人的錢是前一天的兩倍 */ } cout << "百萬富翁給陌生人:" << toStranger << "元" << endl; cout << "陌生人給百萬富翁:" << toRichman << "元" << endl; return 0; } Q8.(10分)編程計算自然數的立方和,直到立方和大于等于1000000時為止。統(tǒng)計并輸出實際累加的項數。 輸出格式要求:cout<<"sum="<

10、; cout << "count =" << i << endl; 輸出結果為: sum=1071225 count =45 #include using namespace std; int main() { long i, sum = 0; for (i = 1; ; i++) { sum = sum + i * i * i; if (sum >= 1000000) break; } cout<<"sum="< using namespace std; int main() { int a[10] = {32, 43, 65, 23, 432, 543, 543, 54, 542, 87}; int i; int max, min; max = a[0], min = a[0]; for (i = 1; i < 10; i++) { if (a[i] > max) max = a[i]; if

16、(a[i] < min) min = a[i]; } cout << "最大元素:" << max << endl; cout << "最小元素:" << min << endl; return 0; } Q13.(10分)用while循環(huán)編程,求自然數1至100之間各奇數平方和sum。 輸出結果格式為:sum=166650 #include using namespace std; int main() { int i = 1, sum = 0; while (i <= 100) { sum += i * i; i += 2; } co

17、ut << "sum=" << sum << endl; return 0; } Q14.(10分)判斷一個數23437是否是素數(要求程序中設置一個參數flag,flag為1代表是素數,為0代表不是) 輸出結果:0 #include #include using namespace std; int main() { int m, n, flag = 1; m = 23437; for (n = 2; n <= m / 2 && flag; n++) if (m % n == 0)flag = 0; cout << flag <<

18、 endl; return 0; } Q15.(10分)已知一個數m(=252),用循環(huán)求各位數字之和。 輸出結果格式:s=9 #include using namespace std; int main() { int m = 252, a, b, c, s; a = m / 100; b = m / 10 % 10; c = m % 10; s = a + b + c; cout << "s=" << s << endl; return 0; } Q16.(10分)已知一個數m(=252),用循環(huán)求各位數字之積。 輸出結果格式:f

19、=20 #include using namespace std; int main() { int m, f=1,n; m=252; while (m !=0) { n=m%10; f*=n; m=m/10; } cout<<"f="<

20、1 2332 #include using namespace std; int main() { int i, n = 0, m[10] = {1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234}; for (i = 0; i < 10; i++) { int a, b, c, d; a = m[i] / 1000; b = m[i] % 1000 / 100; c = m[i] % 100 / 10; d = m[i] % 10; if (a == d &

21、& c == b) { cout << m[i] << endl; n++; } } return 0; } Q18.(10分)將1-100之間奇數順序累加存入n中,直到其和等于或大于200為止。 輸出結果格式:n=225 #include using namespace std; int main() { int n = 0, i = 1; while (n < 200) { n = n + i; i++; i++; } cout << "n=" << n << endl; return 0; } Q19.(10分)

22、從鍵盤上輸入三個整數,編寫程序求出三個數中的最大值。 輸入格式要求:cout<<"請輸入三個整數:"; 輸出格式要求:cout<<"最大值是:"< using namespace std; int main( ) { int a, b, c, t, max; cout << "請輸入三個整數:"; cin >> a >> b >> c; if (a < b) { t = a; a = b; b = t; } if (a < c) { t = a; a = c; c = t; } max =

23、 a; cout << "最大值是:" << max << endl; return 0; } Q20.(10分)輸入年份和月份,編寫程序,判斷這一年該月份的天數。 輸入格式要求: cout << "請輸入年份和月份:"; 輸出格式要求:cout << year << "年" << month << "月" << "是" << day << "天。" << endl; #include using namespace std; int main() { int year, month, day; cout << "請輸入年份和月份:"; cin

24、 >> year >> month; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 4: case 6: case 9: case 11: day = 30; break; case 2: if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) day = 29; else day = 28; break; } cout << year <<

25、 "年" << month << "月" << "是" << day << "天。" << endl; return 0; } Q21.(10分) 編寫程序,求解下面的分段函數: 輸入格式要求:cout<<"請輸入x:"; 輸出格式要求:cout<<"y="< using namespace std; int main() { double x,y; cout<<"請輸入x:"; cin>>x; if(x>-10&&x<0) y=x-8; if(x==0) y=x; if(x>0&&x<10) y=x

26、*x; cout<<"y="< using namespace std; int main() { int x, y, n; cin >> x >> y; n = x % y; while (n != 0) { x = y; y = n; n = x % y; } cout << y << endl; return 0; } Q23.(

27、10分)利用選擇法將下面10個數按降序排列。 有如下定義:int n[10] = {5, 6, 4, 2, 3, 7, 8, 5, 6, 7}; 輸入格式要求:無 輸出格式要求:以逗號分隔降序數列 #include using namespace std; int main() { int n[10] = {5, 6, 4, 2, 3, 7, 8, 5, 6, 7}, i, j, k, t; for (i = 0; i < 9; i++) { k = i; for (j = i + 1; j < 10; j++) if (n[k] < n[j])

28、 k = j; t = n[i]; n[i] = n[k]; n[k] = t; } for (j = 0; j < 10; j++) cout << n[j] << ","; return 0; } Q24.(10分)定義數組,輸入不多于20名若干學生成績,統(tǒng)計高于平均分的人數k,用-1做結束標志。 輸入格式要求:無 輸出格式要求:cout << "高于平均分的人數:" << k << endl; #include using namespace std; int main() { double cj[20], aver, sum = 0

29、; int n = 0, k = 0, i; cin >> cj[0]; while (cj[n] >= 0) { sum += cj[n]; n++; cin >> cj[n]; } aver = sum /( n-1); for (i = 0; i < n-1; i++) if (cj[i] > aver) k++; cout << "高于平均分的人數:" << k << endl; return 0; } Q25.(10分)已知三個數a,b,c,按由小到大的順序存入a,b,c中并輸出. 輸入格式要求:cout << "輸入三個整數:"; 輸出格式要求

30、:cout << "由小到大的順序是:" << a << "," << b << ","< using namespace std; int main() { int a, b, c, t; cout << "輸入三個整數:"; cin >> a >> b >> c; if (a > b) { t = a; a = b; b = t; } if (a > c) { t = a; a = c; c = t; } if (b > c) { t = b; b = c; c = t; } co

31、ut << "由小到大的順序是:" << a << "," << b << ","< #include using namespace std; void deletechar(char *string, char ch) { int i(0),

33、 k(0); while (string[i++] != \0) if (string[i] != ch) string[k++] = string[i]; string[k] = \0; } int main () { char c[100] = "abcdabcd aabbccdd"; deletechar(c, a); cout << c << endl; return 0; } Q28.(10分)編寫函數,將一個十進制無符號整數轉換為二進制整數,函數原型為: void transform(char*p,long i,int base=2); #includ

34、e using namespace std; void transform(char*p, long i, int base = 2) { int r(0), k(0); char t[128]; while (i > 0) { r = i % base; if (r < 10) t[k] = r + 48; else t[k] = r + 55; i = i / base; k++; } k--; r = 0; while (k >= 0) { *(p + r) = t[k]; r++; k--; } *(p + r) =

35、 \0; } int main() { char c[256]; transform(c, 45678, 2); cout << c << endl; return 0; } Q29.(10分)輸入10個學生的成績,存放在一個一維數組中,求出總分和平均分。 輸入提示信息格式要求: cout << "請輸入學生的分數:"; 輸出結果格式要求:cout << "學生的總分是:" << sum << endl; cout << "學生的平均分是:" << aver << endl; #include #i

36、nclude using namespace std; int main() { int a[10], sum, aver, i; sum = 0; cout << "請輸入學生的分數:"; for (i = 0; i <= 9; i++) cin >> a[i]; for (i = 0; i <= 9; i++) sum = sum + a[i]; aver = sum / 10; cout << "學生的總分是:" << sum << endl; cout << "學生的平均分是:" << aver << endl; return 0; }

37、 Q30.(10分)輸入10個學生的成績,存放在一個一維數組中,找出其中的最高分和所對應的學生。 輸入提示信息格式要求:cout << "請輸入學生的分數:"; 輸出提示信息格式要求:cout << "第" << n + 1 << "名學生的分數最高,是:" << max << endl; #include using namespace std; int main() { int a[10], max, i, n; cout << "請輸入學生的分數:"; for (i = 0; i <= 9; i++) cin >> a[i]; max = a[0

38、]; for (i = 1; i <= 9; i++) if (max < a[i]) { max = a[i]; n = i; } cout << "第" << n + 1 << "名學生的分數最高,是:" << max << endl; return 0; } Q31.(10分)求一個33矩陣的對角線元素之和。 輸入提示信息格式要求: cout << "請輸入3行3列矩陣的元素:" << endl; 輸出提示信息格式要求: cout << "請輸出這個3行3列的矩陣:" << endl; cout << "對角線元素之

39、和為:" << sum << endl; #include #include using namespace std; int main() { double a[3][3], sum = 0; int i, j; cout << "請輸入3行3列矩陣的元素:" << endl; for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) cin >> a[i][j]; cout << "請輸出這個3行3列的矩陣:" << endl; for (i = 0; i < 3; i++) { fo

40、r (j = 0; j < 3; j++) cout << setw(5) << a[i][j]; cout << endl; } for (i = 0; i < 3; i++) sum += a[i][i]; cout << "對角線元素之和為:" << sum << endl; return 0; } Q32.(10分)用公式 π=4-4/3+4/5-4/7+...)計算π的近似值,直到最后一項絕對值小于1e-5 輸入格式要求:無 輸出結果格式要求: cout << "pi =" << pi << endl; #include using

41、namespace std; int main() { double pi = 0; double n = 1; int f = 1; while (4.0 / n >= 1e-5) { pi = pi + f * 4 / n; n = n + 2; f = -f; } cout << "pi =" << pi << endl; return 0; } Q33.(10分)求一個44矩陣的四周元素之和。 輸入提示信息格式要求:cout << "請輸入4行4列矩陣的元素:" << endl; 輸出提示信息格式要求:cout << "請輸出這個4行4列的矩陣:" <

42、< endl; cout << "四周元素之和為:" << sum << endl; #include #include using namespace std; int main() { double a[4][4], sum = 0; int i, j; cout << "請輸入4行4列矩陣的元素:" << endl; for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) cin >> a[i][j]; cout << "請輸出這個4行4列

43、的矩陣:" << endl; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) cout << setw(5) << a[i][j]; cout << endl; } for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) if (i == 0 || i == 3 || j == 0 || j == 3) sum += a[i][i]; cout << "四周元素之和為:" << sum << endl; return 0; } Q34.(10分)4個學生學習5門功課,要求

44、輸入所有學生的各門功課的成績,并分別求出每門功課的平均成績。 輸入提示信息格式要求: cout << "輸入第" << i + 1 << "個學生成績:"; 輸出提示信息格式要求: cout << "第" << i + 1 << "個學生平均成績:" << setprecision(3) << sum / 5 << endl; } #include #include using namespace std; int main() { double s[4][5], sum; int i, j, n; for (i = 0;

45、i < 4; i++) { cout << "輸入第" << i + 1 << "個學生成績:"; for (j = 0; j < 5; j++) cin >> s[i][j]; } for (i = 0; i < 4; i++) { sum = 0; n = 0; for (j = 0; j < 5; j++) sum += s[i][j]; cout << "第" << i + 1 << "個學生平均成績:" << setprecision(3) << sum / 5 << endl; } return 0; } Q35.(10分)請輸入10個整數到一個

46、一維數組,并逆序輸出。 輸入提示信息格式要求:無 輸出提示信息格式要求:cout << a[i] << " "; #include using namespace std; int main() { int a[10], i; for (i = 0; i <= 9; i++) cin >> a[i]; for (i = 9; i >= 0; i--) cout << a[i] << " "; return 0; } #include using namespace std; int main() { int a[1

47、0], i; for (i = 0; i <= 9; i++) a[i] = i; for (i = 9; i >= 0; i--) cout << a[i] << " "; return 0; } Q36.(10分)在a數組和b數組中放入an+1和bn+1個由小到大的有序數,程序把兩個數組中的數按由小到大的順序歸并在c數組中。 設: int a[10] = {2, 4, 5, 8, 9, 19}, an = 5; int b[10] = {2, 3, 4, 8, 12, 18}, bn = 5; 輸出格式要求:輸出結果用2個空格隔開

48、 cout << endl; #include using namespace std; int main() { int a[10] = {2, 4, 5, 8, 9, 19}, an = 5; int b[10] = {2, 3, 4, 8, 12, 18}, bn = 5; int i, j, k, c[20], max = 999; a[an + 1] = b[bn + 1] = max; i = j = k = 0; while ((a[i] != max) || (b[j] != max)) if (a[i] < b[j]) { c

49、[k] = a[i]; k++; i++; } else { c[k] = b[j]; k++; j++; } for (i = 0; i < k; i++) cout << c[i] << " "; cout << endl; return 0; } Q37.(10分)請輸出如下方陣: 1 2 2 2 2 2 1 3 1 2 2 2 1 4 3 3 1 2 1 4 4 3 3 3 1 4 4 4 3 3 1 5 1 4 4 3 1 5 5 5 1 4 1 5 5 5

50、 5 5 1 輸出格式要求:數據之間用2個空格隔開。 #include using namespace std; int main() { int a[7][7], i, j; for (i = 0; i < 7; i++) for (j = 0; j < 7; j++) { if (i == j || i + j == 6) a[i][j] = 1; else if (i < j && i + j < 6) a[i][j] = 2; else if (i > j && i + j < 6) a[i][j] = 3; else if (i

51、 < j && i + j > 6) a[i][j] = 4; else a[i][j] = 5; } for (i = 0; i < 7; i++) { for (j = 0; j < 7; j++) cout << a[i][j] << " "; cout << endl; } return 0; } Q38.(10分)輸入20個整數,統(tǒng)計非負數的個數,并計算它們的和,然后將非負數從小到大進行排序并輸出。 輸入信息提示要求:無 輸出提示信息格式要求:cout<<"非負數有:"<

52、數是:"< #include using namespace std; int main() { int a[20],

53、s = 0, n = 0, i, j, t; for (i = 0; i <= 19; i++) cin >> a[i]; for (i = 0; i <= 19; i++) { if (a[i] > 0) { a[n] = a[i]; n++; } } cout << "非負數有:" << n << "個" << endl; cout << "非負數是:" << endl; for (i = 0; i < n; i++) cout << setw(5) << a[i]; cout << endl; for (i = 0; i < n; i++) s = s

54、+ a[i]; cout << "非負數的和是:" << s << endl; for (i = 0; i <= n - 2; i++) for (j = i + 1; j <= n - 1; j++) if (a[i] > a[j]) { t = a[i]; a[i] = a[j]; a[j] = t; } cout << "將非負數從小到大排序輸出:" << endl; for (i = 0; i < n; i++) cout << setw(5) << a[i]; cout << endl; return 0; } Q39.(10分)輸入10名學生語文、數

55、學、外語課成績,計算每名學生三門課的平均成績,輸出每人各科成績及平均成績,并分析三門課程的優(yōu)秀率,90分以上為優(yōu)秀。 輸入提示信息格式控制:cout<<"輸入第"< #include using namespace std; int main () { int score[10][3],sum; int i,j,n; for (i=0;i<10;i++) { cout<<"輸入第"<>score[i][j]; } for (i=0;i<10;i++) { sum=0; cout<<"第"<

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!