#include
int main()
{
int n,a1,a2,a3,i;
while (scanf("%d", &n)==1 && n!=0){
//这两个放到循环里
a1=1;
a2=2;
if (n==1)a3=1;
else //这里要加else
if(n==2)a3=2;
else {
for(i=1;i<(n-1);i++)
{
a3=a1+a2;
a1=a2;
a2=a3;
}
}
printf("%d\n",a3);
}
return 0;
}
第一个程序是有问题的。当n>3时,for循环中a1和a2是上一次计算的值,你应该在for循环前对a1和a2初始化,即
else {
a1=1; //添加这两条语句就可以了
a2=2;
for(i=1;i<(n-1);i++)
{
a3=a1+a2;
a1=a2;
a2=a3;
}}
5种