学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
 11 12
发新话题
打印

★求助看看这个函数错在哪里?★在线等!

★求助看看这个函数错在哪里?★在线等!

引用:
#include<stdio.h>
#include<math.h>
double
sum(double a[20]);
main()
{
   
double a[20]={0,0,1};
   
int i,sum=0;
   
for(i=1;i<18;i++)
        
a[i+2]=a[i+1]+a[i];
   
printf("sum=%f\n,sum(a[20])");

}

double sum(double a[20])
//该函数用于a[20]的各项平方根之和,看看错在哪里。
{
   
int i;
   
double sum;
   
for(i=0;i<20;i++)
        
sum+=sqrt(a[i]);
   
return sum;
}

TOP

帮帮忙啊!急!!

TOP

为什么没有人帮忙啊?

TOP

主函数中不应该定义sum,将sum=0去掉即可

TOP

还有,你写的printf函数中引号放的地方不对,估计是你粗心写错的吧^_^

TOP

可是还是有错误啊

TOP

#include<stdio.h>
#include<math.h>
#define N 20
double sum(double a[]);
main()
{
    double a[N]={0,0,1};
    int i;
    for(i=1;i<18;i++)
        a[i+2]=a[i+1]+a[i];
    printf("sum=%f\n",sum(a));

}

double sum(double a[])
{
    int i;
    double sum=0;
    for(i=0;i<20;i++)
        sum+=sqrt(a[i]);
    return sum;
}

TOP

#include<stdio.h>
#include<math.h>
#define N 20
double sum(double a[],int n);
main()
{
    double a[N]={0,0,1};
    int i;
    for(i=1;i<18;i++)
        a[i+2]=a[i+1]+a[i];
    printf("sum=%f\n",sum(a,N));

}

double sum(double a[],int n)
{
    int i;
    double sum=0;
    for(i=0;i<20;i++)
        sum+=sqrt(a[i]);
    return sum;
}

TOP

你的错误关键出在数组做函数的实参时,要把数组的首地址传递被函数。
  还有你的SUM()函数中的sum没有定义,要在SUM()中定义sum或者把sum定义为全局变量。
  最后还有上面的提到的 printf("sum=%f\n,sum(a[20])");中的引号问题。
改了下,代码如下:
#include<stdio.h>
#include<math.h>
double sum(double a[20]);
void main()
{
    double a[20]={0,0,1};
    int i;
   
    for(i=1;i<18;i++)
        a[i+2]=a[i+1]+a[i];
    printf("sum=%f\n",sum(a));

}

double sum(double a[20])//该函数用于a[20]的各项平方根之和,看看错在哪里。
{
    int i;
    double sum=0;
    for(i=0;i<20;i++)
        sum+=sqrt(a[i]);
    return sum;
}
多看少说,重在学习!

TOP

回复 1# 的帖子

你的sum函数中的sum没有赋初值!
所以sum+=sqrt(a[i])就有了问题了!
你的main函数和sum函数的变量sum是两个不同的局部变量!
main函数中可以不要!
在sum函数中的变量sum的的定义改成double sum=0就可以了!

或者直接把sum设成全局变量!

TOP

 11 12
发新话题