程序员下午试题2006上半年答案.doc
《程序员下午试题2006上半年答案.doc》由会员分享,可在线阅读,更多相关《程序员下午试题2006上半年答案.doc(5页珍藏版)》请在麦多课文档分享上搜索。
1、程序员下午试题2006上半年答案真题 120填空题第1题:参考答案:详细解答:第2题:参考答案:详细解答:第3题:参考答案:(1)B(j,n-i+1),或矩阵B的第j行第n-i+1列 (2)C(n-i+l,n-j+1),或矩阵C的第n-i+1行第n-j+1列 (3)A(n-j+1,i)详细解答:第4题:参考答案:num/100000,或num9999,或num=10000,或其等价形式 (2)result=0 (3)m/10,或(m-d)/10,或其等价形式 (4)d*10 +d,或其等价形式 (5)mul*100,或其等价形式详细解答:本题考查简单运算的程序实现。对于这类题目,应将题干部分描
2、述的运算过程理解透彻。 函数change(int num)的功能是对四位以内(含四位)的十进制正整数num的每一位重复一次。显然,num的位数大于4的直接表示是num9999或nam10000,或 num/100000。 从题干部分给出的变换公式看,最后的结果是累加获得的,而且代码中用于保存累加结果的变量是result,该变量的初值应为0。所以空(2)处应填入“result=O”。分析对 5234的变化过程可知,首先取出个位,其次是十位上的数字,以此类推,并且将每次取出的数字d乘以10再加上该数字d,因此空(4)处应填入“d*10 +d” 。显然mul的值以100进行累乘,因此空(5)处填入“
3、mul*100。由于跳出循环的条件为“m=0”,所以结合“d=m%10”可知,空(3)处应填入“m/10”。第5题:参考答案: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
4、(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)”。 根据出栈操作的函数
5、原型“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)”。同时,通过T
6、op和Pop操作从临时工作栈s bak中取出元素,再用Push操作将该元素压入栈*s中,来实现将暂存于临时工作栈s bak中的元素存回栈*s,因此,空(5)填入“Pop(&s_bak)”。第6题:参考答案:acc_qty=0 (2)P numi*dataiPrice,或其等价形式 (3)acc_qty-acc_reqi,或其等价形式 (4)tag,或tag=1,或tag!=0,或其等价形式 (5)cost_Produce+cost_Keepmincost详细解答:本题考查用C程序求解具有实际应用背景的问题。 对这类问题,一般在描述问题的背景时,会详细说明程序应实现的功能,并通过对示例数据的求解
7、给出程序中对数据的处理过程。阅读这类程序时,应准确理解程序中定义的数据类型及其变量的作用,这是完善程序中空缺位置的关键所在。 从题目中可知,结构体数组data是全局变量,分别用分量Qty_req、Price和 Keeping_fee保存每天的零件需求量、零件的单价及保管费用,也需要注意数组元素data0不使用。 由于每天生产的零件还可以保存起来以后再使用,因此考查零件的生产数量是否满足需求时,需要从累计数量考查。为方便计算,程序中提前计算出累计的零件需求量并按天保存在数组acc_req口中。应注意第i天生产的零件数存在P_numi中。 借助于注释可知i是循环控制变量,同时起计算天数时的序号作用
8、。由代码“acc qty +=P_numi;”及注释可知变量acc_qty保存累计的零件生产量,因此之前必须将acc_qty初始值设为0,因此空(1)处填入“acc qty=0”。由于cost Produce保存的是到第i天时当前生产计划的总零件价格,因此应计算出第i天生产的零件总价格,所以空(2)处填入“P humi。dataiPrice”。显然,到第i天时累计生产的零件数减去累计的需求数就是应保存的零件,所以累计的零件保管费用为“cost_Keep+=(acc_qty-acc_reqi* dataiKeeping_fee;”,即空(3)处填入“ace_qty-ace_reqi”。 另外,从
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序员 下午 试题 2006 上半年 答案
