首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内[说明] 本程序在3×3方格中填入1到10以内9个互不相等的整数,使所有相邻两个方格内的两个整数之和为质数。程序的输出是全部满足条件的方格。 方格的序号如下图所示。程序采用试探法,从序
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内[说明] 本程序在3×3方格中填入1到10以内9个互不相等的整数,使所有相邻两个方格内的两个整数之和为质数。程序的输出是全部满足条件的方格。 方格的序号如下图所示。程序采用试探法,从序
admin
2009-02-15
32
问题
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内[说明]
本程序在3×3方格中填入1到10以内9个互不相等的整数,使所有相邻两个方格内的两个整数之和为质数。程序的输出是全部满足条件的方格。
方格的序号如下图所示。程序采用试探法,从序号为0的方格开始,依次为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数;如不能为当前方格寻找一个合理的可填整数,就要后退到前一方格,调整前一方格的填入整数;当序号为8的方格也填入合理的整数后,就找到了一个解。
为检查当前方格所填整数的合理性,程序引入数组CheckMatrix,存放需要进行合理性检查的相邻方格的序号。事实上,CheckMatrix中只要求第i个方格中的数向前兼容,即填写第4个方格时,只检查在它之前、与之相邻的第1,3个方格是否满足和为素数的条件。
[程序]
#include <stdio.h>
int pos,a[9],b[11]; /*用于存储方格所填入的整数*/
void write(int a[]) /*方格输出函数*/
{ ……}
int isPrime(int m) /*素数判断函数,若m为素数则返回1,否则返回0*/
{ ……}
int selectNum(int start) /*找到start到10之间尚未使用过的最小的数,若没有则返回0*/
{ int j;
for(j=start;j<=10;j++) if(b[j]) return j;
return0;
}
int check() /*检查填入pos位置的整数是否合理*/
{ int i,j
int checkMatrix[][3]={{-1},{0,-1},{1,-1},{0,-1},{1,3,-1},{2,4,-1},{3,- 1},{4,6,-1},{5,7,-1}};
for(i=0;(j=(1))>=0;i++)
if(! isPrime((2)))return 0;
return 1;
}
void extend() /*为下一方格找一个尚未使用过的整数*/
{ (3)=selectNum(1);
b[a[pos]]=0;
}
void change() /*为当前方格找下一个尚未使用过的整数,若找不到则回溯*/
{ int j;
while(pos>=0&&(j=selectNum(a[pos]+1))= =0) b[a[pos- -]]=1;
if(pos<0)return;
(4);a[pos] =j;b[j]=0; }
void find()
{ int ok=1;
pos=0;a[pos]=1;b[a[pos]]=0;
do{
if(ok)
if( (5) ){
write(a);change();
}
else extend();
else change();
ok=check(pos);
}while(pos>=0);
}
void main()
{ int i;
for(i=1;i<=10;i++)b
=1;
find();
}
选项
答案
(1) checkMatrix[pos][i] (2) a[pos]+a[j] (3) a[++pos] (4) b[a[pos]]=1 (5) pos= =8或pos>=8或pos>7
解析
程序中主要变量及其作用说明如下:pos用于标记当前要填数的方格序号;数组元素a
表示第i个方格所填的内容;数组元素b[j]标记整数j是否被使用 (初始化时设为1,表示没有使用);一维数组checkMatrix
记录了填写第i个方格需要检查的方格序号,例如checkMatrix[4]={1,3,-1},其中-1用作结束标记。
(1)此循环遍历一维数组checkMatrix[pos],取出第i个数checkMatrix[pos]
赋给j,直至-1;
(2)j是checkMatrix[pos]中不等于-1的值,即表示需要检查当前方格(第pos个)与第j个的和是否是素数;
(3)这条语句应包含pos增1以及a[pos]=selectNum (1)前后两个操作,因此需用++pos;
(4)若能为当前方格找到下一个未被使用的数,则应先释放当前格中的数,再填入新数;
(5)这条语句包含输出方格操作,因此判断的条件是全部方格被填满,即pos值已增至8。
转载请注明原文地址:https://kaotiyun.com/show/WojZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
某工作站无法访问域名为www.test.com的服务器,此时使用ping命令按照该服务器的IP地址进行测试,响应正常。但是按照服务器域名进行测试,出现超时错误。此时可能出现的问题是(17)。
信息系统设计方案中的操作界面部分,特别是输入界面设计方案需要征求信息处理技术员的意见。在如下设计理念中,(66)是不正确的。
对某地区家庭人数的抽样调查统计结果如下表:根据此表,该地区每个家庭的平均人数大致为(28)。
在Excel2007中,设单元格A1中的值为-1,B1中的值为1,A2中的值为0,B2中的值为1,若在C1单元格中输入函数“=IF(AND(A1>0,B1>0),A2,B2)”,按回车键后,C1单元格中的值为______。
计算机硬件唯一能够直接识别和处理的语言是(30)________________。
n=1,2,3,…,100时,[n/3]共有(4)________________个不同的数([a]表示a的整数部分,例如[3.14]=3)。
________________不会是信息系统的功能。
在Excel2010中,设单元格A1、B1、C1、A2、B2、C2中的值分别为1、2、3、4、5、6,若在单元格D1中输入函数“=MAX(A1:A2,B1:C2)”,按回车键后,则D1单元格中的值为(
某年级两个班举行了一次数学统考,一班(共30人)的平均成绩为70分,二班(共 20人)的平均成绩为75分,则该年级的平均成绩为(65)分。
(1)是固化在主板ROM内的程序,为计算机提供最底层、最直接的硬件访问和控制。
随机试题
在对钢管进行喷涂内减阻涂料时,扇幅最高搭接为()。
根据企业会计准则的规定,我国企业利润表采用()结构。
下列不属于收入政策的范畴的是()。
根据公司法律制度的规定,下列关于股份有限公司股份转让限制的表述中,不正确的是()。
个人因从事彩票代销业务而取得所得,应按照“个体工商户的生产、经营所得”项目计征个人所得税。()
一般资料:求助者,男性,56岁,国家某部委巡视员。案例介绍:求助者原是某部局长,由于年龄的原因,半年前改任非领导职务。原来每天非常繁忙,总有处理不完的事情。现在自己分管的事情明显比以前少了。对新局长的思想有些不理解,但又不好干涉别人的工作,心里很不
党的十八大首次提出“倡导富强、民主、文明、和谐,倡导自由、平等、公正、法治,倡导爱国、敬业、诚信、友善,积极培育社会主义核心价值观”。其中立足社会层面提出的要求是
具体来说,UML的语义是定义在一个四层建模概念框架中的,这四层分别是:【1】、元模型层、模型层和【2】。
计算机采用的最基本电子元件具有两个状态,这也是最简单易行的方法。例如,只有开和关的电子状态,导通和截止的晶体管,不同极性的磁性元件等。为了适应计算机内部的电子电路,我们把这两种状态分别定义为“0”和“1”,采用“二进制”这样一种特殊的形式来表示,二进制的口
Somesayitisevidentthatcomputerscandamageaperson’seyesight.Sincethepopularityofcomputersbegantoskyrocket,ther
最新回复
(
0
)