我似乎无法弄清楚为什么我没有得到正确的大小值。 我应该找到给出的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;
}
答案 0 :(得分:1)
large = value;
small = value;
// point A
if(value > large)
large = value;
if(value < small)
small = value;
在上面的A点,large
,small
和value
现在包含相同的值。随后的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;计算整个总和。