PTA 1058 選擇題 字串處理

2021-09-17 02:00:05 字數 1383 閱讀 4283

批改多選題是比較麻煩的事情,本題就請你寫個程式幫助老師批改多選題,並且指出哪道題錯的人最多。

輸入格式:

輸入在第一行給出兩個正整數 n(≤ 1000)和 m(≤ 100),分別是學生人數和多選題的個數。隨後 m 行,每行順次給出一道題的滿分值(不超過 5 的正整數)、選項個數(不少於 2 且不超過 5 的正整數)、正確選項個數(不超過選項個數的正整數)、所有正確選項。注意每題的選項從小寫英文本母 a 開始順次排列。各項間以 1 個空格分隔。最後 n 行,每行給出乙個學生的答題情況,其每題答案格式為 (選中的選項個數 選項1 ……),按題目順序給出。注意:題目保證學生的答題情況是合法的,即不存在選中的選項數超過實際選項數的情況。

輸出格式:

按照輸入的順序給出每個學生的得分,每個分數佔一行。注意判題時只有選擇全部正確才能得到該題的分數。最後一行輸出錯得最多的題目的錯誤次數和編號(題目按照輸入的順序從 1 開始編號)。如果有並列,則按編號遞增順序輸出。數字間用空格分隔,行首尾不得有多餘空格。如果所有題目都沒有人錯,則在最後一行輸出 too ******。

輸入樣例:

3 43 4 2 a c

2 5 1 b

5 3 2 b c

1 5 4 a b d e

(2 a c) (2 b d) (2 a c) (3 a b e)

(2 a c) (1 b) (2 a b) (4 a b d e)

(2 b d) (1 e) (2 b c) (4 a b c d)

輸出樣例:36

52 2 3 4

思路:對於每一道題目,將題目的總分儲存在sum[i]陣列裡面,將題目的選項插入儲存在right[i](為集合型別)裡面。wrongs[i]儲存第i道題錯誤的人數,對於n個學生,每乙個學生的答案插入乙個集合st裡面,比較st與right[i]是否相等,如果相等說明該生答對了,他的score += total[i](加上當前題目的總分),如果該生答錯了,wrongs[i]++,表示第i道題新增乙個錯誤的人。輸出每乙個學生的得分;遍歷wrongs陣列,求wrongs的最大值maxwrongs。如果maxwrongs == 0說明沒有乙個人做錯題目,則輸出「too ******」,否則輸出maxwrongs的值,和wrongs陣列中wrongs[i] == maxwrongs的那些題號~

注意:scanf中的%d和%c之間一定要有分隔符的主動scanf輸入,否則可能接收成空格或者空值~

題解

#include#include#includeusing namespace std;

int main()

if(maxwrongs==0)

printf("too ******");

else

} return 0;

}

字串選擇題

字串的長度是指串中所含字元的個數 注意點1 char test 12345 上面test陣列的長度是6!因為還又乙個 0 放在這個陣列最後。但是test字串的長度是5!所以就會這樣 char test 12345 num strlen test printf sizeof d n sizeof te...

python字串選擇題 Python字串練習題

1.輸入乙個月份數字,返回對應月份名稱,此問題的ipo模式是 輸入 輸入乙個表示月份的數字 1 12 處理 利用字串基本操作實現該功能 輸出 輸出對應的月份名稱 例項.py month 一月份二月份三月份四月份五月份六月份七月份八月份九月份十月份十一月十二月 for i in range 12 插入...

程式設計題 字串合併處理

talk is cheap,show me the code.按照指定規則對輸入的字串進行處理。詳細描述 將輸入的兩個字串合併。對合併後的字串進行排序,要求為 下標為奇數的字元和下標為偶數的字元分別從小到大排序。這裡的下標意思是字元在字串中的位置。對排序後的字串進行操作,如果字元為 0 9 或者 a...