首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

LA 6805 Pantun Grader:詩歌評分模擬實現

     編輯:C++ 入門

LA 6805 Pantun Grader:詩歌評分模擬實現

題目大意:輸入一首詩(多行,逗號分句,句號結束),按規則評分:
A:每句音節數 8~12 得 10 分。
B:第 1、3 句押韻(末兩字母相同)得 20 分;第 2、4 句押韻得 20 分。
C:第 1、3 句音節數相等得 10 分;第 2、4 句音節數相等得 10 分。
D:超過 4 句,每句扣 10 分。
E = A+B+C-D 總分。多測試用例。

關鍵解析邏輯

  • 句子分割:逗號、句號為分隔符。注意逗號後不一定有空格,需手寫解析:讀取單詞,檢查末字符是否為 ',' 或 '.',切分單詞並標記句末。
  • 音節計算(calcSyllable):
    • 長度 6 且含 "ng"/"Ng"/"ny"/"Ny" → 2 音節。
    • 長度 3 且首字母為元音 → 2 音節。
    • 長度 ≥6 → 3 音節;4~5 → 2;≤3 → 1。
  • 押韻判定:取單詞最後兩字母(substr(len-2)),大小寫敏感?代碼直接比較字符串,應區分大小寫。

代碼關鍵點(C++)


while (cin >> word) {
    if (word.back()==',' || word.back()=='.') {
        string w = word.substr(0, word.size()-1);
        sentence.push_back(w);
        if (word.back()=='.') { /* 句末 */ }
    } else sentence.push_back(word);
}

統計前 4 句(不足 4 句按實際)。計算 A/B/C/D/E 輸出。

複雜度

O(總單詞數 × 平均長度),極小。

總結

繁瑣模擬題。核心難點:(1) 輸入解析(逗號句號分隔、無空格情況);(2) 音節規則硬編碼;(3) 只評前 4 句,超出懲罰。代碼邏輯直觀,細節決定成敗。適合鍛鍊字符串處理與模擬能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved