繁体   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