很简单的一个C语言题目,帮忙看看错在哪里,输出时候S=0

用C语言编写一个程序,计算数列2/1,3/2,5/3,8/5,13/8…前n项之和
#include"stdio.h"
fun(int n)
{int a=2,b=1,c,k;
double s=0.0;
for(k=1;k<=n;k++)
{s=s+1.0*a/b;c=a;a+=b;b=c;}
return(s);}
void main()
{int n;
printf("请输入整数n:");
scanf("%d",&n);
printf("数列前%d项的和为%lf\n",n,fun(n));}

第1个回答  2015-05-19
#include <stdio.h>

double fun(int n)
{
int a=2,b=1,c,k;
double s=0.0;
for(k=1;k<=n;k++)
{s=s+1.0*a/b;c=a;a+=b;b=c;}
return(s);
}

void main()
{
int n;
printf("请输入整数n:");
scanf("%d",&n);
printf("数列前%d项的和为%lf\n",n,fun(n));
}

我输入5的时候,得到s=8.3916667
应该没错的啊
第2个回答  2015-05-19
因为你的自定义函数的返回值默认是int,int型数据直接%lf输出得出的都是0.000000,这和浮点型数据存储方式有关。
改为float fun(int n)应该就好了。本回答被提问者采纳
第3个回答  2015-05-19
fun函数前面加double
不加double,默认的是int类型,加double就对了
相似回答