簡體   English   中英

如何停止 output 的無限循環?

[英]How to stop infinite looping the output?

我有一個 function 的代碼,它從一個數字中返回最大的數字。 要求是輸入數字,直到輸入不是數字的內容。 當輸入不是數字的東西時,程序應該停止,但在我的情況下,它只是啟動一個無限循環,打印 function 返回的最后一個結果。 這是代碼:

#include <stdio.h>
int maxDigit(int n){
    int temp = n, maxDig = 0;
    while(temp){
        int digit = temp % 10;
        if(digit > maxDig){
            maxDig = digit;
        }
        temp /= 10;
    }
    return maxDig;
}
int main()
{
    int n = 1, broj;
    while(n){
    if(scanf("%d", &broj)); 
    printf("%d\n", maxDigit(broj)); 
    }
    return 0;
}

可能是什么問題?

您可以查看scanf的返回值,看看您是否讀取了有效的 integer,您可以使用break來終止循環。 main function 中的n變量只有一個常數值,所以我去掉了它,並以其他幾種方式清理了 function。 這是我的結果代碼:

...
int main() {
  while (1) {
    int input;
    if (scanf("%d", &input) != 1) { break; }
    printf("%d\n", maxDigit(input)); 
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM