C While 循环显示 Max 和 Min 并以 0 结尾,但我不想考虑 0

C While loop displaying Max and Min and ends with 0, but I don't want 0 to factor in

我制作了一个显示最小值和最大值的 C do while 循环。当用户输入 0 时循环结束。

我的问题是当我输入一组都大于 0 的数字时,我的最小值是零。
例如当我输入

19,16,8,12,9 

我的 max is 19 ,但是我的 min is 0.
我需要 min 是集合的 min,所以在这种情况下是 8.
我也遇到了集合

的负整数的问题
-6,-4,-9,-12

min is -12,可是我的max is 0。在这种情况下,我想要我的 max to be -4

我该如何解决这个问题。这是因为我必须输入 0 才能结束程序吗?我应该试试 while 循环吗?

感谢任何帮助。

#include<stdio.h>
main()
{

    int L,S,X;


    do{
        printf("\ninput number:");
        scanf("%d",&X);
        if (X>L){
            L=X;
        }
        if (X<S){
            S=X;
        } 

    } while(X!=0);
    printf("\nmax %d, min %d",L,S);
    printf("\n");
    return 0;
}

首先扫描一个值存入L和S,同时加一个if判断第一个数字本身是否为0

#include<stdio.h>
main() {

 int L,S,X;

printf("\ninput number:");
scanf("%d",&X);
L=X;
S=X;
if(X!=0){
do{
printf("\ninput number:");
scanf("%d",&X);
if (X>L){
L=X;
}
if (X<S){
    S=X;
}

}while(X!=0);}
printf("\nmax %d, min %d",L,S);
printf("\n");
return 0;
}

您的变量 LS 未初始化,因此从一些未知值开始。最小值应从 INT_MAX 开始,最大值应从 INT_MIN.

开始

您必须分别用最小值和最大值初始化 LS 变量。由于LS都是整数,将L的值设置为INT_MIN,将S设置为INT_MAX(这些常量存在于<limits.h>).

因此,您的代码将是:

#include <stdio.h>
#include <limits.h>
main()
{
    int L = INT_MIN ,S = INT_MAX , X;
    printf("\nInput number:");
    scanf("%d",&X);
    while (X)
    {
        if (X>L){
            L=X;
        }
        if (X<S){
            S=X;
        } 
        printf("\nInput number:");
        scanf("%d",&X);
    } 
    printf("\nmax %d, min %d",L,S);
    printf("\n");
    return 0;
}

此代码也解决了 0 问题。因为,当您输入数字时,下一条语句会检查数字是否为 0