这个程序应该在用户输入0时结束,然后显示计数、总和、平均值、最小值和最大值。我能够计算出和计数和平均值,但我的最小和最大值不起作用。
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");
}发布于 2018-11-25 15:28:53
首先,用适当的值初始化min和max。
int min = INT_MAX;
int max = INT_MIN;其次,仅当输入数量小于当前最小值时才更新最小值。仅当输入数字大于当前最大值时才更新最大值。
发布于 2018-11-25 15:26:37
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");
}你需要做两件事:
number > 0中删除min = number;和max = number。这是因为,您正在用Numer值覆盖变量。这将导致先前的min和max值丢失(如果有)。int min = 0;和int max = 0,使用整数数据类型的上限和下限。这在limits.h中是存在的。您可以使用(–2147483648).INT_MIN INT_MAX是您的代码的另一个问题。应该是if (number > max),而不是else if (number > max)。对于每个需要检查最小和最大values.if (number > 0)应该改为if (number != 0)。这是因为您希望程序在用户输入0时结束,因此必须更改该条件才能让程序接受负数。average。取而代之的是,你可以在走出循环后进行计算。此外,你还需要在number != 0中移动对min和max的检查。这样做的原因是,当使用number == 0.时,您不想计算min和max
发布于 2018-11-25 15:04:02
您使用了:
if (number > 0)
{
count = count + 1;
sum += number;
min = number;
max = number;
}在这里,不要使用:
min = number;
max = number;因为当数字大于0时,最小和最大值将被设置为输入数字,因此它下面的if和else if语句将不起作用。
https://stackoverflow.com/questions/53465330
复制相似问题