(C语言课程设计计算机软件.doc
文本预览下载声明
《C语言课程设计》
课程设计问题描述:通过查找资料以及老师的讲解和指导下,运用C语言编程课本所学过的知识设计一个计算器软件,并要求能够实现加减乘除功能;要求单字符输入即输入的数字或符号不需要按回车键具有一定的容错能力按回车键或等号键则显示计算结果。通过课程设计,初步锻炼运用所学基础知识解决实际问题的能力,加强学生研发调试程序的能力,掌握软件开发的基本过程和基本方法以及良好的编程风格,培养在软件开发中相互合作的团队意识。
基本要求:计算器软件
能够实现加减乘除功能;
要求单字符输入,即输入的数字或符号不需要按回车键;
具有一定的容错能力;
按回车键或等号键则显示计算结果。
系统分析和设计:
1) 刚启动计算器时的状态:开始计算按键开始键“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、部分模块流程图
程序清单
#includestdio.h
#includemath.h
#includemalloc.h
double jisuan(char a[])
{
int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;
? ? char nibo[50],zhan2[50];
double x,n,l,z=0,zhan3[50];
typedef struct
{
??? ? ? double d1;
int d2;
}dd;
typedef struct
{
dd data[50];
int top;
? ? }zhan1;
zhan1 *shu;
shu=(zhan1 *)malloc(sizeof(zhan1));
shu-top=0;
?? while(a[i]!=\0)
{
if(a[i]=0a[i]=9)
{
?? z=0;
?? j=i+1;
?? while(a[j]=0a[j]=9)
?? {j++;}
?? j--;
?? for(k=i;k=j;k++)
?? {
???? ? ? z=z*10+a[k]-0;
?? }
?? j=j+1;
?? x=z;
?? ? ? if(a[j]==.)
?? {
? ? l=1;
? ? i=j+1;
? ? j=i+1;
? ? while(a[j]=0a[j]=9)
? ? {j++;}
?? ? ? j--;
?? ? ? for(k=i;k=j;k++)
? ? {
?? ? n=pow(0.1,l);
?? ? l=l+1;
?????? ? ? x=x+n*(a[k]-0);
? ? }
? ? i=j+1;
?? }
?? else i=j;
?? shu-data[++shu-top].d1=x;
?? shu-data[shu-top].d2=++cnt;
?? nibo[++t1]=0+shu-data[shu-top].d2;
?? nibo[t1+1]=\0;
}
else if(a[i]==()
{
?? zhan2[++t2]=a[i];
?? i++;
}
else if(a[i]=
显示全部