用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? 展开
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? 展开
1个回答
展开全部
最主要原因是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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询