首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列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
47
问题
阅读下列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://www.kaotiyun.com/show/MMDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
______是当前自动化测试技术不能解决的问题。A.保证测试质量B.提高测试效率C.排除手工操作错误D.降低测试用例设计的难度
设系统中有R类资源m个,现有n个进程互斥使用。若每个进程对R资源的最大需求为w,那么当m、n、w取下表的值时,对于下表中的a~e五种情况,(26)两种情况可能会发生死锁。对于这两种情况,若将(27),则不会发生死锁。
软件工程的基本目标是()。
对于逻辑表达式((bl&b2)||in),需要_______个测试用例才能完成条件组合覆盖。
某客户端在采用ping命令检测网络连接故障时,发现可以ping通127.0.0.1及本机的IP地址,但无法ping通同一网段内其他工作正常的计算机的IP地址,说明该客户端的故障是(69)。
以下用例图中,A1和A2为(47)。A1和A2的关系为(48)。(48)
以下关于数据流图的叙述中,不正确的是()。
对某商店业务处理系统采用数据流图(DFD)进行功能建模,其中“检查订货单”是其中的一个①。由于在进行订货单检查时,需要根据客户的欠款情况、订单金额等多个条件判断是否采取发出催款单、准备货物、发出发货单等行为,此时适合采用②进行描述。②处
以下关于软件测试原则的叙述中,正确的是______。①所有软件测试都应追溯到用户需求②尽早地和不断地进行软件测试③完全测试是不可能的④测试无法发现软件潜在的缺陷⑤需要充分注意测试中的群集现象
随机试题
A市石材公司共有3座露天采石场。2014年9月12日15时19分,石材公司位于同省B市的露天采石场发生边坡坍塌事故,事故过程如下:12日13时,采石场主管安排李某等5人,在第二平台分别进行运输通道清理、钻孔作业、坡面浮石清理、装矿作业,安排冯某在第三平台
Whenteachingsuchwordsas"left"and"right",ateacheraskshis/herstudentstotouchtheirleftarmsandthentouchtheirr
诬告陷害罪
目前最好的防病毒软件的作用是()。
长期用糖皮质激素突然停药可引起:
()属于会计工作岗位。
商业银行的经营原则包括()。
甲向乙购买了一只羊,钱已付,因天黑路滑,甲决定明天再来牵羊,乙将甲所买的羊与自己的羊一起拴在门口树下,当晚雷雨交加,将甲所买的羊与乙的羊一起击死,此事件中乙是否需要赔偿甲?下列选项正确的是()。
有人说:“我们应当以资本供给全世界,而谁以资本供给全世界,谁就应当管理全世界。”讲这话的应该是()。
Theboywoulddoeverythingbut______hisfault.
最新回复
(
0
)