【发布时间】:2017-10-09 18:19:41
【问题描述】:
我在 Windows 7 64 位机器上使用 Dev-C++(MinGW 编译器)。我编写了一个简单的程序来查找 5 个整数的总和和平均值(假设平均值将是一个 int)。代码如下:
/*Sum and average of 5 integers*/
#include <stdio.h>
main()
{
int a,b,c,d,e,sm,av;
printf ("Enter any 5 integers:\n");
scanf ("%d%d%d%d%d", &a,&b,&c,&d,&e);
sumavg(a,b,c,d,e);
printf ("\nSum = %d", sm);
printf ("\nAverage = %d", av);
getch();
}
sumavg(n,w,o,b,h)
{
int sm = n+w+o+b+h;
int av = sm/5;
return(sm,av);
}
出于某种奇怪的原因,无论 5 个整数的值是多少,输出都是 Sum = 2 和 Average = 27。即使平均值不准确(因为理想情况下它将是浮点数),至少返回的总和值应该是准确的。我究竟做错了什么?谢谢...
【问题讨论】:
-
有什么魔法可以为
sm赋值?不说其他一些无意义的结构......请拿一本现代 C 书阅读。 -
return(sm,av);不返回 2 个值,它返回 av -
main中的av与sumavg中的av不同,后者在函数退出时被遗忘。函数sumavg尝试返回一个值:它依赖于过时的假设,并且无论如何main都不会收集该值。 -
main()?对不起,你是过去的人吗? -
不要编写 K&R(准标准)C 函数。始终使用具有显式类型和完整功能原型的现代(如过去 28 年)表示法。 (@Geoff:
main()的问题比sumavg()要小。)
标签: c