C語言的一題編程題
110
#include<stdio.h>
void main()
{
int i;
int f[5]={1,1};
for(i=2;i<=5;i++)//這個是怎麼循環的
f[i]=f[i-2]+f[i-1];//這是怎麼循環的
for(i=0;i<=5;i++)//這個又是怎麼循環的
{
if(i%5==0)printf("\n");
printf("%12d",f[i]);
}
printf("\n");
}
為啥最後輸出1 1 2 3 5
輸出 1 1 為啥第三個數是2求解
補充:輸出1 1理解為啥輸出第三個數是2
最佳回答:
for(i=2;i<=5;i++)
f[i]=f[i-2]+f[i-1];
這個for循環4次:
1、i=2, f[2]=f[0]+f[1]=2,
2、i=3, f[3]=f[1]+f[2]=3,
3、i=4, f[4]=f[2]+f[3]=5,
4、i=5, f[5]=f[3]+f[4]=8.
這其實就是斐波那契數列。
for(i=0;i<=5;i++)
{
if(i%5==0)printf("\n");
printf("%12d",f[i]);
}
這個for循環6次
首先if(i%5==0)printf("\n");判斷i的值,當i=5時,輸出一個換行符。
然後每次循環printf("%12d",f[i]);輸出相應的數組上的值,也就是數組從0到5的值都輸出了
所以結果當然就是
1 1 2 3 5
8
-
追問:
-
f[5]=f[3]+f[4]=8 3+4等於7呀為啥啥等於8哪
-
回答:
-
f[3]+f[4]不是3+4,而是f[]數組上的第4位加第5位。
前面已經推算出來了,f[3]=f[1]+f[2]=3, f[4]=f[2]+f[3]=5,
所以f[3]+f[4]=3+5=8。
注意這裡的f[]是你數組裡面的元素,[]裡的1、2、3這些只是指數而已,表示第幾位!還有數組是從第0位開始表示,也就是f[0]表示f數組中的第一位數,f[1]表示第二位。