c语言的问题 各位高手帮我找找错误被,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/11 14:06:02
long int Fib(int n)
{
long int f1,f2;
f1=f2=1;
for(i=1;2i<n;i++)
{
f1=f1+f2;
f2=f1+f2;
}
if(n%2!=0) return(f1);
else return(f2);
}
main()
{
for(n=1;n<=20;n++)
printf("%5d",Fib(n));
}

long int Fib(int n)
{
long int f1,f2;
f1=f2=1;
for(i=1;2i<n;i++) //i得先声明,2i不是变量
{
f1=f1+f2;
f2=f1+f2;
}
if(n%2!=0) return(f1);
else return(f2);
}
main()
{
for(n=1;n<=20;n++) //n得先声明
printf("%5d",Fib(n));
}

正确的写法应该是:
long int Fib(int n)
{
long int f1,f2;
f1=f2=1;
int i;//----<加上
for(i=1;i<n;i++)//去掉笔误2 或者为:2*i
{
f1=f1+f2;
f2=f1+f2;
}
if(n%2!=0) return(f1);
else return(f2);
}
main()
{
int n;//----<加上
for(n=1;n<=20;n++)
printf("%5d\n",Fib(n));//最好加上回车,否则数值连在一起看不清
}

for(i=1;2i<n;i++)
i没声明过;
2i要写成2*i;