北京理工大学乐学C语言编程参考答案及解析下(51-78题).docx

北京理工大学乐学C语言编程参考答案及解析下(51-78题).docx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

北京理工大学乐学C语言编程参考答案下(51-70题)

第八周51-55题

51.小蜜蜂

一只小蜜蜂在如下所示的蜂窝上爬行。它爬行时,只能从一个格爬到相邻的大号格子中。例如,从1号格子可以爬到2号或者3号格子,从2号则可以爬到3号或者4号格子。

请问从一个格子a爬到一个格子b一共有多少种可行的路线。

输入:

分别是起始点a和终止点b的编号。(a和b在1~100之间,且ab。)

输出:

方案数量。

解析//斐波那契数列的递推应用

参考代码:

#includestdio.h

#includestring.h

intmain()

{

intm,n,o,i,j;

scanf(%d%d,m,n);

o=n-m;//o为走的步数

inta[110][100]={0};

a[1][0]=1;//从一个格子走到一个相邻的格子的方法数

a[2][0]=2;//一个格子走到隔一个格子的方法数

//递归,因为数据太大所以采用类似44题高精度加减法的进位,低位在前,高位在后

//a[m]=a[m-1]+a[m-2]

for(m=3;m=o;m++)

{

for(n=0;n100;n++)

{

if(a[m][n]+a[m-1][n]+a[m-2][n]=10)

{

a[m][n]=a[m][n]+a[m-1][n]+a[m-2][n]-10;

a[m][n+1]++;

}

elsea[m][n]=a[m][n]+a[m-1][n]+a[m-2][n];

}

}

//寻找最高位

for(i=99;i=0;i--)

{

if(a[o][i]!=0)

{

j=i;break;

}

}

//倒序输出

for(i=j;i=0;i--)

{

printf(%d,a[o][i]);

}

printf(\n);

return0;

}

52.铺地板

输入:

????方阵N的大小。

输出

方阵。

解析//打印蛇形方阵的具体应用

参考代码:

#includestdio.h

intmain()

{

intn,i=0,j=0,count=0;

intnum[100][100];

scanf(%d,n);

num[i][j]=++count;

//右→左下→下→右上→

while(countn*n)

{

if(jn-1)j++;//j++右i++下

elsei++;

num[i][j]=++count;

while(in-1j0)//左下

{

i++;j--;

num[i][j]=++count;

}

if(in-1)i++;//j++右i++下

elsej++;

num[i][j]=++count;

while(i0jn-1)//右上

{

i--;j++;

num[i][j]=++count;

}

}

for(i=0;in;i++)

{

for(j=0;jn;j++)

{

if(j!=n-1)printf(%2d,num[i][j]);

if(j==n-1)printf(%2d,num[i][j]);

}

printf(\n);

}

return0;

}

53.回文字符串——递归

有一种特殊形式的字符串

文档评论(0)

Clomitius Swan + 关注
实名认证
内容提供者

愿海风与你同在,即便在没有我的地方

1亿VIP精品文档

相关文档