初探結構體:班級通訊錄
0.5s 256M你接下了班上的資訊股長,第一份差事是做一份電子通訊錄:每位同學有姓名、座號、電話三筆資料。
請定義一個結構體 student,把一位同學的三筆資料綁成一包。成員的名稱與型態都必須完全一樣:
| 成員 | 型態 | 意義 |
|---|---|---|
name |
string |
姓名(小寫英文字母) |
seat |
int |
座號 |
phone |
string |
電話(恰 \(10\) 個數字,可能以 0 開頭) |
你只需要寫這個結構體的定義,不用寫 main、不用 #include 任何東西——評測程式會自動在你的程式最上方加上這題需要的標頭(<string>)與 using namespace std;,要用其他標頭自己再 #include 即可。想把含有 main 的完整程式貼上來測試也可以,評測時會忽略你的 main。
可以直接複製下面的骨架來改:
struct student {
// 在這裡宣告三個成員
};
評測程式會做的事
評測程式會 #include 你的程式,然後:
- 讀入 \(N\),宣告
vector<student> a(N),把每位同學的資料依序讀進a[i].name、a[i].seat、a[i].phone。 - 用「整包指派」把名單前後對調:
student tmp = a[i]; a[i] = a[N-1-i]; a[N-1-i] = tmp;。 - 依對調後的順序,每位同學印一行
座號 姓名 電話。
也就是說,只要你的結構體符合規格,輸出就是輸入名單倒過來印。若不符合規格,編譯訊息的第一行會告訴你缺了什麼,例如 [檢查] struct student 缺少成員 seat。
輸入格式
(這是評測程式讀的輸入。)第一行有一個整數 \(N\)。接下來 \(N\) 行,每行依序是一位同學的姓名、座號、電話,以一個空白分隔。
限制
- \(1 \le N \le 1000\)
- 姓名由 \(1\) 到 \(10\) 個小寫英文字母組成
- \(1 \le\) 座號 \(\le 1000\)
- 電話恰為 \(10\) 個數字(
0到9),可能以0開頭
輸出格式
輸出 \(N\) 行,依名單倒過來的順序,每行 座號 姓名 電話,以一個空白分隔。
範例輸入 1
3
amy 3 0912345678
bob 7 0987654321
cathy 1 0900000000
範例輸出 1
1 cathy 0900000000
7 bob 0987654321
3 amy 0912345678
範例解釋 1
名單倒過來印。注意 cathy 的電話以 0 開頭——電話若用 int 存,開頭的 0 會消失,所以規格要求用 string。