重要提示: 请勿将账号共享给其他人使用,违者账号将被封禁!
查看《购买须知》>>>
找答案首页 > 全部分类 > 计算机类考试
搜题
网友您好, 请在下方输入框内输入要搜索的题目:
搜题
题目内容 (请给出正确答案)
[主观题]

请教:2006年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷第1大题第5小题如何解答?

【题目描述】

阅读以下说明和c语言函数。

[说明]

函数bool Del_elem(STACK*s,char para_ch)的功能是:删除栈*s中与para ch之值相等且最接近栈顶的元素(字符),若栈中不存在该元素,则函数返回 FALSE,否则返回 TRUE。其中,STACK是栈的类型名。

函数Del_elem实现上述功能的方法是:利用栈的基本操作,先将栈*s中所有比 para_ch之值更接近栈顶的元素暂时存放在临时工作栈s_bak中,使得与para_ch之值相等的元素成为栈顶元素,此时执行出栈操作,即从栈中删除与Para ch之值相等的元素,最后再将s bak中的元素依次存回栈*s。

在函数Del_elem中必须使用栈的基本操作进行栈上的运算,实现栈的基本操作的函数原型说明如下:

void InkStack(STACK*S):初始化栈。

void Push(STACK*S,char e):将一个字符压栈,栈中元素数目增1。

void Pop(STACK*S):栈顶元素出栈,栈中元素数目减1。

char Top(STACKS):返回非空栈的栈顶元素值,栈中元素数目不变。

bool IsEmpty(STACK S):若S是空栈,则返回TRUE;否则返回FALSE。

bool类型定义如下:

typedef enum{FALSE=0,TRUE=1)bool;

[C语言函数]

bool Del_elem(STACK*s,char para_ch)

{

STACK s_bgk; /*定义临时工作栈s_bak,*/

char ch;

bool tag=FALSE;

(1) /*初始化临时工作栈s_bak*/

/*,将栈*s中所有比para_ch更接近栈顶的元素暂时存放在临时工作栈s bak中*/

while(!IsEmpty(*s)){

ch=(2); /*取栈顶元素*/

Pop(s);

if(ch=para_ch){

tag=TRUE;

break;

}

(3);

}

/*将暂存于临时工作栈s_bak中的元素存回栈*s*/

while((4))

ch=Top(s_bak);

(5)

Push(s,ch)

}

return tag;

}

【我提交的答案】:

【参考答案分析】:

(1)InitStack(&s_bak)(2)Top(*s)(3)Push(&s_bak,ch)(4)!IsEmpty(s_bak),或IsEmpty(s_ak)==FALSE(5)Pop(&s_bak) 解析:本题考查的是C语言的函数调用和参数传递问题。

C语言采用传值调用方式,即将实际参数的值传递给形式参数,因此,实际参数一般是与形式参数类型相同的变量或表达式。但是,若形式参数为指针,则调用语句中的实参应将一个变量的地址传递给形参。

函数bool Del_elem(STACK*s,char para_ch)的功能是删除栈*s中与para_ch之值相等且最接近栈顶的元素(字符)。因此,利用栈的基本操作,先将栈*s中所有比para ch之值更接近栈顶的元素暂时存放在临时工作栈s_bak中,使得与para_ch之值相等的元素成为栈顶元素,此时执行出栈操作,即从栈中删除与para_ch之值相等的元素,最后再将s bak中的元素依次存回栈*s。

从初始化栈的函数原型“void lnitStack(STACK*S)”可知,形参是一个指针变量,那么实参应该是对STACK类型的变量取地址,因此空(1)处应填入“initStack(&s bak)”。

根据出栈操作的函数原型“void Pop(STACK*S)”,出栈时栈中元素数目减1但调用环境不能获得栈顶元素,因此需要首先调用函数Top()获取栈顶元素的值,然后调用Pop()从栈中删除栈顶元素。因此空(2)应填入“Top(*s)”。临时工作栈需要保存从栈*s弹出的元素,因此,参考压栈操作的函数原型“void Push(STACK*S,chare)”,空(3)应填入“Push(&s bak,ch)”。

从栈中取元素时,应首先判断是否为空栈,这是使用栈结构的一项基本常识。参考函数原型“bool IsEmpty(STACK S)”和bool类型的定义,空(4)应填入“!IsEmpty(s_bak)”。同时,通过Top和Pop操作从临时工作栈s bak中取出元素,再用Push操作将该元素压入栈*s中,来实现将暂存于临时工作栈s bak中的元素存回栈*s,因此,空(5)填入“Pop(&s_bak)”。

为什么答案中有&符号?

暂无答案
更多“请教:2006年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷第1大题第5小题如何解答?”相关的问题

第1题

升降人员和主要井口绞车的信号装置的直接供电线路上()分接其他负荷。A 可以B 严禁C 一般

升降人员和主要井口绞车的信号装置的直接供电线路上()分接其他负荷。

A 可以

B 严禁

C 一般

点击查看答案

第2题

升降人员和主要井口绞车信号装置的直接供电线路上,可以分接其他负荷。
点击查看答案

第3题

升降人员和主要井口绞车的信号装置的直接供电线路上,严禁分接其他负荷。()
点击查看答案

第4题

升降人员和主要井口绞车的信号装置的直接供电线路上,严禁分接其他负荷()

A.√

B.×

点击查看答案

第5题

升降人员和主要提升绞车的信号装置的直接供电线路上,严禁分接其他负荷。
点击查看答案

第6题

用于升降人员和主要井口绞车的电气信号装置的直接供电线路上,可以分接其他负荷。()
点击查看答案
下载上学吧APP
客服
TOP
重置密码
账号:
旧密码:
新密码:
确认密码:
确认修改
购买搜题卡查看答案
购买前请仔细阅读《购买须知》
请选择支付方式
微信支付
支付宝支付
选择优惠券
优惠券
请选择
点击支付即表示你同意并接受《服务协议》《购买须知》
立即支付
搜题卡使用说明

1. 搜题次数扣减规则:

功能 扣减规则
基础费
(查看答案)
加收费
(AI功能)
文字搜题、查看答案 1/每题 0/每次
语音搜题、查看答案 1/每题 2/每次
单题拍照识别、查看答案 1/每题 2/每次
整页拍照识别、查看答案 1/每题 5/每次

备注:网站、APP、小程序均支持文字搜题、查看答案;语音搜题、单题拍照识别、整页拍照识别仅APP、小程序支持。

2. 使用语音搜索、拍照搜索等AI功能需安装APP(或打开微信小程序)。

3. 搜题卡过期将作废,不支持退款,请在有效期内使用完毕。

请使用微信扫码支付(元)
订单号:
遇到问题请联系在线客服
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系在线客服
恭喜您,购买搜题卡成功 系统为您生成的账号密码如下:
重要提示: 请勿将账号共享给其他人使用,违者账号将被封禁。
发送账号到微信 保存账号查看答案
怕账号密码记不住?建议关注微信公众号绑定微信,开通微信扫码登录功能
警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

- 微信扫码关注上学吧 -
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
- 微信扫码关注上学吧 -
请用微信扫码测试
选择优惠券
确认选择
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,如果您知道正确答案,欢迎您来纠错

上学吧找答案