打印最大和最小的数字,直到-1为止

时间:2018-12-29 06:49:36

标签: c if-statement while-loop int

它可以工作,但是如果您输入的数字不小于0,则不会打印较小的值,而是打印0。

int max = 0;
int min = 0;
int a;

printf("Enter a number:\n");
scanf("%d", &a);

while (a != -1){
        if (a < min){
            min = a;
        }

        if (a > max){
            max = a;
        }
        scanf("%d", &a);
}
printf("Your largest number is %d. Your smallest number is %d.", max, min);

1 个答案:

答案 0 :(得分:0)

这是因为您的初始min为零,所以 no 的正值将小于该值。

最好更改循环结构,以便无论如何都可以加载初始值,例如:

int a, min = 0, max = 0, first = 1; // Force first number to be used.
printf ("Enter a number:\n");
scanf ("%d", &a);
while (a != -1) {
    if (first || a < min) min = a;
    if (first || a > max) max = a;
    first = 0;                      // Reset after first number.
    scanf ("%d", &a);
}
printf ("Largest is %d, smallest is %d.\n", max, min);

您可能还应该 检查scanf的返回值,以便捕获非整数输入。这是拥有更强大代码的一种方法,但是对于教育计划来说,这可能还可以(至少只要您了解其中的含义)。

这很容易替换:

scanf ("%d", &a)

类似:

if (scanf ("%d", &a) != 1) {
    puts ("Invalid input.");
    exit(1);
}