【发布时间】:2017-07-13 05:48:35
【问题描述】:
程序按预期进行,提示用户输入年龄,直到用户输入“-1”。一旦用户输入这个,程序就会告诉你最大的、最小的和平均的。除了我不确定如何平均输入之外,我一切正常,感谢任何帮助!
更新:感谢所有提供帮助的人,我已经更新了代码。唯一剩下的就是我没有得到正确的平均值。我已经包含了更新的代码。
#include<stdio.h>
int main()
{
int n, large, small;
int sumOfAges = 0;
double averageAge = 0.0;
int Num = 0;
printf("Enter an age: \n");
scanf("%d", &n);
large = n;
small = n;
while(n != -1)
{
printf("Enter an age: \n");
scanf("%d",&n);
if (n>large)
large = n;
if(n < small && n != -1)
small = n;
sumOfAges += n;
Num++;
}
averageAge = (sumOfAges/Num);
printf("\n The largest age is %d", large);
printf("\n The smallest age is %d", small);
printf("\n The average age is %lf", averageAge);
return 0;
}
【问题讨论】:
-
你知道平均值是怎么计算的吗?
-
你已经有了循环。您只需要多出 2 个变量,一个用于求和(添加
n),第二个用于计算多少个数字(添加 +1)。然后显示计算结果(不要忘记转换为float或double,避免四舍五入)。 -
我没有讽刺,只是想指导你而不是给出答案。那么你需要计算平均值吗?总和和元素的数量。你知道如何计算这些吗?
-
@chqrlie "Pointers" 在帮助中,而不是 C 意义上的指针:D
-
请注意,您会将 -1 视为循环体中的有效值(并且它可能是最小值,除非用户首先输入 -2 或其他负值。如很多时候,难点在于验证用户的输入。你还应该测试
scanf()的结果——如果用户输入age 10,你的程序会运行很长时间(因为a不是数字,所以它留给下一个输入操作读取,它发现它不是一个数字,所以......)。你需要做一些适度的修改以避免这些问题。
标签: c loops while-loop