首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言統計 Q/S 字元:迴圈內需重置計數器

     編輯:程式設計疑難解答

代碼邏輯正確,但 counter、number 未在每組測資迴圈重置,導致累加錯誤。

錯誤片段

for(j=0;j<T;j++) {
    gets(str);
    for(i=0;str[i];i++) { ... }
    if(counter>number) ... // counter、number 來自上一輪累積
}

修正

for(j=0;j<T;j++) {
    int counter = 0, number = 0; // 移入迴圈內,每輪歸零
    gets(str);
    for(i=0;str[i];i++) {
        if(str[i]=='Q') counter++;
        else number++; // 假設只有 Q 和 S
    }
    puts(counter>number ? "Simple" : "晴天");
}

補充建議

  • gets 已棄用(緩衝區溢位風險),改用 fgets(str, N, stdin)。
  • 讀取 T 後殘留換行符,scanf("%d ", &T) 中的空格可吸收空白字元,或額外 getchar()。
  • 輸出「晴天」與題目「Simple」語意對應需確認。

「迴圈變數每輪歸零」是處理多組測資的基本功。

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