此代码的平均值不正确。如何使用此代码解决平均值。我尝试所有的东西,但每次都相同。它仅显示最后一个数字平均值。
#include<stdio.h>
void compute(int anumber,int *max,int *min,float *average,int count);
int main ()
{
int max=0,min=100;
float average=0;
int number,i=0;
printf("\nenter a number:");
scanf("%d",&number);
while(number>0){
i++;
compute(number,&max,&min,&average,i);
printf("\nenter a number:");
scanf("%d",&number);
}
printf("\naverage %.2f",average);
printf("\ncount %d",i);
printf("\nmin %d",min);
printf("\nmax %d",max);
return 0;
}
void compute(int anumber,int *max,int *min,float *average,int count)
{
float total;
total=total+anumber;
*average=total/count;
++count;
if(anumber>*max)
*max=anumber;
else if(anumber<*min)
*min=anumber;
}
答案 0 :(得分:0)
你的变量&#34;总计&#34;是compute()函数的本地函数,因此它不包含所有输入数字的总和 - 每次调用compute()时它都是新变量,每次都是循环。
如果要一次处理每个数字,如果总计全局变量,则可以在计算函数中找到总数。然后,正确的方法是通过将总数除以值的数量来找到平均值一次。
答案 1 :(得分:0)
问题#1:总数和数字未初始化。
在C中,没有为您完成变量的初始化。总后价值是多少:
float total;
答案:无论在内存中分配的内容是什么。它可以是0,20,44,15,7或-2.3亿,除非你给它一个值,它有一个任意值。它的价值是不确定的。
total=total+anumber;
通过在未知数字上添加数字,你不知道会有多少。
问题#2:您不计算总数。
通过获取集合中的所有数字并将它们相加来计算总数。
即。数字为2,4,6,总数为2 + 4 + 6,等于12.首先要注意的是重复的存在。添加是可以抽象的常见方面。我们通常将重复抽象为循环,即
int i;
float total = 0;
for(i = 0; i <= 6; i+=2)
{
total += i;
}
您的程序中需要一个类似的循环。
您的计算功能无效,无法返回值。有一些方法可以修复总数,以便计算平均值。
例如,在全局范围内定义总计,可以通过将移动到任何函数体之外来完成。您必须从函数中删除total的定义,因为将使用最近的外部作用域中的变量。
使总静态,不会在每个函数调用之间自动处理。这允许您传入值并允许总数保留。
无论您的选择如何,您都必须进行一些更改,截至目前您实际上并未计算平均值。关于你的任务或任务的进一步细节将使每个人受益。 C关键字很少但使用方式很多,为了完全回答你的问题,我们必须知道:
该计划应该做什么?预期的输入/输出有很大帮助。为了提出解决方案,您必须首先完全理解问题。即使从编写良好的代码中获取预期的功能也是一个挑战,使用破碎的代码几乎不可能这样做。
您是否给出了规格?你了解他们吗?我从你的评论中看到你不允许更改功能标题/原型,你有什么其他限制?
最后一点说明。我假设这是一个家庭作业,因为有人参加了很多基于C编程的课程,并且自己教过一些我可以向你保证 - 通过只接受必要的帮助,你将从练习中获得最大的收益,努力尽可能多地考虑问题。