- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE
PAGE10
目录
TOC\o1-3\h\z\u一、设计任务说明 1
二、设计方案 1
1、函数 1
2、流程图 3
3、源程序分析 3
三、测试分析 11
四、总结 12
五、参考文献 12
设计任务说明
1、设计题目:带括号的四则运算(支持小括号、优先级)。
2、整个系统均用C语言实现。
3、通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。
4、通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函数等。
5、通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。提高程序开发能力。
二、设计方案
1、函数
1.1intcheck(char*c)
输入参数:
char*c:输入的字符串
返回参数:
0:字符串中有不符合规定的字符
1:字符串字符符合规定,没有不符合规定的字符.
功能:
检查字符串中有否除了0-9,+,-,*,/,(,),之外的其他字符,
如果有,则返回0,表示出现错误。
若没有,则返回1,表式字符串符合规定。
1.2voidmove(char*f,double*s,intp)
输入参数:
char*f:运算符数组
double*s:数值数组
intp:当前运算符数组位置。
功能:将当前已经完成运算的运算符消去,同时将数值数组的位置调整以进行下一次运算。
传入值p若为3
则当前符号的数组位置为3.
f[3]=f[3+1]f[len-2]=f[len-1]f[len-1]=\0;s[i]=s[i+1]s[len-1]=s[len]因为数值比运算符多一个。
1.3doubleconvnum(char*c)
输入参数:
char*c:由数字和小数点组成的字符,用以转换成double型的数值。
返回参数:
num:返回转换好的值。
功能:将输入的字符串先将其小数点以前的部分复制到temp[]数组中,若有小数点,则将小数点之后的数值,也就是小数部分先进行计算,值存入num中
计算完成后,再对整数部分进行计算,值加上小数部分的值,存入num中。
1.4doublegood(char*c)
输入参数:
char*c:即将进行运算的字符串型数学表达式。如3.5+(2*3/5)
返回参数:
s[0]:计算结果将放入s[0]中
功能:将输入的字符串中的数字分别调用convnum(char*c)函数进行数值变换,再将其依次存入doulbes[i]中,将加减乘除运算符依次存入字符串符号数组charf[i]中,然后如果遇到括号,则将括号内的字符串存入另一字符数组中,然后用此good(char*c)递归函数进行递归运算。然后根据先乘除,后加减的顺序对已存入数组的数值根据存入字符串符号数组的运算符进行运算。结果存入s[0]中。
返回最终结果。
2、流程图main函数strcmp函数check函数good函数convnum函数move函数
main函数
strcmp函数
check函数
good函数
convnum函数
move函数
strlen函数
图2-1
结束sum=good(str)
结束
sum=good(str)
开始
输入str
P=strcmp
P是否为0
P=check(str)
P是否为0
Y
N
Y
N
图2-2
3、源程序分析
#includestdio.h/*库文件包含*/
#includestring.h/*用于字符串操作*/
#includestdlib.h/*用于exit函数*/
intcheck(char*c)
{
intk=0;
while(*c!=\0)
{
if((*c=0*c=9)||*c==+||*c==-||*c==*||*c==/||*c==.||*c==(||*c==))
{
}
else
{
printf(inputerror,therehavethecharnotthemathexpressionchar!\n);
return0;
}
if(*c==()
k++;
elseif(*c==))
k--;
c++;
}
if(k!=0)
{
printf(inputerror,thereisn
文档评论(0)