首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用基础的C语言中的最小和最大

使用基础的C语言中的最小和最大
EN

Stack Overflow用户
提问于 2018-11-25 14:53:11
回答 4查看 110关注 0票数 1

这个程序应该在用户输入0时结束,然后显示计数、总和、平均值、最小值和最大值。我能够计算出和计数和平均值,但我的最小和最大值不起作用。

代码语言:javascript
复制
int main()
{
    int number = 0;
    int count = 0;
    int sum = 0;
    int average;
    int min = 0;
    int max = 0;    

    do {        
        printf("Enter a number: ");
        scanf_s("%d", &number);
        if (number > 0)
        {
            count = count + 1;
            sum += number;      
            min = number;
            max = number;

        }
        average = sum / count;

            if (number < min)
            {
                min = number;
            }
            else if (number > max)
            {
                max = number;
            }


    } while (number != 0);

    printf("count: %d\n",  count);
    printf("Sum: %d\n", sum);
    printf("average: %d\n", average);
    printf("Minimum: %d\n", min);
    printf("Maximum: %d\n", max);

    system("pause");
}
EN

回答 4

Stack Overflow用户

发布于 2018-11-25 15:28:53

首先,用适当的值初始化min和max。

代码语言:javascript
复制
int min = INT_MAX;
int max = INT_MIN;

其次,仅当输入数量小于当前最小值时才更新最小值。仅当输入数字大于当前最大值时才更新最大值。

票数 3
EN

Stack Overflow用户

发布于 2018-11-25 15:26:37

代码语言:javascript
复制
int main()
{
    int number = 0;
    int count = 0;
    int sum = 0;
    int average;
    int min = INT_MAX;   // don't forget to include limits.h
    int max = INT_MIN;

    do {        
        printf("Enter a number: ");
        scanf_s("%d", &number);
        if (number > 0)
        {
            count = count + 1;
            sum += number;
            if (number < min)
            {
                min = number;
            }
            if (number > max)
            {
                max = number;
            }
        }
        else if (number < 0) 
        {
            printf("Negative value entered...skipping");
        }
    } while (number != 0);

    printf("count: %d\n",  count);
    printf("Sum: %d\n", sum);
    average = sum / count;
    printf("average: %d\n", average);
    printf("Minimum: %d\n", min);
    printf("Maximum: %d\n", max);

    system("pause");
}

你需要做两件事:

  1. 从check number > 0中删除min = number;max = number。这是因为,您正在用Numer值覆盖变量。这将导致先前的minmax值丢失(如果有)。
  2. 而不是int min = 0;int max = 0,使用整数数据类型的上限和下限。这在limits.h中是存在的。您可以使用(–2147483648).
  3. There (2147483647)和INT_MIN INT_MAX是您的代码的另一个问题。应该是if (number > max),而不是else if (number > max)。对于每个需要检查最小和最大values.
  4. Also,的数字,条件if (number > 0)应该改为if (number != 0)。这是因为您希望程序在用户输入0时结束,因此必须更改该条件才能让程序接受负数。
  5. 另外,你不需要每次都计算average。取而代之的是,你可以在走出循环后进行计算。此外,你还需要在

number != 0中移动对min和max的检查。这样做的原因是,当使用number == 0.时,您不想计算min和max

票数 2
EN

Stack Overflow用户

发布于 2018-11-25 15:04:02

您使用了:

代码语言:javascript
复制
if (number > 0)
{
    count = count + 1;
    sum += number;      
    min = number;
    max = number;
}

在这里,不要使用:

代码语言:javascript
复制
min = number;
max = number;

因为当数字大于0时,最小和最大值将被设置为输入数字,因此它下面的if和else if语句将不起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53465330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档