C语言程序项目计划书,c语言程序实习计划书.doc

程序实习报告书

起止日期: 2012 年 6月 18 日 至 2012 年 6月 29日

学 号: 2011272086 .

班 级: 通 信 113 .

姓 名: 李 成 元 .

指导教师: 赵金胜 刑延超 .

通信与电子工程学院

2012年 6月 30日

1 设计时间

2012.06.18-2012.06.29

2 设计目的

1、实习目的

⑴ 熟练掌握和系统理解C语言的基本知识点:数据类型、程序结构、函数、数组、结构体、文件等。

⑵ 学会用C语言解决实际问题的方法

⑶ 掌握较大型程序设计及调试的一般步骤和方法。

3设计任务

综合运用C语言程序设计课程的主要知识设计一个计算器程序,利用算符优先关系,实现对算术四则混合运算表达式的求值。

⑴输入的形式:算术表达式,以井号“#”结束。例如2*(3+4)#;

包含的运算符只能有'+' 、'-' 、'*' 、'/' 、'('、 ')';

⑵输出的形式:运算结果,例如Answer is:14;

⑶程序所能达到的功能:对算术表达式求值并输出结果。

4.1需求分析

1、程序所能达到的功能:能够处理以字符序列的形式输入的不含变量的实数表达式,正确处理负数与小数,判断表达式是还语法正确(包含分母不能为零的情况),正确实现对算术四则混合运算表达式的求值,能够将计算中遇到的问题和结果以文件的形式予以存储。

2、输入的形式和输入值的范围:以字符串的形式输入表达式,以“#”结束。

3、输出的形式:在计算过程中遇到的问题或最终的答案将显示在屏幕上,同时所计算的表达式的最终的结果也将保存在文件中。

4、测试数据:输入“3*(7-2)#”时,输出“15.000000”,测试正确;输入“!(9-2)#”时,输出“输入错误!”,测试正确。

4.2总体设计

4.2.1抽象数据类型定义

ADT Stack{

数据对象:D={ |∈ElemSet,i=1,2,…,n, n≧0}

数据对象:R1={<>|,,i=2,…,n}

约定端为栈顶,端为栈底。

基本操作:

InitStack(&S)

操作结果:构造一个空栈S。

GetTop(S)

初始条件:栈S已存在。

操作结果:用P返回S的栈顶元素。

Push(&S,ch)

初始条件:栈S已存在。

操作结果:插入元素ch为新的栈顶元素。

Pop(&S)

初始条件:栈S已存在。

操作结果:删除S的栈顶元素。

In(ch)

操作结果:判断字符是否是运算符,运算符即返回1。

Precede(c1, c2)

初始条件:c1,c2为运算符。

操作结果:判断运算符优先权,返回优先权高的。

Operate(a,op,b)

初始条件:a,b为整数,op为运算符。

操作结果:a与b进行运算,op为运算符,返回其值。

num(n)

操作结果:返回操作数的长度。

EvalExpr()

初始条件:输入表达式合法。

操作结果:返回表达式的最终结果。

}ADT Stack

4.2.2函数模块说明

为实现算符优先算法,可以使用两个工作栈。一个称做OPTR,用以寄存运算符;另一个称做OPND,用以寄存操作数或运算结果。算法的基本思想是:

(1)首先置操作数栈为空栈,表达式起始符“#”为运算符栈底元素

(2)依次读入表达式中每个字符,若是操作数则进OPND栈,若是运算符则和OPTR栈的栈顶运算符比较优先权后作相应操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为“#”)。

4.2.3主函数流程图

4.2.4函数模块调用关系

4.2.5运算符间的优先关系

θ1 θ2

+

-

*

/

(

)

#

+

>

>

>

<

<

>

>

-

>

>

>

<

<

>

>

*

>

>

>

>

<

>

>

/

>

>

>

>

<

>

>

(

<

<

<

<

<

=

)

>

>

>

>

>

>

#

<

<

<

<

<

=

4.3详细设计

4.3.1数据类型的定义及基本操作

//===== ADT Stack的表示与实现 =====

//----- 栈的顺序存储表示 -----

#define STACK_INIT_SIZT 100;

#define STACKINCREMENT 10

typedef struct{

SElemType *base;

SElemType *top;

int stacksize;

}SqStack;

//----- 基本操作的算法描述 -----

Status InitStack(SqStack &S){

S.base = (SElemType * )malloc(STACK_INIT_SIZE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值