怎么用C语言中for循环输出数列:1,1,2,3,5,8..的前n个数

如题所述

#include<stdio.h>

void main()
{
long int f1, f2; /*定义为长整型,后面的数很大,整型容纳不下*/
int i, n;
f1=1;f2=1;
printf("input n: ");
scanf("%d",&n);
for (i=1; i<=n; i++)
{
printf("%12ld %12ld",f1,f2);
if (i%2==0)
printf("\n"); /*控制换行(每4列换一行)*/
f1=f1+f2;
f2=f2+f1; /*f1,f2交替使用*/
}
}
//这是fibonacci数列,在c语言书上有介绍的
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-08
/*这个函数递增很快,输入的num不要太大,23以下就好*/
#include"stdio.h"

fun(int n)
{
int x=0;
if(n==1||n==2)
{
x=1;
return x ;
}
x=fun(n-1)+fun(n-2);
return x;

}
/*递归调用*/
main()
{
long i=0,n=0,middle=0;
printf("input num:");
scanf("%ld",&n);
for(i=0;i<n;i++)
{
middle=fun(i+1);
printf("%d\t",middle);
if((i+1)%8==0)
{
printf("\n");
}
}

getch();

}
第2个回答  2010-08-08
#include <stdio.h>
#define N 8
void main()
{
int a[N]={0,1};
int i;
for(i=1;i<=6;++i)
a[i+1]=a[i]+a[i-1];

for(i=0;i<8;++i)
printf("%d\t",a[i]);

}
第3个回答  2010-08-08
输出嘛,那就不用存储了。
#include "stdio.h"
void main()
{
long f1=1,f2=1;
int i,n;
printf("Input number n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("%ld %ld ",f1,f2);
f1=f1+f2;
f2=f1+f2;
}
}
第4个回答  2010-08-08
一楼的算法没有问题.但程序并不完美.比如n应由外部输入,并判断合法性.节省存储空间,结果直接输出.
相似回答