草明&草明 2019-03-25 05:33 采纳率: 66.7%
浏览 3457
已采纳

用C语言实现求输入的一串数的平均值,方差和标准差(找错)

#include
#include

double FANG_01(float c,float a[100],int b); //函数声明

void main()
{
float a[100];
int i;
float ave;

float ave_01(float a[100]); //定义函数时括号里得写完整

printf("please input:\n");
for(i=0;i<=99;i++)  //必须得有结束标志!否则得一直输入100个数字
{
    scanf("%d",&a[i]);
    if(a[i]==0)
        break;
}
ave=ave_01(a);
printf("平均数=%f\n",ave);

}

float ave_01(float a[100]) //函数定义
{
int i,j;
float sum=0;
float ave=0;
double s;
double t;

for(i=0;i<=99;i++)
{
    if(a[i]!='\0') //直接引用从主函数传递过得来的实参
    {
        sum+=a[i];
        ++j;
    }
    else break;
}
ave=sum/j;

return ave; 

s=FANG_01(ave,a,j); //在其他函数中调用,则应在外部声明
printf("方差=%lf",s);

t=sqrt(s); //求平方根的函数__
printf("标准差=%lf",t);

}

double FANG_01(float ave,float a[100],int j) //函数定义
{
float b=0;
double s;
int i;
for(i=0;i<=100;i++)
{
if(a[i]!='\0')
b+=pow((a[i]-ave),2); //求平方的函数pow
else break;
}
s=b/j;
return s;
}

编译后没有错误,但是显示结果是-0.000000,其他啥也没有,单步调试调不出来(会报错Loaded 'ntdll.dll', no matching symbolic information found.)实在是不知道程序哪里错了o(╥﹏╥)o求各路大佬帮帮忙。。。。。

原题:假设有一堆数字(小于100个),需要对其做如下处理
1.求平均数

2.求标准差
3.求方差
可以用函数实现,也可以不用

**下面是更改后的代码:
#include
#include

double FANG_01(float c,float a[100],int b); //函数声明

void main()
{
float a[100];
int i,j;
float ave;
double s,t;

float ave_01(float a[100]); //定义函数时括号里得写完整

printf("please input:\n");
for(i=0;i<=99;i++)  //必须得有结束标志!否则得一直输入100个数字
{
    scanf("%f",&a[i]);
    if(a[i]==0)
        break;
    ++j;
}
ave=ave_01(a);
printf("平均数=%f\n",ave);

s=FANG_01(ave,a,j); //在其他函数中调用,则应在外部声明
printf("方差=%lf",s);

t=sqrt(s); //求平方根的函数
printf("标准差=%lf",t);

}

float ave_01(float a[100]) //函数定义
{
int i,j;
float sum=0;
float ave=0;
double s;
double t;

for(i=0;i<=99;i++)
{
    if(a[i]!='\0') //直接引用从主函数传递过得来的实参
    {
        sum+=a[i];
        ++j;
    }
    else break;
}
ave=sum/j;

return ave; 

}

double FANG_01(float ave,float a[100],int j) //函数定义
{
float b=0;
double s;
int i;
for(i=0;i<=100;i++)
{
if(a[i]!='\0')
b+=pow((a[i]-ave),2); //求平方的函数pow
else break;
}
s=b/j;
return s;
}```

**![图片说明](https://img-ask.csdn.net/upload/201903/25/1553485017_94211.png)这是运行后的结果,还是找不出错误
  • 写回答

3条回答 默认 最新

  • wusuobuwei_1 2019-03-25 09:55
    关注

    函数float ave_01(float a[100]):int i,j;请将j初始化后再使用,比如 int j = 0; 该函数里面的return ave;这句以后的代码都不会执行。以上

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 11月1日

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突