C语言中,设计一个程序,把任意个浮点数读入数组里,然后计算平均值

#include <stdio.h>
int main(void)
{
printf("请输入任意多个数:\n");
double number[100000];//定义一个名为“number”的数组
int i=0;
int n=0;
scanf("%lf",&number[i]);
double average=0;//定义一个变量“average”,并初始化
double sum = 0;//定义一个变量“sum”,并初始化

for(i=0;i<n;i++)
sum = sum+number[i];
average = sum / n;
printf("%lf",average);
return 0;
}

大神能不能帮看一下,哪里错了?能编译成功,但是不能运行。

1、规定了数量n=0,不符合题目要求输入任意数量的浮点数;而且直接在对i的循环中规定i<n,n的值为0,没有变化,也是错的。

2、没有逐一读取输入数。

这个程序基本上全错了。注意:C语言通过编译,并不代表程序正确,格式有错误有时也能通过编译,如果算法错误,程序是不会替你判定的。往往会有通过编译的程序实际上全错了,例如你写的程序就是。

给出正确的程序:

#include <stdio.h>
int main(){
int i,n=0;
float num,s=0,avg,a[10000];
while(scanf("%f",&num)!=EOF)
{a[n]=num;n++;}
for(i=0;i<n;i++)
s+=a[i];
printf("avg=%f",s/n);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-24
#include <stdio.h>
int main(void)
{
printf("请输入任意多个数:\n");
double number[100000];//定义一个名为“number”的数组
int i=0;
int n=0;  //你n初始值是0,所以下面的for循环的条件不满足,修改如下
while(1)
{
scanf("%lf",&number[i]);
if(number[i] == 0)  //如果输入0值就退出循环
break;
else
++i;
}
n=i;  //输入的个数赋值给变量n
double average=0;//定义一个变量“average”,并初始化
double sum = 0;//定义一个变量“sum”,并初始化

for(i=0;i<n;i++)
sum = sum+number[i];
average = sum / n;
printf("%lf",average);
return 0;
}

//示例运行结果如下:
F:\c_work>a.exe
请输入任意多个数:
100 200 300 400 500 0
300.000000

本回答被提问者采纳
相似回答