递推法.docx

上传人:b****5 文档编号:11624257 上传时间:2023-03-29 格式:DOCX 页数:22 大小:19.99KB
下载 相关 举报
递推法.docx_第1页
第1页 / 共22页
递推法.docx_第2页
第2页 / 共22页
递推法.docx_第3页
第3页 / 共22页
递推法.docx_第4页
第4页 / 共22页
递推法.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

递推法.docx

《递推法.docx》由会员分享,可在线阅读,更多相关《递推法.docx(22页珍藏版)》请在冰豆网上搜索。

递推法.docx

递推法

第1题(10.0分)题号:

431

功能:

计算圆周率的近似值。

#include

#include

main()

{

ints;

/***********SPACE***********/

floatn,【?

】;

doublet;

t=1;pi=0;n=1;s=1;

/***********SPACE***********/

while(【?

】>=2e-6)

{

pi+=t;n+=2;s=-s;t=s/n;

}

/***********SPACE***********/

pi*=【?

】;

printf("pi=%.6f\n",pi);

}

答案:

1).pi

2).fabs(t)

3).4

第30题(10.0分)题号:

447

功能:

已知一个数列,它的头两项分别是0和1,从第三项开始以

后的每项都是其前两项之和。

编程打印此数,直到某项的

值超过200为止。

main()

{

inti,f1=0,f2=1;

/***********SPACE***********/

for(【?

】;;i++)

{

printf("5%d",f1);

/***********SPACE***********/

if(f1>【?

】)break;

printf("5%d",f2);

if(f2>200)break;

if(i%2==0)printf("\n");

f1+=f2;

/***********SPACE***********/

f2+=【?

】;

}

printf("\n");

}

答案:

1).i=1

2).200

3).f1

 

第77题(10.0分)题号:

439

功能:

1982年我国第三次人口普查,结果全国人口为10.3亿,假

如人口增长率为5%。

编写一个程序求在公元多少年总人口

翻了一番。

#include

voidmain()

{

doublep1=10.3,p2,r=0.05;

intn=1;

/***********SPACE***********/

p2=p1*【?

】;

/***********SPACE***********/

while(p2<=【?

】)

{

n++;

/***********SPACE***********/

p2=p2*【?

】;

}

/***********SPACE***********/

n=【?

】;

printf("%d年人口总数翻了一番,即为%g亿人\n",n,p2);

}

答案:

1).(1+r)或(r+1)

2).2*p1或p1*2

3).(1+r)或(r+1)

4).n+1982或1982+n

 

第91题(10.0分)题号:

9

功能:

以下程序的功能如(图1)。

 

#include

main()

{

intf;

/***********SPACE***********/

【?

】;

floatt,pi;

t=1;pi=t;f=1;n=1.0;

/***********SPACE***********/

while(【?

】)

{

n=n+2;

/***********SPACE***********/

【?

】;

t=f/n;

pi=pi+t;

}

/***********SPACE***********/

【?

】;

printf("pi=%10.6f\n",pi);

}

答案:

1).floatn或duoblen

2).fabs(t)>=1e-6或fabs(t)>=0.000001或1e-6<=fabs(t)或0.000001<=fabs(t)

3).f=-f或f=-1*f或f=f*(-1)或f=f*-1或f=(-1)*f

4).pi=pi*4或pi*=4

 

第101题(10.0分)题号:

479

功能:

十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二

个小孩2块,第三个小孩8块,第四个小孩22块,第五个

小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩

6块,第九个小孩14块,第十个小孩20块。

然后所有的小孩

同时将自己手中的糖分一半给左边的小孩;糖块数为奇数的人

可向老师要一块。

问经过这样几次调整后大家手中的糖的块数

都一样?

每人各有多少块糖?

main()

{

inti,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20};

/***********SPACE***********/

while(【?

】)

{

for(i=1;i<=10;i++)

a[i-1]=a[i-1]/2+a[i]/2;

a[10]=a[10]/2+a[0];

for(i=1;i<=10;i++)

/***********SPACE***********/

if(【?

】)a[i]++;

for(i=1;i<10;i++)

/***********SPACE***********/

if(a[i]!

=a[i+1])【?

】;

if(i==10)

break;

else

{

a[0]=0;

count++;

}

}

printf("count=%dnumber=%d\n",count,a[1]);

}

答案:

1).1

2).a[i]%2==1

3).break

第125题(10.0分)题号:

411

功能:

有n个人围成一圈,顺序排号。

