首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列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
29
问题
阅读下列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://jikaoti.com/ti/11i7FFFM
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
以下属于影响软件可靠性因素的是()。①软件运行剖面②软件规模③软件内部结构④软件的开发方法和开发环境⑤软件的可靠性投入
假设实体集E1中的一个实体可与实体集E2中的多个实体相联系,E2中的一个实体只与E1中的一个实体相联系,那么E1和E2之间的联系类型为()。
以下叙述中,不正确的是()。
在计算机系统中,系统的______可以用MTTF/(1+MTTF)来度量,其中MTTF为平均无故障时间。
高级程序设计语言中用于描述程序中的运算步骤、控制结构及数据传输的是(20)。
在以阶段划分的编译器中,符号表管理和()贯穿于编译器工作始终。
对某商店业务处理系统采用数据流图(DFD)进行功能建模,其中“检查订货单”是其中的一个①。由于在进行订货单检查时,需要根据客户的欠款情况、订单金额等多个条件判断是否采取发出催款单、准备货物、发出发货单等行为,此时适合采用②进行描述。②处
系统交付后,修改原来打印时总是遗漏最后一行记录的问题,该行为属于______维护。
随机试题
某企业人力资源部以书面文件的方式对各个岗位的工作内容、工作环境、工作职责以及任职人员的资格要求等做了系统描述。该文件被称为()。
选用内关、侠溪、太冲治疗郁证,蕴含的配穴方法有
该病儿最可能的诊断是[假设信息]住院第3天,患儿呼吸困难,唇周青紫,两肺细湿啰音多,血ph7.20,PaO26kPa,PaCO29kPa,BE-3mmol/L。下列治疗措施中哪项欠妥当
A.疖B.痈C.丹毒D.急性蜂窝织炎E.脓肿多个相邻毛囊及其所属的皮脂腺或汗腺的急性化脓性感染是
按药物性质分类,避瘟散属于()。
易引起出血性膀胱炎,需要合用美司钠进行解救的抗肿瘤药物是
甲公司在与乙公司协商购买某种零件时提出,由于该零件的工艺要求高,只有乙公司先行制造出符合要求的样品后,才能考虑批量购买。乙公司完成样品后,甲公司因经营战略发生重大调整,遂通知乙公司:本公司已不需此种零件,终止谈判。下列哪一选项是正确的?
财政部门可以依法对违反会计法行为的单位和个人作出行政处罚,该财政部门是指()。
甲公司董事会对待风险的态度属于风险厌恶。为有效管理公司的信用风险,甲公司管理层决定将其全部的应收款项以应收总金额的80%出售给乙公司,由乙公司向有关债务人收取款项,甲公司不再承担有关债务人未能如期付款的风险。甲公司应对此项信用风险的策略属于()。(
Tomanyvisitorstoacountrytheword"city"meansthecapitalcity.Andthatinitsturnmeanswhatwouldbetakeninbyagro
最新回复
(
0
)