首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。 【说明】 Fibonacci数列A={1,1,2,2,5,8,…)有如下性质: a0=a1=1 ai=ai-1+ai-2,i>1 对于给定的n,另外有一个由n个
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。 【说明】 Fibonacci数列A={1,1,2,2,5,8,…)有如下性质: a0=a1=1 ai=ai-1+ai-2,i>1 对于给定的n,另外有一个由n个
admin
2010-01-15
54
问题
阅读以下说明和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);
}
选项
答案
(1)s*v>=t*u (2)q->n=v; (3)(q+1)->m=s; (4)c=a+b; (5)sort(n,x);
解析
本题考查在C语言中实现对数列的排序。
题目要求我们对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn,程序中函数make()用来生成排序前的xn,而使用函数sort()进行排序。在生成排序前的xn以前,我们应该仔细理解题目中给出的生成规则。
首先,我们来看函数sort(),此函数的功能是排序。在函数体中我们可以看到它是用双重循环来实现对数列元素排序的,从整个函数我们可以分析出它排序的方法是从数列中找出一个最大的数存放到数列的最后面,在下次循环时,再从剩下的部分找出其最大的数存放到剩下部分的最后面,这样直到整个数列排好序。
第(1)空是一个条件判断语句的条件,在第二重循环下面,根据上面的分析,该循环的作用是在数列中找出最大的数,那么,这个条件判断语句应该是判断相临两个数的大小,再结合程序中的内容,此空的答案应该是s*v>=t*u。
第(2)空和第(3)空是条件判断语句结果为真的情况下执行的语句,如果条件为真,则说明前面的数要大于后面的数。而根据上面的分析,要将较大:的数放到后面位置,以方便下次和再后面的数比较,因此,这两个空的作用是要实现对两个数位置的交换,答案应该分别为q->n=v和(q+1)->m=s。
接着,我们来看函数make(),它的功能是用来生成排序前的xn,在生成数列时,我们应该注意Fibonacci数列的性质,它的每一项等于前两项的和。在函数体中,我们可以发现第一个循环体就是用来生成排序前的zn的。第(4)空就在循环体内,我们仔细看代码,就可以发现变量c没有初值,但后面又把变量c的值赋给了变量b,因此,第(4)空应该是给变量c赋初值,但应该给它一个什么样的初值呢?结合Fibonacci数列的性质 ai=ai-1+ai-2,我们很容易知道变量c存放的就是ai的值。因此,此空答案为c=a+b。
第(5)空是在循环体下面,上面我们已经说到,循环体生成了排序前的xn,根据题目的要求,应该要调用函数sort()进行排序了,因此,此空答案为sort(n,x)。
转载请注明原文地址:https://kaotiyun.com/show/UBjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
为在Excel2010的A1单元格中生成一个60到100之间的随机数,则应在A1单元格中输入________________。
Windows7系统运行时,用户用鼠标右击某个对象经常会弹出________________。
在收集、整理、存储大数据时,删除重复数据的作用不包括________________。
数据分析报告的编写原则中不包括(70)。
___________接口是目前微机上最流行的I/O接口,具有支持热插拔、连接灵活、独立供电等优点,可以连接常见的鼠标、键盘、打印机、扫描仪、摄像头、充电器、闪存盘、MP3机、手机、数码相机、移动硬盘、外置光驱、Modem等几乎所有的外部设备。
图文混排是Word的特色功能之一,下列叙述中,不正确的是(46)。
在Excel2007中,若在单元格A1中输入函数“=MID(“RUANKAO”,1,4)”,按回车键后,则A1单元格中的值为()。
某机构准备发布中国互联网发展年度报告。报告分四个方面:全网概况、访问特征、渠道分析和行业视角。用户24小时上网时间分布应属于()方面的内容。
在Excel2007的A1单元格中输入函数“=LEFT(“CHINA”,1)”,按回车键后,则A1单元格中的值为()。
计算机在接通电源后,系统首先由(41)程序对内部每个设备进行测试。
随机试题
A.公孙、内关B.列缺、照海C.足临泣、外关D.后溪、申脉肺系、咽喉、胸膈疾病,应首选的八脉交会穴是
A.12sB.12.5sC.41sD.13sE.11s在实践中常用来检出系统误差的是
患者女,乳腺癌。手术放化疗综合治疗3年后,主诉腰背部疼痛不适2个月余,且因为疼痛夜间睡眠较差,但X线平片腰椎检查没有异常发现。为尽早判断有无骨转移,应该再进行
A.近缺牙区的倒凹区小,非倒凹区大,而远缺牙区的倒凹区大,非倒凹区小B.近缺牙区的倒凹区大,非倒凹区小C.倒凹区与非倒凹区均大D.倒凹区均大,非倒凹区均小E.倒凹区均小,非倒凹区均大Ⅱ型观测线
案情:段锋(1981年3月出生)于1997年8月与李琳(1980年出生)相识。建立恋爱关系后不到两个月,两人即在段锋的工厂单身宿舍同居。同居后,两人常因琐事争吵。1997年11月14日晚,李与段又发生争吵。段欲外出躲避,被李拉住不放。二人争吵时,住隔壁的
《建筑地基基础设计规范》(GB50007—2002)中规定了岩石地基承载力特征值的确定方法。()是不符合规范规定的。
甲公司2015年年末库存乙材料的账面余额为1500万元,年末计提存货跌价准备前账面价值为1400万元,库存乙材料将全部用于生产丙产品,预计丙产品的市场价格总额为1650万元,预计生产丙产品还需发生除乙材料以外的加工成本为450万元,预计为销售丙产品发生的相
现今,历史学与文学的分工日益清晰:当前者精确地提供某一个历史时期的经济数据或者翔实陈述一个历史事件的___________时,文学正在___________地想象一条街道,一幅肖像,或者一批人物之间的恩怨情仇。填入画横线部分最恰当的一项是:
论述新石器时代及其文化类型。
Readthenewreportbelow.ChoosethecorrectwordtofilleachgapfromA,BorC.Foreachquestion(29-40),markoneletter(A,
最新回复
(
0
)