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

C 語言迴圈中條件滿足輸出後未跳出,導致多餘輸出的修正

     編輯:程式設計綜合問答

原始程式碼

#include <stdio.h>
void main() {
    int a, n=0, i, j, k, t;
    scanf("%d", &a);
    for (t=100; t<=999; t++) {
        i = t/100;
        j = t/10%10;
        k = t%10;
        if (i+j+k == 7) n++;
        if (n == a) printf("%d\n", t);
    }
}

問題現象

輸入 a=1 期望輸出第一個符合條件的數(如 106),實際輸出所有符合條件的數(106, 115, 124...)。

原因

if (n == a) printf(...) 後缺少 break,迴圈繼續跑完 100~999,每次 n==a 成立(因 n 不再遞增)都會輸出。

修正版

for (t=100; t<=999; t++) {
    i = t/100; j = t/10%10; k = t%10;
    if (i+j+k == 7) n++;
    if (n == a) {
        printf("%d\n", t);
        break; // 找到目標立即跳出迴圈
    }
}

替代寫法

  • 將 printf 移至迴圈外,迴圈只負責尋找,找到後 break,迴圈外統一輸出。
  • 用函式封裝,找到直接 return t。

核心原則

「找到即停止」的邏輯必須配合 break/return/goto 終止迴圈,否則後續迭代會重複觸發輸出。

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