阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。【说明】Fibonacci数列A={1,1,2,2,5,8,…)有如下性质:a0=a1=1ai=ai-1+ai-2,i>1对于给定的n,另外有一个由n个元素组成的数列xn,该数列中各元素的值为:xi=ai/ai+1,i=0,1,…,n现要求对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn。例如n=5时,排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函数make()首先生成排序前的xn,然后调用函数sort()进行排序,最后输出所求结果。【程序】include <stdio.h>include <stdlib.h>include <malloc.h>struct fact{long m,n;};void sort(int n,struct fact *p){int a;long s,t,u,v;struct fact *q,*end;for(end=p+(n-1),a=1;a;end--)for(a=0,q=p;q<end;p++){s=q->m;t=q->n;u=(q+1)->m;v=(q+1)->n;if( (1) ){q->m=u;(2)(3)(q+1)->n=t;a=1;}}}void make(int n){int i;long a,b,c;struct fact *x,*y;x=(struct fact *)malloc(sizeof(struct fact)*n);x->m=1:x->n=1;for(a=1,b=1,i=2;i<=n;i++){(4)a=b;b=c;(x+(i-1))->m=a;(x+(i-1))->n=b;}(5)printf("x%d={%1d/%1d",n,x->m,x->n);for(y=x+1;y<x+n;y++)printf(",%1d/%1d",y->m,y->n);printf("}\n");free(x);}void main(){int n;printf("input n:");scanf("%d",n);make(n);}
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。
【说明】
Fibonacci数列A={1,1,2,2,5,8,…)有如下性质:
a0=a1=1
ai=ai-1+ai-2,i>1
对于给定的n,另外有一个由n个元素组成的数列xn,该数列中各元素的值为:
xi=ai/ai+1,i=0,1,…,n
现要求对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn。例如n=5时,排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函数make()首先生成排序前的xn,然后调用函数sort()进行排序,最后输出所求结果。
【程序】
include <stdio.h>
include <stdlib.h>
include <malloc.h>
struct fact
{
long m,n;
};
void sort(int n,struct fact *p)
{
int a;
long s,t,u,v;
struct fact *q,*end;
for(end=p+(n-1),a=1;a;end--)
for(a=0,q=p;q<end;p++)
{
s=q->m;
t=q->n;
u=(q+1)->m;
v=(q+1)->n;
if( (1) )
{
q->m=u;
(2)
(3)
(q+1)->n=t;
a=1;
}
}
}
void make(int n)
{
int i;
long a,b,c;
struct fact *x,*y;
x=(struct fact *)malloc(sizeof(struct fact)*n);
x->m=1:
x->n=1;
for(a=1,b=1,i=2;i<=n;i++)
{
(4)
a=b;
b=c;
(x+(i-1))->m=a;
(x+(i-1))->n=b;
}
(5)
printf("x%d={%1d/%1d",n,x->m,x->n);
for(y=x+1;y<x+n;y++)
printf(",%1d/%1d",y->m,y->n);
printf("}\n");
free(x);
}
void main()
{
int n;
printf("input n:");
scanf("%d",&n);
make(n);
}