c语言高手进入

1、编写一个求菲波那奇数列中第n项fn的函数。已知:f1=1,f2=1,fn = fn-1 + fn-2(n≥3)。
2、编写一个C程序,将一个3×3的整数矩阵转置。

int fn(int n){
if (n==1 or n==2) return 1;
else return fn(n-1)+fn(n-2);
}
void main(){
int n;
scanf("%d",&n);
printf("the nth number is %d\n",fn(n));
}

2
void main(){
int a[3][3],t;
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
scanf("%d",&a[i][j]);
for (i=0;i<3;i++)
for (j=0;j<i;j++){
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
for (i=0;i<3;i++){
for (j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}

参考资料:http://zhidao.baidu.com/question/59814962.html

温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-07-10
第一个有几种方法:一直接按照公式进行计算f(n)是有公式的,可以在数学上面查到,二是直接用数组按照定义进行模拟其生成过程

第二个,按照转置的定义直接编就行,直接进行数的交换

不知道你C语言是什么样的状况
第2个回答  2008-07-10
公式f(n)=(((1+sqrt(5))/2)^n-((1-sqrt(5))/2)^n)/sqrt(5)
一般就按楼上的同学就可以了,递归有一点儿慢和费空间,改为一个循环好一点,

elenint phop(elemInt n)
{
elemInt f0,f1,fn;

f0=0;
f1=1;
if(n==0||n==1)return n;
else{
n=n-1;
while(n--)
{
fn=f0+f1;
f0=f1;
f1=fn;
}
return fn;
}
}
第3个回答  2008-07-10
第一
#include<iostream.h>
main()
{
int fn;
int f[1000];
f[0]=f[1]=1;
f[2]=2;
cin>>fn>>endl;
if(fn<=2)
{
cout<<"f"<<fn<<"=1";
}
else
{
if(fn==3)
{
cout<<"f"<<fn<<"=2";
}
else
{
for(int i=2;i<fn;i++)
{
f[i]=f[i-1]+f[i-2];
}
cout<<f[fn];
}
}
}
相似回答