C程序不会计算最小值和最大值(大小)

时间:2017-04-06 01:02:57

标签: c range

我似乎无法弄清楚为什么我没有得到正确的大小值。 我应该找到给出的n个数字的范围,我是否必须在循环之前设置大小的东西?

这是我的代码:

#include <stdio.h>

int main()
{
    //Declaring Variables
    int i, number, sum = 0, value, large, small;
    double avg;

            //User Input
            printf("Enter the number of elements you want to compute.\n");
            scanf("%d", &number);
            printf("Enter %d values.\n", number);

            //Loop to grab values
            for(i=0;i<number;i++)
            {
                    scanf("%d", &value);
                    large = value;
                    small = value;
                    if(value > large)
                            large = value;
                    if(value < small)
                            small = value;
                    //Sum Calculation
                    sum = sum + value;
                    //Average Calculation
                    avg = (((double)sum)/number);
            }

            printf("The sum of the %d numbers is: %d\n", number,sum);
            printf("The avg of the %d numbers is: %.2f\n", number, avg);
            printf("The largest number is: %d\n", large);
            printf("The smallest number is: %d\n", small);

    return 0;
}

2 个答案:

答案 0 :(得分:1)

                large = value;
                small = value;
                // point A
                if(value > large)
                        large = value;
                if(value < small)
                        small = value;

在上面的A点,largesmallvalue现在包含相同的值。随后的if语句将不会生效。在i == 0时,您可能只想要前两行。

答案 1 :(得分:0)

让我为您提供2种修复代码的方法:

选项1.在循环外部初始化大小: 因为大小都是整数,所以你可以初始化它们&#34;在外面&#34; for循环如下:

int large = INT_MIN;
int small = INT_MAX;

删除陈述:

large = value;
small = value;

来自你的for循环。

由于你的目标是分别计算max和min,你可以初始化大到最小的整数,并初始化小到大的可能整数。

常量INT_MIN和INT_MAX在&#34; limits.h&#34;中定义。头文件。

选项2.更改循环中的代码:

我们需要了解大小变量只需要初始化&#34;一次&#34;当循环开始时(即当i == 0时)。 如果你在每次循环时都继续设置它们,那么它们将继续被覆盖,你的最小/最大值将不一致。

因此,请将您的代码更改为以下内容:

if (i == 0) {
    large = value;
    small = value;
}

旁注:计算循环外的平均值&#34;&#34;计算整个总和。