电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C语言计算器程序设计报告

C语言计算器程序设计报告_第1页
1/10
C语言计算器程序设计报告_第2页
2/10
C语言计算器程序设计报告_第3页
3/10
C 语言集中上机实验报告 一、 需求分析 (1) 制作一个计算器,能够计算四则混合运算以及乘方和开方,并显示出正确的结果。 (2) 程序能根据运算符的高低进行运算(开放符号置左置右不影响正常运算) (3) 可以输入括号 二、 设计思路 (1) 运用栈以及结构体来实现,将数字与运算符分别放在结构体与栈里面,将栈以及结构体里的字符数值一一匹配计算,将得出的结果保存到另一个栈里(z han3)。 (2) 开始,对所输入的字符串进行转化,把运算符存放在 z han2 里面,把数值存放到 data 结构体里面,然后进行运算和操作。 (3) 运用循环来实现无限输入,用数组 nibo 来跟踪整个过程,每次运算后将值置空,若检测到空,计算得出结果,退出输入 q。 三、 流程图 四、 主程序段 #include #include #include double jisuan(char a[]) { int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo[50],zhan2[50];//zhan2 存放的是运算符 double x,n,l,z=0,zhan3[50];//暂存结果 typedef struct { 括号 读 取 表 达式 读 取 括 号里 的 表 达式 乘 除 方运算 Y NY Y 乘 除 方运算 NN计算乘除 计算加减 计算乘除 计算加减 转到括号外 输出结果 计算方 计算方 开始 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]>='0'&&a[i]<='9') { z=0; j=i+1; while(a[j]>='0'&&a[j]<='9') {j++;} j--; for(k=i;k<=j;k++) { z=z*10+a[k]-'0'; } j=j+1;//j 跳到数字后一位 x=z; if(a[j]=='.')//如果是小数的话就把小数和整数一起加上 { l=1; i=j+1; j=i+1; while(a[j]>='0'&&a[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'; }//如果是数字那么就保存到结构体里 的dd 数组里的 第二个成员里 else if(a[i]=='(') { zhan2[++t2]=a[i]; i++; } else if(a[i]==')') { j=t2; while(zhan2[j]!='(') { nibo[++t1]=zhan2[j]; nibo[t1+1]='\0'; j--; } t2=j-1; i++; } else if(a[i]=='...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

C语言计算器程序设计报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部