首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下函数说明和C代码,将应填入(n)处的字句写在答题纸对应栏内。 【说明】 任何一种程序都是为了解决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略(Strategy)模式下,可以更换实现算法的部分而不留痕迹,切换整个算法,简化改为采用其他方
阅读以下函数说明和C代码,将应填入(n)处的字句写在答题纸对应栏内。 【说明】 任何一种程序都是为了解决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略(Strategy)模式下,可以更换实现算法的部分而不留痕迹,切换整个算法,简化改为采用其他方
admin
2014-10-11
60
问题
阅读以下函数说明和C代码,将应填入(n)处的字句写在答题纸对应栏内。
【说明】
任何一种程序都是为了解决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略(Strategy)模式下,可以更换实现算法的部分而不留痕迹,切换整个算法,简化改为采用其他方法来解决同样问题。以下是一个“剪刀石头布”游戏。猜拳时的“策略”有2种方法:第一种是“猜赢后继续出同样的招式”(WinningStrategy),第二种是“从上一次出的招式种,以概率分配方式求出下一个招式的几率”(ProbStrategy)。程序中定义了Hand类表示猜拳时的“手势”,类内部以0(石头)、1(剪刀)、2(布)来表示。Hand类的实例只会产生3个。以下是C语言实现,省略了不相关属性及方法,方法实现体亦有所省略,能够正确编译通过。
【C代码】
typedef(1) (*funl)();
enum HandValue{HANDVALUE_GUU=0,HANDVALUE CHO=1,HANDVALUE_PAA=2);
//手势可取值,依次为“石头”、“剪刀”、“布”
//其大小顺序是循环相克的,即:石头赢剪刀,剪刀赢布,布赢石头
bool won;
struct Hand ★WSpreVHand;
struct Hand{//手势
enum HandValue handvalue:
)hand[3]={HANDVALUE_GUU,HANDVALUE_CHO,HANDVALUE_PAA);
int fight(struct Hand*h1,Struct Hand*h2)
//比较h1和h2。h1代表的手势较大时返回1,h1较小时返回一1,相等时返回0
//
{
if(h1一>handvalue==h2一>handvalue){
return 0;
)else if((h1一>handvalue+1)% (2)==h2一>handvalue)(
return1;
}e1Se{
return一1;
}
}
Struct Hand*getHand(int handvalue)(
//依据手势代表的值取得手势,若handvalue不合法,返回NULL
switch(handvalue){
Case 0:
return&hand[0];
break;
case 1:
return&hand[1];
break;
case 2:
return&hand[2];
break;
}
return (3) ;
}
struct Strategy(//策略
funl nextHand;//下一个手势
};
Struct Hand*WSnextHand()
{
if(!won){
PSprevHand=getHand(rand()%3);
}
return PSprevHand;
}
struct player{
char name[2 0];
(4) strategy;//策略
int wincount;
int losecount;
int gamecount;
};
void main()
{
Strategy WS;
WS.nextHand=WSnextHand:
WSprevHand=NULL;
struct player WSplayer;
(5) (WSplayer.name, ”ww”);
WSplayer.wincount = 0;
WSplayer.losecount = 0;
WSplayer.gamecount = 0;
WSplayer.strategy = &WS;
}
选项
答案
(1)structHand* (2)3 (3)NULL (4)structStrategy* (5)strcpy
解析
先看空(2)。条件(hl一>handvalue+1)%(2)==h2一>handvalue是指h1大于h2,根据手势间大小顺序:石头(O)赢剪刀(1),剪刀(1)赢布(2),布(2)赢石头(0)。可得应填3。例如hl为布(2),h2为石头(O)时,hl一>handvalue+1)%(2)的值应为0。所以空(2)填3。handvalue取值为:0、1、2,由注释“若handbalue不合法,返回NULL”可得空(3)应填NULL。先看空(5)。结构体WSplayer的strategy字符数组,对字符数组的赋值需调strcpy库函数。故空(5)应填strcpy。来看空(4)。由语句“WSplayer.strategy=&wS;”及“StrategyWS;”可知,结构体WSplayer的strategy应该是Strategy结构体指针。故空(4)应填structStrategy*。最后来看空(1)。这明显是一个函数指针,函数指针的定义:函数返回类型函数指针变量名(参数列表)。故空(1)是该函数的函数返回类型。用到该定义的是在结构体Strategy,“funlnextHand;//下一个手势”,此处只是一个声明,不能判断其返回类型,真正应用的是语句“WS.nextHand=WSnextHand;”,而其右端的函数原型为structHand*WSnextHand(),因此该函数指针的返回类型应为structHand*。故空(1)应填structHand*。
转载请注明原文地址:https://kaotiyun.com/show/I4DZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
在C程序中,设有“inta=3,b=2,c=1;”,则表达式a>b>c的值是_________。
某个不确定有限自动机(s0为初态,s3为终态)如下图所示,_______是该自动机可识别的字符串(即从初态到终态的路径中,所有边上标记的字符构成的序列)。
假设系统有n(n≥5)个并发进程,它们竞争互斥资源R。若采用PV操作,当有3个进程同时申请资源R,而系统只能满足其中1个进程的申请时,资源R对应的信号量s的值应为_______。
CPU执行指令时,先要根据程序计数器将指令从内存读取出并送入______,然后译码并执行。
阅读以下说明,回答问题1至问题4,将解答填人答题纸的对应栏内。[说明]某小公司的网络拓扑如图9-2所示。其中路由器具有ISDN模块,公司网络通过ISDN连接到ISP。
造成故障1的原因是什么?如何解决?1.将故障2中(1)和(2)两处合适的答案填入答题纸相应的解答栏内。2.故障2如何解决?
同一个VLAN中的成员可以形成一个广播域,从而实现何种功能?创建一个名字为v2的虚拟局域网的配置命令如下,请给出空白处的配置内容:Switch#(1)(进入VLAN配置模式)Switch(vlan)#(2)(创建v2并命名)Sw
根据图3-1所给出的网络连接方式及相关的网络参数,区域(A)与区域(B)中计算机的网络参数配置(如图3-2所示)为:区域(A)计算机“IP地址”(范围):(1):区域(A)计算机“子网掩码”;(2);区域(A)计算机“默认网关”:(
某交换机的配置命令如下,根据命令后面的注释,填写(1)~(3)处的空缺内容,完成配置命令。Switch(config)#(1)//将交换机命名为Sw1Swl(config)#interfacevlan1Swl(config
在“管理工具”中运行“管理IP筛选器列表”,创建一个名为“SNMP消息”的筛选器。在如图12-3所示的“IP筛选器向导”中指定IP通信的源地址,下拉列表框中应选择(1);在如图12-4中指定IP通信的目标地址,下拉列表框中应选择(2)。在图
随机试题
A.NaClB.尿素C.NaCl+尿素D.尿素+葡萄糖形成内髓部高渗梯度的是
与幼儿神经系统成熟有关的是
长城公司、金马公司2013年有关交易或事项如下。 (1)1月1日,长城公司向金马公司控股股东佳泰公司定向增发本公司普通股股票1400万股(每股面值为1元,市价为15元),以取得佳泰公司持有的金马公司70%的股权,实现对金马公司财务和经营政策的控制,股权
某年2月1日,甲、乙双方签订了一份购销合同。合同约定甲方在6月底前将货物运至乙方,乙方于接到货物后J5天内将货款付给甲方。甲方按期将货物通过火车发运给乙方,但迟至9月底仍未收到乙方的货款,后诉至法院。乙方在法庭上辩称,由于8月份本地发洪水,致使自己无法履行
狭义的教育指的是_________教育。
说明:本题中指数的计算方法为:当年的数值与上一年数值的比乘以100。举例来说。假设第一年的数值为m,第二年的数值为n,则第二年的指数为100×(n/m)。第三产业的指数超过人均国内生产总值的年份有()。
土地增值税,是指对转让房地产,即转让国有土地使用权和地上建筑物及其附着物并取得收入的单位或个人征收的税。下列情况应征收土地增值税的是()。
愚公移由:郑人买履
解释程序的功能是( )。
有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;
最新回复
(
0
)