没有合适的资源?快使用搜索试试~ 我知道了~
C语言_算数表达式求值_课程设计报告.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 120 浏览量
2022-07-02
01:01:31
上传
评论 1
收藏 142KB DOC 举报
温馨提示
试读
17页
C语言_算数表达式求值_课程设计报告
资源推荐
资源详情
资源评论
目 录
一.概述............................................................................................................................................2
二.总体方案设计............................................................................................................................3
三.详细设计....................................................................................................................................4
四.程序的调试与运行结果说明 ...................................................................................................5
五.课程设计总结............................................................................................................................6
参考文献............................................................................................................................................7
附录.................................................................................................................................................8
一 概述
一、课程设计的目的与要求
本课程设计是为了配合《数据结构》课程的开设,通过设计一个
完整的程序,使学生掌握数据结构的应用,算法的编写,类 C 语言的算
法转换成 C 程序并用 Turbo C2.0 或 Visual C++6.0 上机调试的基本
方法。要求如下:
1.要充分认识课程设计对自己的重要性,认真做好课程设计前的各
项准备工作。
2.既要虚心接受老师的指导,又要充分发挥主观能动性.结合课题,独
立思考,努力钻研,勤于实践,勇于创新。
3.独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,
否则成绩以不及格计。
4.课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,
其成绩按不及格处理。
5.在设计过程中,要严格要求自己,树立严肃,严密,严谨的科学态度,
必须按时,按质,按量完成课程设计。
6.小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好
的互相帮助和团队协作精神。
二、需求分析
本课程设计的课题为表达式求值,要求:
1.用户将表达式原样输入(在表达式结尾加上#),能得出结果
(为减小难度,运算结果的 10 进制形式的值,不超过 longdouble 的
存储范围);
2.输入的数可以为小数(为减小难度,小数的整数与小数部分均
不超过 10 位),负数(如果负数前有运算符,则应将负数括起来),
以及 2 进制,8 进制,10 进制,16 进制的数(为减小难度,数出的
结果都以 10 进制形式表示);
3.运算符号包括()、+、—、*、/;括号可以多重;
二 总体方案设计
1.使用双链表的数据结构表示数据的存储,将用户输入的表
达式以字符形式存入双链表中。
2.对以负数开头、以括号开头、左括号后紧跟负数的特殊情
况作处理。
3.将数与运算符分开;
4.依次找到表达式最内层括号,次内层括号..................每次找
到括号内的表达式,便将其进行只有 加减乘除运算的计算。
结构体类型:
//用来存储字符的结点类型
typedef struct CharNode
{
char c;
struct CharNode *next;
}CharNode;
//用来存储数的结点类型
typedef struct IntNode
{
long double i;
struct IntNode *next;
}IntNode;
//用来存储数的结点类型
typedef struct Node
{
long double n;
struct Node_ys_char *next;
}Node;
//用来存储运算符的结点类型
typedef struct Node_ys_char
{
char c;
struct Node_ys_char *next_c;
struct Node *next;
}Node_ys_char;
三 详细设计
我任务是整个程序的算法设计,以及部分子函数的编写,经过其
他组员编写的子函数的处理,将表达式变为一个普通的表达式,其中
数与运算符已经分开,将这个表达式的头指针传递到我所编写函数中,
运算思想为:找到最内层的一对括号,计算括号间的表达式的值,得
到值之后,用这个值替换掉原始位置上的一对括号,以及其中的表达
式。例如(((6.5-2*2.25)*2-6)/2+1.5)+3#,第一次替换后为
((2*2-6)/2+1.5)+3#,第二次替换后为(-2/2+1.5)+3#,第三次替
换后为 0.5+3#,当没有括号时调用四则运算函数直接计算。
如果一开始输入的表达式中没有括号,则直接调用四则运算函数进行
计算。整个程序的算法思想见流程图。
函数的功能如下:
char Precede(char x,char y)
运算符优先级判断
CharNode *CreatRegister()
输入表达式,并对特殊情况做处
理
Node *StackChange(CharNode *top,int m)
将数与运算符分开,并将其他进
制转化为 10 进制
Node *Compute(Node *p)
作只有加减乘除运算的表达式
求值
Node *GetOutcome(Node *head)
求用户输入表达式的值
main()
主函数
剩余16页未读,继续阅读
资源评论
- m0_736740612022-12-15终于找到了超赞的宝藏资源,果断冲冲冲,支持!
- 2301_774735202023-12-24总算找到了自己想要的资源,对自己的启发很大,感谢分享~
oligaga
- 粉丝: 51
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功