软考程序员考试下午试题解答方法与技巧

来源:软件水平考试    发布时间:2012-11-04    软件水平考试视频    评论

  1.试题分析。

  栈的主要特点是后进先出,即后进栈的元素先处理。本题的题干很长,且程序结构较为复杂,但算法简单。其实这类题的填空比较分散,相对来说看懂了题干的算法思想,是比较容易填写的。

  函数computing()的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组expr)的值,并通过参数result 返回该值。函数的返回值为-1/0分别表示表达式有/无错误。看看程序结构:

  结合上面的程序结构图,程序中用ptr来指向后缀表达式,如果首先碰到的字符是空格,则字符指针ptr指向下一字符,所以第(1)空要填ptr++。在第②个if语句处,当前字符是数字,则将该数字开始的数字串转换为数值,程序中选用了一个中间变量tnum,要对它初始化,所以第(2)空要填0。

  一个多位数(指数值大于9以上的数)在中缀表达式中是连续的,每两组多位数之间是空格,所以题中将一组多位数(字符串)用*ptr来表示,当碰到中间的空格时,认为这一组结束。第(3)空是如何将字符转成数值,常用的方法就是用这个字符的ASCII码减去字符“0”的ASCII码,所以要填*ptr-‘0’。当转变成数值以后,则把它压入栈push(&s,tnum),则第(4)空填&s,tnum。在第⑤个if语句处,是对那些双目运算不合法(缺少或不匹配)进行检查,若不满足,则返回-1。若合法,则执行switch()语句。得到最后的运算结果值,题目中要求“并通过参数result 返回该值”,所以第(5)空要填*result。

  2.试题参考答案。

  (1)ptr++,或++ptr,或ptr=ptr+1

  (2)0,或tnum = 0

  (3)*ptr–’0’,或*ptr-48

  (4)&s,tnum

  (5)*result

  四、后记

  常言道“熟能生巧”、“打铁还得本身硬”,再好的方法与技巧若没有基础,是发挥不了作用的;如若有了一定的功底,再差的招式也会产生很大的威力,就像金庸小说中杨过的那柄钝剑。程序员考试的难度较大,下午题要求对C语言、数据结构与算法、面向对象的程序设计语言(C++、Java、VB三选一)、流程图比较熟练;如果只看不练,不会有提高。建议大家,到考试大的测试平台多做模拟试题和历年试题,锻炼解题的能力与节奏。

  最后,考试大祝各位考生考出优异的成绩.

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答