【发布时间】:2014-03-10 02:16:41
【问题描述】:
我无法找出平均函数中的循环。用户输入序列,如果序列中的数字数量大于 0,则输出数字的平均值并重复另一个序列。如果序列没有数字,则退出程序。
我知道我告诉平均函数在 sum = 0 时返回 0,这就是它在第一个序列之后退出的原因(我认为)。
关于如何避免这种情况的任何建议?尽可能使用伪代码!
#include<stdio.h>
#include<stdlib.h>
double average();
int main ()
{
while( average() )
{
}
}//end main
double average()
{
double n, sum = 0;
int count = 0;
printf ( "Enter sequence: " );
while( scanf( "%lf", &n ) )
{
sum += n;
count++;
}
if( sum > 0 )
{
printf( "average is %.2f\n", sum/(double)count );
return 1;
}
else
return 0;
}
}
这是我的输出:
Enter sequence: 3 4 5 x
average: 4.00
Enter sequence: Press any key to continue . . .
【问题讨论】:
-
我猜您的输入流仍处于失败或 eof 状态,因此 scanf 函数在不允许输入的情况下返回。不幸的是我对C IO了解不多,所以我不知道
cin.ignore()或类似的东西是什么。 -
也许让
sum默认值为 -1 并退出而不是 0。 -
等价于getchar();它工作得很好!非常感谢:)
标签: c