啊哈磊_编程从这里起步

标题: 众高手,初级循环题目,求助啊 [打印本页]

作者: LXY    时间: 2014-5-18 21:58
标题: 众高手,初级循环题目,求助啊
求分数序列2/1,3/2,5/3,8/5,13/8,21/13…..20项之和
解题如下:
情形1:输出函数在for内循环之外
#include<stdio.h>
int main()
{
int fz=2,fm=1,i,t;
float s=0;
for(i=1;i<=20;i++)
{s=s+fz/fm;
t=fz;
fz+=fm;
fm=t;}
printf("s=%-10.2f",s);return 0;
}
执行结果:file:///C:/Users/hj/AppData/Local/Temp/msohtml1/01/clip_image002.jpgs=21.00
情形2:输出函数在FOR内循环之内fz+=fm;
fm=t;
printf("s=%-10.2f",s); }return 0;
执行结果:
file:///C:/Users/hj/AppData/Local/Temp/msohtml1/01/clip_image004.jpg
以上错解?原因?
求正解????谢谢啦

作者: 李掌柜    时间: 2014-5-19 09:44
情形2. 20个s都等于0.00
作者: lexou    时间: 2014-5-20 14:10
int 改为float定义
作者: LXY    时间: 2014-5-21 22:10
李掌柜 发表于 2014-5-19 09:44
情形2. 20个s都等于0.00

高手  能帮忙改一下  或是给一个正确的程序
作者: LXY    时间: 2014-5-21 22:10
lexou 发表于 2014-5-20 14:10
int 改为float定义

高手  能帮忙改一下  或是给一个正确的程序
作者: 绝处逢生    时间: 2014-6-11 18:40
我不怎么会懂,但是我知道百度有
作者: 绝处逢生    时间: 2014-6-11 19:21
}要上下对齐 ,你没有system("pause");
作者: CL0419    时间: 2014-6-16 22:19
完整代码如下,请参考:
#include<stdio.h>

int main(void)
{
        int fz = 2;
        int fm = 1;
        int i;
        int t;
        double s = 0;
        for(i=1; i<=20; i++)
        {
                //s=s+fz/fm;        //这样可以,但是效率低
                s += 1.0*fz/fm;        //1.0是为了把fz/fm转换成实数
                t = fz;
                fz += fm;
                fm = t;
        }
        printf("s=%-10.2f",s);

        return 0;
}

作者: LeoGuozichuan    时间: 2014-7-8 10:21
为毛没缩进




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2