2023年10月17日来源:信管网 作者:cnitpm
2023年下半年软件设计师实行机考,考试时间为11月4日开考(分批次考试,部分地区可能不同,请以准考证为准),临近考试,每天刷刷题保持题感是有必要的,同时遇到不会的也可以查漏补缺,信管网将在考前为大家提供一些试题,供大家刷题练习。
2023年下半年软件设计师案例分析真题模拟试题演练(1)
试题一:
阅读下列说明和C函数代码,将应填入 (n) 处的字句写在的对应栏内。
[说明]
对二叉树进行遍历是二叉树的一个基本运算。遍历是指按某种策略访问二叉树的每个节点,且每个节点仅访问一次的过程。函数InOrder()借助栈实现二叉树的非递归中序遍历运算。
设二叉树采用二叉链表存储,节点类型定义如下:
typedef struct BtNode{
ElemType data; /*节点的数据域,ElemType的具体定义省略*/
struct BtNode * lchild * rchild; /*节点的左、右孩子指针域*/
}BtNode,*BTree;
在函数InOrder()中,用栈暂存二叉树中各个节点的指针,并将栈表示为不含头节点的单向链表(简称链栈),其节点类型定义如下:
typedef struct StNode{ /*链栈的节点类型*/
BTree elem; /*栈中的元素是指向二叉链表节点的指针*/
struct StNode*link;
}StNode;
假设从栈顶到栈底的元素为en、en-1…、e1,则不含头节点的链栈示意图如图5-1所示。
[C函数]
int InOrder(BTree root) /*实现二叉树的非递归中序遍历*/
{
BTree ptr; /*ptr用于指向二叉树中的节点*/
StNode*q; /*q暂存链栈中新创建或待删除的节点指针*/
StNode*stacktop=NULL; /*初始化空栈的栈顶指针stacktop*/
Ptr=root; /*ptr指向二叉树的根节点*/
while ( (1) | | stacktop !=NULL) {
while (ptr!=NULL) {
q=(StNode*)malloc(sizeof (StNode));
if (q= =NULL)
return-1;
q->elem=ptr;
(2) ;
stacktop=q; /*stacktop指向新的栈顶*/
ptr= (3) ; /*进入左子树*/
}
q=stacktop;
(4) ; /*栈顶元素出栈*/
visit(q); /*visit是访问节点的函数,其具体定义省略*/
ptr= (5) ; /*进入右子树*/
free(q); /*释放原栈顶元素的节点空间*/
}
return 0;
}/*Inorder*/
查看答案
试题二:
阅读下列说明和Java代码,回答下列问题。
[说明]
某咖啡店卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表2-9所示。
表2-9 咖啡及配件的种类和价格
咖啡 |
价格/杯(¥) |
|
配料 |
价格/份(¥) |
蒸馏咖啡(Espresso) |
25 |
|
摩卡(Mocha) |
10 |
深度烘焙咖啡(DarkRoast) |
20 |
|
奶泡(Whip) |
8 |
现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图2-15所示的类图。
[Java代码]
import java.util.*:
______ class Beverage { //饮料
String description = "Unknown Beverage";
public ______ () { return description; }
public ______;
}
abstract class CondimentDecorator extends Beverage { //配料
______;}
class Espresso extends Beverage { //蒸馏咖啡
private final int ESPRESSO_PRICE = 25;
public Espresso() { description="Espresso"; }
public int cost() { return ESPRESSO_PRICE; }
}
class DarkRoast extends Beverage { //深度烘培咖啡
private finalint DARKROAST_PRICE = 20;
public DarkRoast() { description = "DarkRoast"; }
public int cost() { return DARKROAST PRICE; }
}
class Mocha extends CondimentDecorator { //摩卡
private final int MOCHA_PRICE = 10;
public Mocha (Beverage beverage) { this.beverage = beverage; }
public String getDescription() { returnbeverage.getDescription0 +",Mocha"; }
public int cost() { return MOCHA_PRICE + beverage.cost(); }
}
class Whip extends CondimentDecorator { //奶泡
private finalint WHIP_PRICE = 8;
public Whip(Beverage beverage) { this.beverage = beverage; }
public String getDescription() { returnbeverage.getDescription() +", Whip"; }
public int cost() { return WHIP_PRICE + beverage.cost(); }
}
public class Coffee {public static void main(String args[]) {
Beverage beverage = new DarkRoast(); beverage=new Mocha(______);
beverage = new Whip (______);
System.out.println(beverage.getDescription() +"¥"+beverage.cost());
}
}
编译运行上述程序,其输出结果为:DarkRoast,Mocha,Whip ¥38
查看答案
参考答案:
参考解析:www.cnitpm.com/st/2479514986.html
信管网考友试题答案分享:
信管网yebinghuai:
<br /><img src="http://pic.cnitpm.com/upload/tbimg/2022-02/1645840772.jpg" />
阅读推荐:
【考后估分/对答案收藏】2023年下半年软件设计师真题及答案(综合、案例)
温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
相关推荐