PAT 1004 成績排名

2021-08-16 20:15:30 字數 1510 閱讀 6510

1004 成績排名

讀入n名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。

輸入格式:每個測試輸入包含1個測試用例,格式為

第1行:正整數n

第2行:第1個學生的姓名 學號 成績

第3行:第2個學生的姓名 學號 成績

… … …

第n+1行:第n個學生的姓名 學號 成績

其中姓名和學號均為不超過10個字元的字串,成績為0到100之間的乙個整數,這裡保證在一組測試用例中沒有兩個學生的成績是相同的。

輸出格式:對每個測試用例輸出2行,第1行是成績最高學生的姓名和學號,第2行是成績最低學生的姓名和學號,字串間有1空格。

輸入樣例:

3 joe math990112 89

mike cs991301 100

mary ee990830 95

輸出樣例:

mike cs991301

joe math990112

看見這題第一反應想定義乙個student類,然後用物件陣列來解決。怎奈學藝不精,後來以為是string出現了問題,就開始研究用c語言的方式輸入輸入字串。

因為題裡面說了每個姓名學號都不超過10,所以開了幾個10字元的陣列,但是出現了一些意料之外的問題。 在輸入joe的時候,a陣列是沒有問題的;但是在輸入後面學號 math990112 的時候,a陣列的第乙個字元『j』變成了『0』,所以在後面輸出的時候就沒有joe,只有乙個姓名和乙個學號。

出現這個問題百思不得其解,後來實在沒辦法,用string的方式過了這道題,但是還是想知道為什麼a陣列的第乙個字元會突然變成『0』。

在想了兩天之後,請教了大神。大神看了一會,說了一句:

你陣列開小了吧?

!!!!

陣列開大之後,果然沒bug過。

以後只要在記憶體允許範圍裡,我肯定往大開!

附**:

#include 

#include

#include

using

namespace

std;

int main()

,x[15]=,y[15]=,z[15]=;

char a[15]=,b[15]=;

// string a,b;

// string q,x,y,z;

cin>>n;

while(n--)

for (int i = 0; i<10;i++)

x[i] = b[i];

// q=a;

// x=b;

gra_max = c;

}if (gra_min >= c)

}printf("%s %s\n",q,x);

printf("%s %s\n",y,z);

// cout

注:**裡單獨的string情況也可以過,不過我懶得改了-.-

PAT 1004 成績排名

讀入n名學生的姓名 學號 成績,分別輸出成績最高和成績最低學生的姓名和學號。輸入格式 每個測試輸入包含1個測試用例,格式為 第1行 正整數n 第2行 第1個學生的姓名 學號 成績 第3行 第2個學生的姓名 學號 成績 第n 1行 第n個學生的姓名 學號 成績其中姓名和學號均為不超過10個字元的字串,...

PAT1004 成績排名

讀入n名學生的姓名 學號 成績,分別輸出成績最高和成績最低學生的姓名和學號。輸入格式 每個測試輸入包含1個測試用例,格式為 第1行 正整數n 第2行 第1個學生的姓名 學號 成績 第3行 第2個學生的姓名 學號 成績 第n 1行 第n個學生的姓名 學號 成績 其中姓名和學號均為不超過10個字元的字串...

PAT1004 成績排名

讀入n名學生的姓名 學號 成績,分別輸出成績最高和成績最低學生的姓名和學號。輸入格式 每個測試輸入包含1個測試用例,格式為 第1行 正整數n 第2行 第1個學生的姓名 學號 成績 第3行 第2個學生的姓名 學號 成績 第n 1行 第n個學生的姓名 學號 成績其中姓名和學號均為不超過10個字元的字串,...