用c语言求Fibonacci数列前30个,求这个程序哪里错了?

#include<stdio.h>intmain(){inti;longf1=1,f2=1,f3;for(i=1;i<=30;i++);{printf("%d",f3);... #include <stdio.h>
int main()
{
int i;
long f1=1,f2=1,f3;
for(i=1; i<=30;i++);
{
printf("%d",f3);
f1=f2;
f2=f3;
f3=f1+f2;
if (i%6==0)
printf("\n");
}
return 0;
}
为什么输出是0?
展开
 我来答
xgn911
2022-11-02 · TA获得超过1364个赞
知道小有建树答主
回答量:1493
采纳率:96%
帮助的人:652万
展开全部

最主要原因是for语句后面不应加分号,由于有分号其后面{}中的语句就不属于for了

还有一些其他细节需要修改:比如f3应先计算再输出,因为没有给f3赋初值;

因为是从f3开始输出的,应该先输出f1和f2,再执行for循环,然后i从3开始

对于long整型数输出最好用"%ld",为了美观可以用"%6ld"使输出位宽一致

修改后的代码和运行结果如下:

可见正确输出了Fibonacci数列的前30个数,望采纳~

附源码:

#include <stdio.h>

int main() {

    int i;

    long f1 = 1, f2 = 1, f3;

    printf("%6ld %6ld ", f1, f2); // 先输出前两项

    for (i = 3; i <= 30; i++) // 这里没有分号

    {

        f3 = f1 + f2; // 计算并输出第三项

        printf("%6ld ", f3);

        f1 = f2;

        f2 = f3;

        if (i % 6 == 0)

            printf("\n");

    }

    return 0;

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式