首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。 【说明】 计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为: 5 4 1 3 2 3 1 1 2 2 1
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。 【说明】 计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为: 5 4 1 3 2 3 1 1 2 2 1
admin
2010-01-15
40
问题
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。
【说明】
计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为:
5
4 1
3 2
3 1 1
2 2 1
2 1 1 1
1 1 1 1 1
共有7种划分。这种划分的程序如下所示。
【程序】
#include <stdio.h>
int n[1000],m,k;
void output sum()
{
int j;
for(j=0;n[j]!=0;j++)
printf("%d\t",n[j]);
printf("\n");
}
void sum(int i)
if(m-n
<n
)
{ m=m-n
;
(1)
i++;
n[i+1]=0;
}
else
{
(2)
m-=n
;
i++;
}
if(m!=n
)
sum(i);
else
output_sum();
if(n
>1)
{
n
--;
(3)
}
else
{
while((n
==1)&&(i>O))
{
i--;
(4)
}
if(i!=0)
{
(5)
sum(i);
}
}
}
void main()
{
int i;
scanf("%d",&n[0]);
m=k=n[0];
for(i=1;i<=k;i++)
n
=0;
while(n[0]!=1)
{
n[0]--;
i=0;
sum(0);
m=k;
}
}
选项
答案
(1)n[i+1]=m; (2)n[i+1]=n[i]; (3)sum(i); (4) m+=n[i]; (5)n[i]--;
解析
本题考查C语言中计算n合数方法的实现。
题目要求计算n的合数,我们首先来了解一下什么是n的合数。在正整数n的所有不同的划分中,将最大加数n1不大于m的划分个数记作q(n,m)。可以建立q(n,m)的如下递推关系。
(1)q(n,1)=1,n≥1
当最大数n1不大于1时,任何正整数只有一种划分形式,就是全1。
(2)q(n,m)=q(n,n),m≥n
最大加数n1实际上不能大于n。因此,q(1,m)=1。
(3)q(n,n)=1+q(n,n-1)
正整数n的划分由n1=n的划分和n1≤n-1的划分组成。
(4)q(n,m)=q(n,m-1)+q(n-m,m),n>m>1
正整数n的最大加数n1不大于m的划分由n1=m的划分和n1≤m-1的划分组成。要想求出所有解,只有递归到最底层即全为1为止。
知道了上述特性,下面我们来看代码。在代码中首先声明一个数组和两个全局变量 k,m。结合程序可以看出,其中数组n
中存放的是当前划分的最大加数,而m中存放的是当前被划分的数。程序代码中有三个函数,一个是主函数、一个output_sum()函数和一个sum()函数,函数output_sum()的功能很简单,就是输出一次划分结果,在sum()函数中被调用。
经过分析不难发现,函数sum()的作用是实现整数的划分。在函数体中,首先是一个条件判断语句,其作用是判断当前被划分的数m是否小于当前最大加数的两倍,如果条件成立,说明数被划分为两个数后,其最大加数大于另一个数,而另一个数应该存放在数组中。此时执行语句m=m-n
来求出另一个数,接下来应该是保存这个数到数组中的下个位置,第(1)空就用来完成这个任务,因此,答案为n[i+1]=m。
第(2)空所在的位置是条件不成立的情况下运行的语句,条件不成立,说明数被划分为两个数后,其最大加数小于另一个数,数可以有更大的最大加数,因此,将当前的最大加数保存到数组中的下个位置,此空答案为n[i+1]=n
。
第(3)空也在一个条件选择语句下面,此条件语句用于判断当前最大加数是否大于1,如果大于1,则需要接着划分,因此要调用函数sum(),其参数是i,所以此空答案为sum(i)。
第(4)空是条件不成立即当前最大加数为1的情况下执行的语句,当最大加数为1时,说明递归到了最底层,此时,递归应该往回走了,这需要还原当前最大划分数m(为这个数的其他划分做准备),因此,这个空的答案为m+=n
。
第(5)空是在条件i!=0为真的情况下执行的语句,如果条件为真,说明递归还没有回到最上层,应该求当前被划分数在当前最大加数变小后的其他划分情况,因此,此空答案为n
--。
转载请注明原文地址:https://kaotiyun.com/show/nBjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在收集、整理、存储大数据时,删除重复数据的作用不包括________________。
某年级两个班举行了一次数学统考,一班(共30人)的平均成绩为70分,二班(共 20人)的平均成绩为75分,则该年级的平均成绩为(65)分。
在Word中采用(47)可实现下图显示的排版格式。
关系代数运算是以集合操作为基础的运算,其5种基本运算是并、差、(57)、投影和选择。
下列选项中,准确表达“甲和乙不可能都参加考试”含义的是(35)。
认真阅读下列说明,根据网页显示的效果图,并解释其中用下划线标出的语句的含义。[说明]某在线娱乐公司用ASP实现了一个用于在线点播电影的网页,主页文件名为“index.asp”,网页运行的效果如下图所示。程序中使用的Acess数据表结构如下
ASP是(1)网页制作技术。A.动态B.静态假设连接的数据记录集当前指向的记录如下:写出以下ASP代码经过IIS服务器解释后的结果。<ahref="<%=rs("url")%>"target="_blank"
阅读以下有关网络管理的叙述,将应填入(n)处的字句写在对应的栏内。网络管理是指对网络的运行状态进行(1)和(2),使其能够有效、可靠、安全、经济地提供服务,从这个定义可以看出,网络管理包含两个任务,一是对网络的运行状态进行监控,二是对网络的运行状
假设用12个二进制位表示数据。它能表示的最大无符号整数为(3);若采用原码,它能表示的最小负整数为(4)。
随机试题
要求繁殖苗一级成品率不低于________。
门脉高压症的表现是
下列有关营运资金的说法中,不正确的是()。
ABC会计师事务所的章之含注册会计师作为W公司2007年度财务报表审计项目的项目负责人,在对W公司财务报表的审计过程中,发现W公司管理层存在下列问题:(1)在临近会计期末时编制虚假的会计分录;(2)随意修改固定资产预计使用年限;(3
林某12岁的女儿在农村小学上五年级,林某认为女孩迟早要嫁人,读再多的书也没用,还不如早点让她去赚钱。于是,在暑假时将女儿送到镇上一个个体户处打工。新学期开始,学校领导、老师和村干部多次登门家访,林某拒送女儿返校学习。列出案例中的违法主体,并指出违反了什
建立在日常交往基础上的,由主体与主体之间所结成的丰富而生动的“日常生活世界”,称为()
依据法律法规分管专门行政事务,通过一定运作机制,落实公共事务管理和服务诸任务的全部活动,具有专业性、局部性特点的机构是()。
从“蓝大保卫战”到“史上最严”的新环境保护法,再到对“洋垃圾”说“不”,“绿水青山就是金山银山”的理念已________。对于中国而言,这是转变发展方式、破解资源环境瓶颈制约、提升国际竞争力的内在要求,与国家乃至全球的可持续发展目标________。
新建文档WD12B.DOC,插入文档WD12A.DOC,将标题“习惯与自然”设置为黑体、小二号、居中;正文部分的汉字设置为宋体,字号为四号,字形为“加粗”,存储为文档WD12B.DOC。
【S1】【S2】
最新回复
(
0
)