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

程序实习报告书

起止日期:

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)# ;

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

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

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

4.1需求分析

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

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

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

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

4.2总体设计

421抽象数据类型定义

ADT Stack{

数据对象:

D={ ai |ai € ElemSet,i=1,2,,…n, n三 0}

数据对象:

R1={< 玄起/心二耳亡 D ,i=2,?;? n}

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

基本操作:

In itStack(&S)

操作结果:构造一个空栈So

GetTop(S)

初始条件:栈S已存在。

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

Push(&S, ch)

初始条件:

栈S已存在。

操作结果:

插入元素ch为新的栈顶元素。

Pop(&S)

初始条件:

栈S已存在。

操作结果:

删除S的栈顶元素。

In(ch)

操作结果:

判断子符是否是运算符,运算符即返回1o

Precede(c1, c2)

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

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

Operate(a,op,b)

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

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

nu m( n)

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

EvalExpr()

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

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

}ADT Stack

4.2.2函数模块说明

为实现算符优先算法,可以使用两个工作栈。一个称做OPTR,用以寄存运算符;另一个

称做OPND,用以寄存操作数或运算结果。算法的基本思想是:

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

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

423主函数流程图

424函数模块调用关系

I

I

主程序模块

栈的建立及初始化模块

O

「—

判断输入是否结束模块

丿

厂▽’

r

判断字符类型模块

输入结束输岀结果

-J

匕 、,V

运算数进栈模块运算符优先级比较模块

q3

运算符进栈模块运算符运算数出栈模块

I丿P ■

~TJ~

运算模块

425运算符间的优先关系

^1^^2

+

-

*

/

(

)

#

+

>

>

>

<

<

>

>

-

>

>

>

<

<

>

>

*

>

>

>

>

<

>

>

/

>

>

>

>

<

>

>

(

<

<

<

<

<

=

)

>

>

>

>

>

>

#

<

<

<

<

<

=

4.3详细设计

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

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

//栈的顺序存储表示

#define STACK_INIT_SIZT 100;

#define STACKINCREMENT 10

typedef struct

SEIemType *base;

SEIemType *top;

int stacksize;

} SqStacK

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

Status In itStack(SqStack & S){

si

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值