[英]Min and max in C using basics
當用戶輸入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");
}
首先,使用適當的值初始化min和max。
int min = INT_MAX;
int max = INT_MIN;
其次,僅當輸入數字小於當前最小值時才更新最小值。 僅當輸入數字大於當前最大值時才更新最大值。
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");
}
您需要做兩件事:
min = number;
max = number
支票number > 0
。 這是因為您要用數字值覆蓋變量。 這將導致丟失先前的min
和max
(如果有)。 int min = 0;
並且int max = 0
,對整數數據類型使用上限和下限。 這存在於limits.h
。 您可以使用INT_MAX
(2147483647)和INT_MIN
(–2147483648)。 else if (number > max)
,應該是if (number > max)
。 對於每一個數字,你需要檢查這兩個最小值和最大值。 if (number > 0)
應該改為if (number != 0)
。 這是因為您希望程序在用戶輸入0
時結束,因此要使其接受負數,必須更改條件。 average
。 相反,您可以在退出循環后進行計算。 number != 0
內的最小和最大支票移動。 這樣做的原因是,當number == 0
時,您不想計算最小值和最大值。 您使用了:
if (number > 0)
{
count = count + 1;
sum += number;
min = number;
max = number;
}
在這里,不要使用:
min = number;
max = number;
因為,當數字大於0時,最小值和最大值將設置為輸入數字,因此它下面的if和else if語句將不起作用。
將scanf讀取的第一個數字設置為min的初始值和max的初始值;無論這些數字是什么,這將始終有效。
if (count==1)
{
min=number;
max=number;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.