从第一个人开始报数(从1

到3报数),凡报到3的人退出圈子,问最后留下的是原来

第几号的那位。

#definenmax50

main()

{

inti,k,m,n,num[nmax],*p;

printf("pleaseinputthetotalofnumbers:

");

scanf("%d",&n);

p=num;

/***********SPACE***********/

for(i=0;【?

】;i++)

/***********SPACE***********/

*(p+i)=【?

】;

i=0;

k=0;

m=0;

while(m

{

/***********SPACE***********/

if(【?

】!

=0)k++;

if(k==3)

{

*(p+i)=0;

k=0;

m++;

}

i++;

if(i==n)i=0;

}

/***********SPACE***********/

while(【?

】)p++;

printf("%disleft\n",*p);

}

答案:

1).ii

2).i+1或i+1

3).*(p+i)或*(p+i)

4).*p==0或*p==0

 

第128题(10.0分)题号:

480

功能:

输出Fibonacci数列的前15项,要求每行输出5项。

Fibonacci数列:

1,1,2,3,5,8,13...........

#include

main()

{

/***********SPACE***********/

int【?

】[14],i;

fib[0]=1;fib[1]=1;

for(i=2;i<15;i++)

/***********SPACE***********/

fib[i]=【?

】;

for(i=0;i<15;i++)

{

printf("%d\t",fib[i]);

/***********SPACE***********/

if(【?

】)printf("\n");

}

}

答案:

1).fib

2).fib[i-2]+fib[i-1]或fib[i-2]+fib[i-1]

3).i%5==4

 

第48题(10.0分)题号:

425

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

有n个人围成一圈,顺序排号。

从第一个人开始报数(从1

到3报数),凡报到3的人退出圈子,问最后留下的是原来

第几号的那位。

------------------------------------------------------*/

#include"stdio.h"

#definenmax50

main()

{

inti,k,m,n,num[nmax],*p;

printf("pleaseinputthetotalofnumbers:

");

scanf("%d",&n);

/**********FOUND**********/

p==num;

for(i=0;i

*(p+i)=i+1;

i=0;

k=0;

m=0;

/**********FOUND**********/

while(m>n-1)

{

if(*(p+i)!

=0)k++;

/**********FOUND**********/

if(k!

=3)

{

*(p+i)=0;

k=0;

m++;

}

i++;

if(i==n)i=0;

}

while(*p==0)p++;

printf("%disleft\n",*p);

getch();

}

答案:

1).p=num;

2).while(m

3).if(k==3)

 

第50题(10.0分)题号:

20

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

已知一个数列从第0项开始的前三项分别为0、0、1,以

后的各项都是其相邻的前三项的和。

下列给定程序中,

函数fun的功能是:

计算并输出该数列的前n项的平方根

之和sum,n的值通过形参传入。

例如:

当n=10时,程序的输出结果应为23.197745。

------------------------------------------------------*/

#include

/**********FOUND**********/

fun(intn)

{

doublesum,s0,s1,s2,s;

intk;

/**********FOUND**********/

sum=0.0;

if(n<=2)sum=0.0;

s0=0.0;

s1=0.0;

/**********FOUND**********/

s2=0.0;

/**********FOUND**********/

for(k=4;k>n;k++)

{

s=s0+s1+s2;

sum+=sqrt(s);

s0=s1;s1=s2;s2=s;

}

returnsum;

}

main()

{

intn;

scanf("%d",&n);

printf("%lf\n",fun(n));

}

答案:

1).doublefun(intn)

2).sum=1.0;或sum=1;

3).s2=1.0;或s2=1;

4).for(k=4;k<=n;k++)或for(k=4;n>=k;k++)或for(k=4;kk;k++)或for(k=4;1+n>k;k++)

 

第54题(10.0分)题号:

376

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

根据整型形参n,计算某一数据项的值。

A[1]=1,A[2]=1/(1+A[1]),A[3]=1/(1+A[2]),…,

A[n]=1/(1+A[n-1])

例如:

若n=10,则应输出:

a10=0.617977。

------------------------------------------------------*/

#include

#include

/**********FOUND**********/

intfun(intn)

{

floatA=1;inti;

/**********FOUND**********/

for(i=2;i

/**********FOUND**********/

A=1.0\(1+A);

returnA;

}

main()

{

intn;

clrscr();

printf("\nPleaseentern:

");

scanf("%d",&n);

printf("A%d=%f\n",n,fun(n));

}

答案:

1).floatfun(intn)

2).for(i=2;i<=n;i++)

