c语言高手进入

2025-03-01 15:35:13
推荐回答(4个)
回答1:

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;jt=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");
}
}

回答2:

第一个有几种方法:一直接按照公式进行计算f(n)是有公式的,可以在数学上面查到,二是直接用数组按照定义进行模拟其生成过程

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

不知道你C语言是什么样的状况

回答3:

公式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;
}
}

回答4:

第一
#include
main()
{
int fn;
int f[1000];
f[0]=f[1]=1;
f[2]=2;
cin>>fn>>endl;
if(fn<=2)
{
cout<<"f"<}
else
{
if(fn==3)
{
cout<<"f"<}
else
{
for(int i=2;i{
f[i]=f[i-1]+f[i-2];
}
cout<}
}
}