首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】 本程序在3×3方格中填入1~N(N≥10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。试求出满足这个要求的所有填法。3×3方格中的每个方格按行按列
阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】 本程序在3×3方格中填入1~N(N≥10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。试求出满足这个要求的所有填法。3×3方格中的每个方格按行按列
admin
2009-02-15
31
问题
阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。
【说明】
本程序在3×3方格中填入1~N(N≥10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。试求出满足这个要求的所有填法。3×3方格中的每个方格按行按列(先行后列)序号排列为:0,1,2,3,4,5,6,7,8。
程序采用试探法,即从序号为0的方格开始,为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数。如不能为当前方格找到一个合理的可填整数,就要回退到前一方格,调整前一方格的填入整数;直至序号为8的方格也填入合理的整数后,就找到了一个解,将该解输出。再调整序号为8的方格所填整数,继续去找下一个解。为了检查当前方格的填入整数的合理性,程序引入二维数组check Matrix,存放需要进行合理性检查的相邻方格的序号。
# include <stdio. h>
# define N 12
int b[N+1];
int pos;
int a[9];/* 用于存储诸方格所填入的整数*/
int AllNum=0;/* 统计有多少种填法*/
int checkMatrix[][3]={ {-1},{0,-1},{1,-1},
{0,-1},{1,3,-1},{2,4,-1},
{3,-1},{4,6,-1},{5,7,-1}};
void write(int a[])
{ int i, j;
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("%3d", a[3*i+j]);
printf("\n");
}
}
int isPrime(int m)
{ int i;
if(m==2)return 1;
if(m==1 ‖ m%2==0)return 0;
for(i=3; i*i<m;)
{ if(m%i==0)return 0;
i+=2;
}
return 1;
}
int selectNum(int start)
{ int j;
for(j=start; j<=N; j++)
if(b[j])return j;
return 0;
}
int check()/*检查填入pos位置的整数是否合理*/
{ int i,j;
for(i=0; (j=(1))>=0; i++)
if(!isPrime(a[pos]+a[j]))
(2);
(3);
}
extend ()/* 为下一方格找一个尚未使用过的整数*/
{ a[(4)]=selectNum(1);
b[a[pos]]=0;
}
void change ()/*为当前方格找下一个尚未使用过的整数(找不到回溯)*/
{ int j;
while(pos >=0 && (j=selectNum((5)))==0)
b[a[pos--]]=1;
if(pos<0)return;
b[a[pos]]=1; a[pos]=j; b[j]=0;
}
int find ()
{ int ok=1;
pos=0; a[pos]=1; b[a[pos]]=0;
do{
if(ok)
if(pos==8)
{ write(a);
change();
AllNum++;/* 统计有多少种填法*/
}
else extend();
else change();
ok=check();
}while(pos>=0);
}
void main()
{ int i;
for(i=1; i<=N; i++) b
=1;
find();
prinrf("共有%d种不同填法!/n", AllNum);
}
选项
答案
(1)checkMatrix[pos][i] (2)return 0 (3)return 1 (4)++pos (5)a[pos]+1
解析
(1)checkMatrix[pos]
本处填空是在循环检查填入pos位置的整数是否合理,把与pos相邻的数都求和判断是否为质数。
(2)return 0
若不是质数则返回0,表示不可以。
(3)return 1
若相邻的数都是质数则返回1,表示可以。
(4)++pos
本处填空是为下一个方格找一个尚未使用过的整数。
(5)a[pos]+1
本处填空是在循环为当前方格找下一个尚未使用过的整数。
转载请注明原文地址:https://kaotiyun.com/show/MMDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
以下关于模块耦合关系的叙述中,耦合程度最低的是__________(39),其耦合类型为___________(40)耦合。(39)
下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,则完成该项目的最少时间为_____________(34)天。活动BD最多可以晚开始______________(35)天而不会影响整个项目的进度。(34)
POP3协议采用___________(23)模式,客户端代理与POP3服务器通过建立___________(24)连接来传送数据。(24)
某企业的生产流水线上有2名工人P1和P2,1名检验员P3。P1将初步加工的半成品放入半成品箱B1;P2从半成品箱B1取出继续加工,加工好的产品放入成品箱B2;P3从成品箱B2取出产品检验。假设B1可存放n件半成品,B2可存放m件产品,并设置6个信号量S1、
设系统中有R类资源m个,现有n个进程互斥使用。若每个进程对R资源的最大需求为w,那么当m、n、w取下表的值时,对于下表中的a~e五种情况,(26)两种情况可能会发生死锁。对于这两种情况,若将(27),则不会发生死锁。
在面向对象系统中,对象的属性是()。
在计算机系统中总线宽度分为地址总线宽度和数据总线宽度。若计算机中地址总线的宽度为32位,则最多允许直接访问主存储器_____的物理空间。
以下测试内容中,属于系统测试的是()。①单元测试②集成测试③安全性测试④可靠性测试⑤兼容性测试⑥可用性测试
______不是正确的软件测试目的。A.尽最大的可能找出最多的错误B.设计一个好的测试用例对用户需求的覆盖度达到100%C.对软件质量进行度量和评估,以提高软件的质量D.发现开发所采用的软件过程的缺陷,进行软件过程改进
虚拟存储体系由___________两级存储器构成。
随机试题
婴幼儿肺炎首先出现的病理生理改变是
怎样利用PMC进行FANUC系统故障诊断与维修?
患者,女,36岁。产后大出血后疲劳,闭经,查体:苍白,无欲,血压低,血糖低。问题2:可能出现的异常是
医用X线摄影管电压范围是
A.突发胸部撕裂样疼痛,伴全身冷汗,血压常升高B.胸部和背部持续烧灼样疼痛C.活动后胸骨后或左胸部剧烈疼痛,休息后缓解D.常有心前区针刺样疼痛E.胸骨后剧烈压榨样疼痛,舌下含服硝酸甘油不缓解力性心绞痛的临床表现特点是
心肺复苏后,下列处理哪项错误
管理学意义上的相关利益者包括()。Ⅰ.员工Ⅱ.债权人Ⅲ.供应商Ⅳ.客户
外籍个人跨期2015年1月1日入境,2016年2月10日离境,期间离境20天,则2015年为个人非居民纳税人。()
通常将软件分为系统软件和应用软件。C语言是______软件。
ThestudywaswrittenandresearchedbyBritain’sNationalConsumerCouncil(NCC)forlobbygroupConsumerInternational.Itwas【C
最新回复
(
0
)