[2]报告正文(4)

2019-01-27 13:35

用两种方式实现表达式自动计算

}

while(c!='\\0') /*直到字符串最后扫描结束*/ { } return 0;

else

c=integer[i++]; /*扫描下一个*/ return 1;

if(c=='.') /*只要有一个字符为小数点就不是整数*/

四、运行结果

在输入表达式没有错误的情况下,可以得到两种算法的运算结果为:

图5 表达式正确时两种算法运行结果图

如果表达式的输入有错误,运行结果分别如下:

- 16 -

用两种方式实现表达式自动计算

五、遇到的问题及解决

这次作业我主要遇到了如下两个问题,其内容与解决方法如下所列: ? 将字符表示的数字转化为浮点数

这个操作的主要目的就是数字是用一串字符表示的,在计算的过程中就要把字符串转化成对应的浮点数,要解决这个问题,首先查找C语言的库函数,其中找到一个可以将字符串转化为浮点数的函数atof()。那么就需要将数值的一串字符存入预定的数组中。

出现这种情况,首先确定后缀表达式是正确的,但在后缀表达式的计算时出现了错误,导致结果出错。检查程序,没有语法错误。逐步打印可以看到的结果,发现在利用atof后用printf函数打印时出现了错误,最后才发现是因为在每一次调用atof时都要将一串字符存入trans数组,可是,每次存储结束时,却忘记将trans数组的索引重新设为0,这就导致了数组中是多个数都存到了数组中,然后就把数组转化为浮点数,导致了浮点数不是应得的数值。只要将trans的数组索引i每次都归零就可以了。

? 在将中缀转化为后缀表达式的过程中,得不到结果

得到用户输入的中缀表达式后调用函数,目的是得到后缀表达式

由于学习C语言的时候使用的编译器是WIN TC而这次编程使用的是VC,询问过用VC的人之后才知道,如果字符串没有结束符号就会“喊烫”。检查程序后才知道,

- 17 -

用两种方式实现表达式自动计算

在将中缀转化为后缀的时候,在最后没有对字符串手动的加入'\\0'来表示结束。因此,在程序的最后加入ch[k]='\\0'; 就可以了。

六、心得体会

通过这次作业,我不仅把大一时所学的C语言复习了一遍,而且还又一遍的深刻理解了C语言,并且对运用C语言编程又有了深一步的了解。当时看书时一看就会,但一遇到编程的问题还是难住了,总感觉没有什么思路,而这次作业,给自己一个不得不动手操作的机会,在十月的这几天中,复习了以前学过的C的基本知识,然后一点一点的摸索,遇到了错误和同学一起讨论,有问题自己想办法解决,最后程序调试出来的时候,会觉得真的很高兴。

我知道,我们现在的水平还很差,要想学习好这门课,在以后就要多动手操作,书上的例题或算法,最好都自己编写程序实现,那样可以加深对算法的理解,也可以提高我们编程的水平。同时,很多的东西理解了,可是在实现的时候还是有很多的错误发生,在以后的练习和实践中,应该多动手,遇到问题多思考,即使方案不是最优的也要想办法自己解决,然后和好的方案进行比较,从中找出自己的不足在哪里。

从这一次作业中我发现了我的不足,今后我会努力改正我的不足。

- 18 -


[2]报告正文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版五年级语文下册[草原]一课一练

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: