C++程式用於檢查有多少學生的得分高於第一個學生
假設我們有n個學生在五門科目上的分數。第一個分數是Kamal的,還有n-1個其他學生的得分,每個學生有五門科目的得分。我們需要統計得分高於Kamal的學生人數。在這裡,我們將定義一個名為students的類來載入每個學生的分數。該類有一個Input()函式用於輸入,還有一個calculateTotalScore()函式用於根據給定的五門課的成績計算學生的總分。
因此,如果輸入類似於n = 4 scores = [[25,45,32,42,30],[22,25,41,18,21],[37,42,48,45,25],[36,48,35,40,30]],則輸出將為2,因為最後兩個學生的總分高於Kamal。
為了解決這個問題,我們將遵循以下步驟:
s := 一個包含n個Student型別物件的陣列
for 初始化 i := 0,當 i < n,更新(i增加1),執行
將scores[i]的所有分數載入到s[i]中
kamal_sc := s[0]的總分
count := 0
for 初始化 i := 1,當 i < n,更新(i增加1),執行
total := s[i]的總分
如果 total > kamal_sc,則
(count增加1)
返回 count
示例
讓我們看下面的實現來更好地理解:
#include <iostream> #include <vector> using namespace std; class Student{ public: int score[5]; void input(vector<int> v){ for(int i = 0; i < 5; i++) score[i] = v[i]; } int calculateTotalScore(){ int res = 0; for(int i = 0; i < 5; i++) res += score[i]; return res; } }; int main(){ int n = 4; vector<vector<int>> scores = {{25,45,32,42,30},{22,25,41,18,21},{37,42,48,45,25},{36,48,35,40,30}}; Student *s = new Student[n]; for(int i = 0; i < n; i++){ s[i].input(scores[i]); } int kamal_sc = s[0].calculateTotalScore(); int count = 0; for(int i = 1; i < n; i++){ int total = s[i].calculateTotalScore(); if(total > kamal_sc){ count++; } } cout << count; }
輸入
4, {{25,45,32,42,30}, {22,25,41,18,21}, {37,42,48,45,25}, {36,48,35,40,30}}
輸出
2
廣告