分类：电脑/网络-程序设计-C/C++
问题：请c语言高手给我讲解一下这个题我在学习c语言的时候，遇到了Fib 
我在学习的时候，遇到了Fibonacci数列编写程序，主要就是这个，我知道题这个数列是怎么回事，但是他编译的我有点看不懂，希望知道的朋友给详细的解释一下main(){long int f1,f2;int i;f1=1;f2=1;for(i=1;i<=20;i++){printf("%12ld  %12ld  ",f1,f2);if(i%2==0)printf("\n");f1=f1+f2;f2=f2+f1;}}还有一个问题，就是用一维数组的知识编译的这个程我在学习的时候，遇到了Fibonacci数列编写程序，主要就是这个，我知道题这个数列是怎么回事，但是他编译的我有点看不懂，希望知道的朋友给详细的解释一下main(){long int f1,f2;int i;f1=1;f2=1;for(i=1;i<=20;i++){printf("%12ld  %12ld  ",f1,f2);if(i%2==0)printf("\n");f1=f1+f2;f2=f2+f1;}}还有一个问题，就是用一维数组的知识编译的这个程序，还是关于Fibonacci数列的，也看不怎么懂，希望高手给解释main(){int i;static int f[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)printf("\n");  printf("%12d",f[i]);}}
回答：先看第一个main()   //主认识吧{     // 这个也可以不解释了吧long int f1,f2;  //定义2个长整形的东西int i;   //定义一个i，拿来做循环用。f1=1;f2=1;   //初始化这2个值for(i=1;i<=20;i++)   //FOR循环开始，现在i是1，每次循环后，i要加1                       一直加到20，也就是说循环20次。 {printf("%12ld %12ld ",f1,f2);//输出2个值，就是刚才定义的2个1if(i%2==0)printf("\n");//当i为双数的时候换行，第一次i是1，就不换了。f1=f1+f2;  //把f1和f2的值给f1，也就是说现在f1是1+1=“2”了。f2=f2+f1;  //把f2和f1的值给f2，注意现在f2是1,而f1已经是“2”了，所以             现在f2+f1=1+2=“3”。 }}所以第1次循环后，现在就输出1 1 2 3。然后就是第2次循环，因为这时候i是2，是双数，所以要换行。以此类推。main(){int i;static int f[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1]; //这个是把前面2个值的和给第3个值。for(i=0;i<20;i++){if(i%5==0)printf("\n");//i为5的时候换一行，也就是每输出5个数字换一行printf("%12d",f[i]);//一个一个把值给我输出来}}