2020級C++實驗課-期末機考模擬考題解
做這個題解的理由很簡單,30號不想做這個題,有很多同學想寫但是不會寫,湊巧我寫了,所以搞個題解。
順序就是題單裡的順序(介面左上角選單切換文章,右上角目錄方便檢視)
1:黑馬白馬
題意:
隨機得到一個數字,如果是偶數,則輸出“黑馬”,並得到一顆糖,然後繼續;不然則輸出“白馬”,沒有得到糖,並且換人。
題解:
判斷一個數是不是偶數(能否被2整除)即可。
上板子:
if (n == 0)continue; else if (n % 2 == 0)cout << "Black Horse!"; else cout << "White Horse, Bye!" << endl;
2:星號列陣-右三角
題意:
根據輸入的數字,畫出相對應的靠右的三角形。
題解:
其實就是輸出了一個n*n的圖,判斷一下該不該輸出 * 就行,注意行末換行。
上板子:
for (int i = 1;i <= n;i++) { for (int j = 1;j <= n;j++) { if (j > n - i)cout << '*'; else cout << " "; } cout << endl; }
3:水仙花數
題意:
一個(三位)水仙花數是指一個三位數,其數字本身正好等於其個位數,十位數,及百位數的三
題解:
其實就是輸出了一個n*n的圖,判斷一下該不該輸出 * 就行,注意行末換行。
上板子:
void fi(int a)//輸入一個數 a,判斷它是不是水仙花數(該函式僅限於三位水仙花數) { int b, c, d; b = a % 10; c = (a / 10) % 10; d = a / 100; if (a == (b * b * b + c * c * c + d * d * d)) cout <<" "<< a; else return ; }
4:只要大寫字母
題意:
輸入一個字串,輸出該字串,但只要字母,並且把所有的字母都換成大寫。
題解:
輸入字串,然後一位位判斷(小寫與大寫字母的ASCII碼差32),如果是小寫,就減32就好了。
由於是含空格的字串,所以要用getline輸入。
上板子:
getline(cin, s); for (int i = 0;i < s.length();i++) { if (s[i] >= 'a' && s[i] <= 'z') { s[i] -= 32; cout << s[i]; } else if (s[i] >= 'A' && s[i] <= 'Z') cout << s[i]; } cout << endl;
5:三哥的行列
題意:
輸出每群人年紀第三大的(按照從小到大排序)
題解:
把每組數第三大的數(通過排序)存入一個數組,然後再排序後輸出。
這麼明白了,怎麼可能再給你複製貼上
6:三的倍數或平方
題意:
判斷一個整數是否是3的倍數。如果是3的倍數,則輸出其平方;如果不是,則輸出其3倍。
題解:
就是題意,沒有題解(狗頭)
7:素數的和
題意:
輸入2個正整數m,n,輸出第m個起的n個素數的和。
題解:
暫時沒有想到常規的方法,先空著。
8:變數名解析
題意:
輸入1個字串,把所有合法的變數名都解析出來。
題解:
判斷合法字串自己看題目,同時也是一個考點。我這裡講的主要是如何做到符合題意地輸出//我因為不合題意錯了7次
你需要判斷需不需要空格,需不需要換行。
我最後是把所有符合題意的存入一個數組,然後輸出。
上板子:
for (int i = 0;i < cnt;i++) { cout << sh[i]; if (i != cnt-1)cout << " "; } cout << endl;
9:排序&比較
題意:
輸入2個數列,分別排序後,輸出其各位數字較大的一個。
題解:
輸入陣列,分別排序,然後用一個迴圈輸出較大的就行了。
10:矩陣的酒窩
題意:
矩陣上的一個點謂之“酒窩”若它比四周的點都小。一個位於邊緣的點可以忽略沒有“鄰居”的那一邊。同理,位於4個角的點可以忽略沒有“鄰居”的那兩邊。然後輸出某個陣列“酒窩”的個數。
題解:
二維動態陣列
上板子:
int m, n,num=0; cin >> m >> n; int** p = new int* [m]; for (int i = 0;i < m;i++) p[i] = new int[n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> p[i][j]; } } for (int i = 0; i < m; i++) { if(i==0) for (int j = 0; j < n; j++) { if (j == 0) { if (p[i][j + 1] > p[i][j] && p[i + 1][j] > p[i][j]) num++; } else if (j == n - 1) { if (p[i][j - 1] > p[i][j] && p[i + 1][j] > p[i][j]) num++; } else { if (p[i][j + 1] > p[i][j] && p[i][j - 1] > p[i][j] && p[i + 1][j] > p[i][j]) num++; } } else if (i == m-1) for (int j = 0; j < n; j++) { if (j == 0) { if (p[i][j + 1] > p[i][j] && p[i - 1][j] > p[i][j]) num++; } else if (j == n - 1) { if (p[i][j - 1] > p[i][j] && p[i - 1][j] > p[i][j]) num++; } else { if (p[i][j + 1] > p[i][j] && p[i][j - 1] > p[i][j] && p[i - 1][j] > p[i][j]) num++; } } else for (int j = 0; j < n; j++) { if (j == 0) { if (p[i][j + 1] > p[i][j] && p[i - 1][j] > p[i][j] && p[i + 1][j] > p[i][j]) num++; } else if (j == n - 1) { if (p[i][j - 1] > p[i][j] && p[i - 1][j] > p[i][j] && p[i + 1][j] > p[i][j]) num++; } else { if (p[i][j + 1] > p[i][j] && p[i][j - 1] > p[i][j] && p[i - 1][j] > p[i][j] && p[i + 1][j] > p[i][j]) num++; } } } cout << num << endl; for (int i = 0; i < m; i++) delete[]p[i]; delete[]p;
以上就是本次有點水的題解的全部內容了,不會的可以來問我 // 不一定能馬上回
製作:BDT20040