例12:求Fibonacci数列的前40个数,并按一行4个
数排列输出。
1,1,2,3,5,8,13,21 … 考虑问题:
1) 属递推问题:从前一项或几项推出下一项结果;2) 定义两个变量:
f1=f2=1; f1=f1+f2; f2=f2+f1;
由前两项相加求得下一项后第一项可覆盖,即变量的值是不断更迭的(迭代法)。
main()
{longf1,f2,i;f1=f2=1;
for(i=1;i<=20;i++)
{printf(\f1,f2);if(i%2==0)printf(\/*每行4项*/f1=f1+f2;/*一次递推两项*/f2=f2+f1;}
getch();}
例13:输入一个数,输出其因子连乘表达式main( )
{ int n, f, i=2;
printf (“Input an integer n:”);scanf (“%d”, &n); f=n;printf (“%d=1”, n);do { if ( f%i==0)
{ f=f/i; printf ( “*%d”, i ); }else i++;} while( i<=n );printf (“\\n”); }
例14:用字符’*’打印出钻石图案
分析:将上半三角、下半三角分别处理,找出行
数、空格数、星号数之间的关系;
** * ** * * * ** * * * * * ** * * * * * * **
前四行:行空格星号
1 3 1 2 2 33 1 54 0 7
规律:i 4–i i×2–1后三行:1 1 5
2 2 33 3 1
规律:i i 7–i×2