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

用C语言编写一个程序,计算数列2/1,3/2,5/3,8/5,13/8…前n项之和#include"stdio.h"fun(intn){inta=2,b=1,c,k;do... 用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));}
展开
 我来答
kingdjh
2015-05-19 · TA获得超过955个赞
知道小有建树答主
回答量:939
采纳率:66%
帮助的人:826万
展开全部
#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
应该没错的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Luck3192
2015-05-19 · TA获得超过1141个赞
知道小有建树答主
回答量:497
采纳率:100%
帮助的人:385万
展开全部
因为你的自定义函数的返回值默认是int,int型数据直接%lf输出得出的都是0.000000,这和浮点型数据存储方式有关。
改为float fun(int n)应该就好了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dotazwz
2015-05-19
知道答主
回答量:29
采纳率:0%
帮助的人:14.2万
展开全部
fun函数前面加double
不加double,默认的是int类型,加double就对了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式