C语言课程设计计算机软件Word格式.docx
《C语言课程设计计算机软件Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计计算机软件Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
开始计算按键开始键“ON”;
清零:
计算器刚启动时,或者任何时候键入了清零键,计算器所处得状态。
2)一个操作数:
输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”,“4”后的状态,此时操作数为“34”。
3)运算结果:
键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。
在此时状态如果输入数字,输入数字将作为第一个操作数,开始一次新的计算。
4)一个操作数和一个两元符号:
输入了一个操作数和加减乘除中的一个键后计算器状态,如依次输入“2+”或"
31*5=/"
之后计算器的状态。
5)操作数两元符操作数:
输入了一个操作数,一个加减乘除符号和另一个操作数后所处的状态,如依次输入“30/4”或“3+5=/”后的计算器状态。
6)操作数两元符运算结果:
输入了一个操作数,一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。
7)错误:
执行非法计算后计算器所处的状态。
如执行/0计算或者对负数的开方计算后的状态,比如7/0计算后的结果是“0不能做除数”。
结构图:
准备
显示
输入
接收数据
是否能显示结果
结束
流程图
根据提示选择是否开始
根据提示计算的题目数
进行答题
统计结果给出正确答案
2、进入第一步出现如下信息:
开始测试?
(输入y开始,输入n退出)
选择y后,进入第二步。
用户输入要练习的题数。
第三步:
输出算术式子
用户输入结果进行测试。
第四步:
输出测试结果
屏幕显示出本次测试的基本情况。
2.2、部分模块流程图
程序清单
#include<
stdio.h>
math.h>
malloc.h>
doublejisuan(chara[])
{
inti=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;
charnibo[50],zhan2[50];
doublex,n,l,z=0,zhan3[50];
typedefstruct
doubled1;
intd2;
}dd;
dddata[50];
inttop;
}zhan1;
zhan1*shu;
shu=(zhan1*)malloc(sizeof(zhan1));
shu->
top=0;
while(a[i]!
='
\0'
)
if(a[i]>
0'
&
a[i]<
9'
z=0;
j=i+1;
while(a[j]>
a[j]<
{j++;
}
j--;
for(k=i;
k<
=j;
k++)
{
z=z*10+a[k]-'
;
}
j=j+1;
x=z;
if(a[j]=='
.'
l=1;
i=j+1;
n=pow(0.1,l);
l=l+1;
x=x+n*(a[k]-'
);
elsei=j;
shu->
data[++shu->
top].d1=x;
data[shu->
top].d2=++cnt;
nibo[++t1]='
+shu->
top].d2;
nibo[t1+1]='
elseif(a[i]=='
('
zhan2[++t2]=a[i];
i++;
)'
j=t2;
while(zhan2[j]!
nibo[++t1]=zhan2[j];
t2=j-1;
+'
while(t2>
0&
zhan2[t2]!
nibo[++t1]=zhan2[t2];
t2--;
-'
if(a[i-1]=='
$'
a[0]='
i=0;
elseif(a[i-1]=='
a[i-1]='
a[i-2]='
i=i-2;
else
*'
||a[i]=='
/'
while(zhan2[t2]=='
||zhan2[t2]=='
^'
#'
while(t2>
0)
nibo[++t1]=zhan2[t2];
nibo[t1+1]='
t2--;
j=1;
t3=0;
while(j<
=t1)
if(nibo[j]>
nibo[j]!
)//
for(i=1;
i<
=shu->
top;
i++)
if((int)(nibo[j]-'
)==shu->
data[i].d2)
m=i;
break;
zhan3[++t3]=shu->
data[m].d1;
elseif(nibo[j]=='
zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];
t3--;
zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];
zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];
zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];
zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);
zhan3[t3]=sqrt(zhan3[t3]);
j++;
returnzhan3[t3];
voidmain()
for(;
charx,a[50];
doublejieguo;
inti=0;
a[0]='
printf("
#章
贤
胜\n"
#表示开方,^表示乘方(支持负数)\n"
printf("
请输入表达式无需输入=号
直接回车可输出答案
退出请输入q\n\n"
scanf("
%c"
&
x);
if(x=='
q'
)break;
while(x!
\n'
a[++i]=x;
scanf("
a[i+1]='
jieguo=jisuan(a);
\n"
结果为:
%lf"
jieguo);
\n\n\n"
退出请输入q继续请直接输入\n\n"
测试数据:
1.输入“1+2”按Enter可得到答案
2输入“5-4”按Enter可得到答案
3.输入“-12*3”按Enter可得到答案
4.输入“16/4”按Enter可得到答案
5.输入“4#(或#4)”按Enter可得到答案
6.输入“5^(-2)”按Enter可得到答案
7.输入“q”按Enter显示“pressanykeytocontinue”退出程序
小结及收获和体会:
本程序在刚开始调试是有许多错误,但在我的努力及同组同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。
在刚开始的几次调试中曾出现过不能运行,不能输出正确结果等等问题。
经过我的努力和同学的帮助,这些问题得到克服,并且使程序的功能也得到了一定的完善。
现在它能正确的进行四则运算及一些高级的开方运算。
在本次设计过程中,不仅复习课本上所学的知识,还通过查资料问同学学到了许多书本上没有的知识。
从而启发自我,要想写好程
序,在学好课本知识的同时还要多读和程序有关的一些书籍,同时还要多动脑子,尽量把所学的知识综合起来运用,力争写出完美的程序。
除此之外,我还得到了一些有用的教训:
写程序使必须要细心,不能出错一个字符标点,就连全角半角也的注意。
在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心浮气躁,否则修改之后还会有新的错误。
感谢:
能够完成这次课程设计必须感谢C语言老师汤萍萍(是她教会了我C语言这门课程),江婷,张磊同学(她们帮我修改该了几处重要的错误,同时启发我完善了该程序的功能)
5.参考书目
[1]谭浩强,C程序设计教程,清华大学出版社,2007年
[2]赵永哲,李雄飞,戴秀英编著,《C语言程序设计》,科学出版社,2003年
[3]夏宽理,赵子正编著,《C语言程序设计》,中国铁道出版社,2006年
[4]谭浩强编著,《C程序设计》,清华大学出版社,1991年
[5]GaryJ.Bronson,AFirstBookofANSIC(FourthEdition),PublishingHouseofElectronicsIndustry,2006.
[6]AlKelley,IraPohl,ABookonC:
ProgramminginC(FourthEdition),ChinaMachinePress,2004.
[7]BrianW.Kernighan,DennisM.Ritchie,TheCProgrammingLanguage,ChinaMachinePress,2006.
物理与电子信息学院课程设计评定意见
指导教师评语
主要内容包括:
设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。
成绩:
签名:
年 月 日
注:
本页与上一页用A3纸套印成封面和封底,课程设计报告正文用A4纸打印然后装订。