作者在 2011-08-17 16:46:30 发布以下内容
/*
时间:2011年8月17日16:44:54
功能:键盘输入一个自然数n,输出斐波拉契数列第n项的值
目的:练习while循环的用法
注释:斐波拉契数列指的是这样一个数列:1、1、2、3、5、8、13、21、…… 通项公式为F(0) = 0,F(1)=1,F(n)=F(n-1)+F(n-2) (n≥2),
*/
# include <stdio.h>
int main(void)
{
int f0 = 0;
int f1 = 1;
int f2;
int n;
int m;
printf("请任意输入一个自然数,按回车结束\n");
scanf("%d",&n);
m = n;
if (n==1)
printf("斐波拉契数列第1项的值 = %d\n",f1);
else
{
while (n>=2)
{
f2 = f0 + f1;
f0 = f1;
f1 = f2;
--n;
}
printf("斐波拉契数列第%d项的值 = %d\n", m,f2);
}
return 0;
}
/*
分别输入1和6
在VC++6.0中的输出结果为:
————————————
请任意输入一个自然数,按回车结束
1
斐波拉契数列第1项的值 = 1
Press any key to continue
请任意输入一个自然数,按回车结束
6
斐波拉契数列第6项的值 = 8
Press any key to continue
————————————
程序执行流程
提示输入一个自然数
输入6,n=6
m=6
判断 6==1为假,选择执行else下的语句
判断 6>=2为真,开始循环
1) f2 = 0+1 = 1
f0 = 1
f1 = 1
n = 6-1 = 5
判断5>=2为真,继续循环
2) f2 = 1+1 = 2
f0 = 1
f1 = 2
n = 5-1 = 4
判断4>=2为真,继续循环
3) f2 = 1+2 = 3
f0 = 2
f1 = 3
n = 4-1 = 3
判断3>=2为真,继续循环
4) f2 = 2+3 = 5
f0 = 3
f1 = 5
n = 3-1 = 2
判断2>=2为真,继续循环
5) f2 = 3+5 = 8
f0 = 5
f1 = 8
n = 2-1 =1
判断1>=2为假,循环结束
输出斐波拉契数列第6项的值 = 8(此时m=6,f2=8)
*/
时间:2011年8月17日16:44:54
功能:键盘输入一个自然数n,输出斐波拉契数列第n项的值
目的:练习while循环的用法
注释:斐波拉契数列指的是这样一个数列:1、1、2、3、5、8、13、21、…… 通项公式为F(0) = 0,F(1)=1,F(n)=F(n-1)+F(n-2) (n≥2),
*/
# include <stdio.h>
int main(void)
{
int f0 = 0;
int f1 = 1;
int f2;
int n;
int m;
printf("请任意输入一个自然数,按回车结束\n");
scanf("%d",&n);
m = n;
if (n==1)
printf("斐波拉契数列第1项的值 = %d\n",f1);
else
{
while (n>=2)
{
f2 = f0 + f1;
f0 = f1;
f1 = f2;
--n;
}
printf("斐波拉契数列第%d项的值 = %d\n", m,f2);
}
return 0;
}
/*
分别输入1和6
在VC++6.0中的输出结果为:
————————————
请任意输入一个自然数,按回车结束
1
斐波拉契数列第1项的值 = 1
Press any key to continue
请任意输入一个自然数,按回车结束
6
斐波拉契数列第6项的值 = 8
Press any key to continue
————————————
程序执行流程
提示输入一个自然数
输入6,n=6
m=6
判断 6==1为假,选择执行else下的语句
判断 6>=2为真,开始循环
1) f2 = 0+1 = 1
f0 = 1
f1 = 1
n = 6-1 = 5
判断5>=2为真,继续循环
2) f2 = 1+1 = 2
f0 = 1
f1 = 2
n = 5-1 = 4
判断4>=2为真,继续循环
3) f2 = 1+2 = 3
f0 = 2
f1 = 3
n = 4-1 = 3
判断3>=2为真,继续循环
4) f2 = 2+3 = 5
f0 = 3
f1 = 5
n = 3-1 = 2
判断2>=2为真,继续循环
5) f2 = 3+5 = 8
f0 = 5
f1 = 8
n = 2-1 =1
判断1>=2为假,循环结束
输出斐波拉契数列第6项的值 = 8(此时m=6,f2=8)
*/