3).A=1.0/(1+A);

 

第100题(10.0分)题号:

420

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

有5个人坐在一起,问第五个人多少岁?

他说比第4个人

大2岁。

问第4个人岁数,他说比第3个人大2岁。

问第三

个人,又说比第2人大两岁。

问第2个人,说比第一个人

大两岁。

最后问第一个人,他说是10岁。

请问第五个人

多大?

------------------------------------------------------*/

#include"stdio.h"

age(n)

intn;

{

intc;

/**********FOUND**********/

if(n=1)

c=10;

else

/***********FOUND***********/

c=age(n)+2;

return(c);

}

main()

{

/**********FOUND**********/

printf("%d",age5);

}

 

答案:

1).if(n==1)

2).c=age(n-1)+2;

3).printf("%d",age(5));

第124题(10.0分)题号:

414

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

一球从100米高度自由落下,每次落地后反跳回原高度的

一半;再落下,求它在第10次落地时,共经过多少米?

第10次反弹多高?

------------------------------------------------------*/

#include"stdio.h"

main()

{

/**********FOUND**********/

floatsn=100.0;hn=sn/2;

intn;

/**********FOUND**********/

for(n=2;n<10;n++)

{

sn=sn+2*hn;

/**********FOUND**********/

hn=hn%2;

}

printf("thetotalofroadis%f\n",sn);

printf("thetenthis%fmeter\n",hn);

}

答案:

1).floatsn=100.0,hn=sn/2;

2).for(n=2;n<=10;n++)或for(n=2;n<11;n++)

3).hn=hn/2;

 

第126题(10.0分)题号:

415

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

猴子吃桃问题:

猴子第一天摘下若干个桃子,当即吃了一半,

还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉

一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一

半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

------------------------------------------------------*/

#include"stdio.h"

main()

{

intday,x1,x2;

day=9;

/**********FOUND**********/

x2==1;

while(day>0)

{

/**********FOUND**********/

x1=(x2+1)/2;

x2=x1;

/**********FOUND**********/

day++;

}

printf("thetotalis%d\n",x1);

}

答案:

1).x2=1;

2).x1=(x2+1)*2;

3).day--;或day-=1;或day=day-1;

 

第131题(10.0分)题号:

377

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

求广义菲玻那契级数的第n项。

广义菲玻那契级数的前n

项为:

1,1,1,3,5,9,17,31,……

项值通过函数值返回main()函数。

例如:

若n=15,则应输出:

Thevalueis:

2209。

------------------------------------------------------*/

#include

#include

longfun(intn)

{

longa=1,b=1,c=1,d=1,k;

/**********FOUND**********/

for(k=4;k

{

d=a+b+c;

/**********FOUND**********/

a=b

b=c;

c=d;

}

/**********FOUND**********/

returnk;

}

main()

{

intn=15;

clrscr();

printf("Thevalueis:

%ld\n",fun(n));

}

 

答案:

1).for(k=4;k<=n;k++)

2).a=b;

3).returnd;

第137题(10.0分)题号:

15

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

输出Fabonacci数列的前20项,要求变量类型定义成浮点型,

输出时只输出整数部分,输出项数不得多于或少于20。

------------------------------------------------------*/

fun()

{

inti;

floatf1=1,f2=1,f3;

/**********FOUND**********/

printf("%8d",f1);

/**********FOUND**********/

for(i=1;i<=20;i++)

{

f3=f1+f2;

/**********FOUND**********/

f2=f1;

/**********FOUND**********/

f3=f2;

printf("%8.0f",f1);

}

printf("\n");

}

main()

{

fun();

}

答案:

1).printf("%8.0f",f1);或printf("%f",f1);或printf("%8f",f1);

2).for(i=1;i<20;i++)或for(i=1;20>i;i++)或for(i=2;i<=20;i++)或for(i=2;20>=i;i++)或for(i=1;i<=19;i++)或for(i=1;19>=i;i++)

3).f1=f2;

4).f2=f3;

 

━━━━━━━━━━━━━━━━━━

一、程序设计共116题(共计1160分)

━━━━━━━━━━━━━━━━━━

第2题(10.0分)题号:

401

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:

编写main程序调用函数fact求解从m个元素选n个元

素的组合数的个数。

计算公式是:

组合数=m!

/(n!

.(m-n)!

)。

要求:

m不能小于n,否则

应有容

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1