简单计算器 (c语言课程设计)
可以实现简单的加减乘除四则运算
#include<stdio.h>
#include<string.h>
#define MAX 10100
int main()
{
int j,i,s,t,top,wrong,a;
double n,m,sum;
char fu,kongge;
double zhan[MAX];
printf("-----------------------欢迎使用简单计算器-----------------------\n");
printf("输入1 开始计算\n\n");
printf("输入0 退出\n");
scanf("%d",&a);
if(a==1)
{
printf("------请输入所要求的式子-----------------------\n");
printf("------每个数据之间用空格隔开,例如1 + 2 + 3----\n");
printf("------点击回车代表输入结束,并输出结果---------\n");
while(scanf("%lf",&n)!=EOF)
{
memset(zhan,0,sizeof(zhan));
kongge=getchar();
top=0;
zhan[top++]=n;
if(zhan[0]==0&&kongge=='\n')
{
printf("------------------------谢谢使用--------------------------------\n");
break;
}
scanf("%c",&fu);
kongge=getchar();wrong=0;
while(scanf("%lf",&n)!=EOF)
{
if(fu!='*'&&fu!='/'&&fu!='+'&&fu!='-')
{
printf("您的输入有误,请重新输入\n");
wrong=1;
break;
}
if(fu=='*') //如果运算符是乘号或者除号则直接运算并且将参与运算的栈中的因式删去
{ //将得到的结果存入栈中
m=zhan[top-1];
m*=n;
zhan[top-1]=m;
}
else if(fu=='/')
{
m=zhan[top-1];
m/=n;
zhan[top-1]=m;
}
else if(fu=='+') //如果是加法则将其存入栈中
zhan[top++]=n;
else if(fu=='-')//如果是减法将其相反数存入栈中
zhan[top++]=-n;
kongge=getchar();
if(kongge=='\n')
break;
scanf("%c",&fu);
}
if(wrong)
continue;
sum=0;
for(i=0;i<=top;i++)
{
sum+=zhan[i];
}
printf("您所要求的结果为:\n");
printf("%.2lf\n",sum);
}
}
else if(a==0)
printf("------------------------谢谢使用--------------------------------\n");
return 0;
}
通过调用子函数实现(感觉这样容易理解)
#include<stdio.h>
#include<string.h>
#define MAX 10100
double zhan[MAX];
int j,i,s,t,top,a;
double n,m,sum;
char fu,kongge;
int d,wrong;
void jieshao1()
{
printf("-----------------------欢迎使用简单计算器-----------------------\n\n");
printf("-------输入1 开始计算-------\n\n");
printf("-------输入0 退出-----------\n");
}
void jieshao2()
{
printf("------请输入所要求的式子-----------------------\n");
printf("------每个数据之间用空格隔开,例如1 + 2 + 3----\n");
printf("------点击回车代表输入结束,并输出结果---------\n");
}
void zhu1()
{
memset(zhan,0,sizeof(zhan));
kongge=getchar();
top=0;
zhan[top++]=n;
if(zhan[0]==0&&kongge=='\n')
{
printf("------------------------谢谢使用--------------------------------\n");
d=0;
return ;
}
}
void zhu2()
{
if(fu!='*'&&fu!='/'&&fu!='+'&&fu!='-')
{
printf("您的输入有误,请重新输入\n");
wrong=1;
d=0;
return ;
}
if(fu=='*') //如果运算符是乘号或者除号则直接运算并且将参与运算的栈中的因式删去
{ //将得到的结果存入栈中
m=zhan[top-1];
m*=n;
zhan[top-1]=m;
}
else if(fu=='/')
{
m=zhan[top-1];
m/=n;
zhan[top-1]=m;
}
else if(fu=='+') //如果是加法则将其存入栈中
zhan[top++]=n;
else if(fu=='-')//如果是减法将其相反数存入栈中
zhan[top++]=-n;
kongge=getchar();
if(kongge=='\n')
{
d=0;
return ;
}
}
void shuchu()
{
sum=0;
for(i=0;i<=top;i++)
{
sum+=zhan[i];
}
printf("您所要求的结果为:\n");
printf("%.2lf\n",sum);
}
int main()
{
jieshao1();//输出第一个描述 即如何使用
scanf("%d",&a);
if(a==1)
{
jieshao2();//介绍第二个描述 依然是如何使用
while(scanf("%lf",&n)!=EOF)
{
d=1;
zhu1();//对变量进行初始化
if(d==0)
break;
scanf("%c",&fu);
kongge=getchar();wrong=0;
while(scanf("%lf",&n)!=EOF)
{
d=1;
zhu2();//此题主结构 即计算过程
if(d==0)
break;
scanf("%c",&fu);
}
if(wrong)
continue;
shuchu();//输出结果
}
}
else if(a==0)
printf("------------------------谢谢使用--------------------------------\n");
return 0;
}
这个代码主函数里边比较简便 看起来感觉美观
#include<stdio.h>
#include<string.h>
#define MAX 10100
double zhan[MAX];
int j,i,s,t,top,a;
double n,m,sum;
char fu,kongge;
int d,wrong;
void jieshao1()
{
printf("-----------------------欢迎使用简单计算器-----------------------\n\n");
printf("-------输入1 开始计算-------\n\n");
printf("-------输入0 退出-----------\n");
}
void jieshao2()
{
printf("------请输入所要求的式子-----------------------\n");
printf("------每个数据之间用空格隔开,例如1 + 2 + 3----\n");
printf("------点击回车代表输入结束,并输出结果---------\n");
}
void zhu()//这个是此题的主体部分
{
jieshao1();//输出第一个描述 即如何使用
scanf("%d",&a);
if(a==1)
{
jieshao2();//介绍第二个描述 依然是如何使用
while(scanf("%lf",&n)!=EOF)
{
memset(zhan,0,sizeof(zhan));
kongge=getchar();
top=0;
zhan[top++]=n;
if(zhan[0]==0&&kongge=='\n')
{
printf("------------------------谢谢使用--------------------------------\n");
break;
}
scanf("%c",&fu);
kongge=getchar();wrong=0;
while(scanf("%lf",&n)!=EOF)
{
if(fu!='*'&&fu!='/'&&fu!='+'&&fu!='-')
{
printf("您的输入有误,请重新输入\n");
wrong=1;
break;
}
if(fu=='*') //如果运算符是乘号或者除号则直接运算并且将参与运算的栈中的因式删去
{ //将得到的结果存入栈中
m=zhan[top-1];
m*=n;
zhan[top-1]=m;
}
else if(fu=='/')
{
m=zhan[top-1];
m/=n;
zhan[top-1]=m;
}
else if(fu=='+') //如果是加法则将其存入栈中
zhan[top++]=n;
else if(fu=='-')//如果是减法将其相反数存入栈中
zhan[top++]=-n;
kongge=getchar();
if(kongge=='\n')
break;
scanf("%c",&fu);
}
if(wrong)
continue;
sum=0;
for(i=0;i<=top;i++)
{
sum+=zhan[i];
}
printf("您所要求的结果为:\n");
printf("%.2lf\n",sum);
}
}
else if(a==0)
printf("------------------------谢谢使用--------------------------------\n");
}
int main()
{
zhu();
return 0;
}
简单计算器 (c语言课程设计)的更多相关文章
- Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)
#Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...
- 学生管理系统-火车订票系统 c语言课程设计
概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...
- C语言课程设计—图书管理系统
这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...
- C语言课程设计(成绩管理系统)
C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...
- C语言课程设计
目录 实现目的 游戏玩法介绍 实现流程与作品架构 任务列表及贡献度 总结感想 作品源码与仓库地址(附页) 资料引用与出处(附页) 实现目的 2048,作为一款极其经典的游戏,从发行到现在,已经有了极多 ...
- 大一C语言课程设计——班级档案管理系统
记录我在大一第二学期期末做的C语言课程毕业设计 1. 班级档案管理系统运用到的主要结构体 typedef struct birthday //出生日期{int year;int month;int d ...
- C语言课程设计大整数运算
该大整数运算系统用于对有符号的位数不超过500位的大整数进行加.减.乘.除四则运算和计算N(0<=N<=10000)的阶乘.注意事项 : 1.操作期间,进行四则运算时若大整数为正数请 ...
- C语言课程设计——电影院订票系统
1. 课题简介 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户登录系统后,实现电影放映厅信息管理和电 ...
- C语言课程设计 Win32应用程序
问题描述: 请设计一个职工信息管理程序,以方便人事部门对本单位职工的管理,该程序应该具有以下功 能: (1)能从键盘输入职工的信息 . (2)给定职工号,显示职工的信息. (3)给定工作部门,显示该部 ...
随机推荐
- SpringMVC的controller方法中注解方式传List参数使用@RequestBody
在SpringMVC控制器方法中使用注解方式传List类型的参数时,要使用@RequestBody注解而不是@RequestParam注解: //创建文件夹 @RequestMapping(value ...
- range([start], stop[, step]):产生一个序列,默认从0开始
range([start], stop[, step]):产生一个序列,默认从0开始 >>> l = range(10) >>> l [0, 1, 2, 3, 4, ...
- push 栈顶sp=sp-2 可以把立着的栈,向左侧倒下,那么形态就和反汇编时,内存的形态是一样的。小偏移的字节在前, 大的偏移字节在后
push 栈顶sp=sp-2 可以把立着的栈,向左侧倒下,那么形态就和反汇编时,内存的形态是一样的.小偏移的字节在前, 大的偏移字节在后. 1 2 3 4 5 1 2 3 4 5
- Android 在AlertDialog里添加布局控件
android里很多时候需要在弹出的AlertDialog里有自己的控件,填写信息,比如弹出一个登陆对话框 那么首先你就要创建这么一个布局的inputphonenum.xml文件了 <?xml ...
- Linux下删除大量文件
主要参考了http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux 首先建立50万个文件 ➜ test ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(1)
说明:[Maven实战]一书还介绍了怎么样手工创建Maven工程,学习这本书是为了能尽快在工作中使用,就忽略了手工建工程的部分 如果想了解这部分的内容,可以自己看看书 开始: 1.新建一个maven工 ...
- bzoj2527
首先环可以变成链来处理,对于l>r的情况就是修改区间[1,r],[l,mx]然后不难想到整体二分,二分答案k,然后算1~k场流星雨对国家的贡献然后判定将国家划分变成子问题解决,没什么难的终于不是 ...
- Windows系统中IIS 6.0+Tomcat服务器环境的整合配置过程
IIS6.0+Tomcat整合 1.首先准备工作 Windows IIS 6.0 apache-tomcat-7.0.26.exe tomcat-connectors-1.2.33-windows-i ...
- Win32下 Qt与Lua交互使用(一):配置Qt下Lua运行环境
偶然间看到Lua这种脚本语言,有点兴趣,简单学习了一下. 发现Lua与C++之间可以实现非常强的交互性.Lua中可以使用C++中的函数,C++中也可以使用Lua中的函数.由此可以引发出很多奇思妙想了. ...
- mac 软件安装
[Mac]PS CC 软件下载及破解的详细方法 为github帐号添加SSH keys 在mac下,打开文件都是“Smart Adobe CC Blocker v1.0”已损坏,打不开 brew ma ...