可以实现简单的加减乘除四则运算

#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语言课程设计)的更多相关文章

  1. Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)

    #Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...

  2. 学生管理系统-火车订票系统 c语言课程设计

    概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...

  3. C语言课程设计—图书管理系统

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...

  4. C语言课程设计(成绩管理系统)

    C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...

  5. C语言课程设计

    目录 实现目的 游戏玩法介绍 实现流程与作品架构 任务列表及贡献度 总结感想 作品源码与仓库地址(附页) 资料引用与出处(附页) 实现目的 2048,作为一款极其经典的游戏,从发行到现在,已经有了极多 ...

  6. 大一C语言课程设计——班级档案管理系统

    记录我在大一第二学期期末做的C语言课程毕业设计 1. 班级档案管理系统运用到的主要结构体 typedef struct birthday //出生日期{int year;int month;int d ...

  7. C语言课程设计大整数运算

    该大整数运算系统用于对有符号的位数不超过500位的大整数进行加.减.乘.除四则运算和计算N(0<=N<=10000)的阶乘.注意事项 :    1.操作期间,进行四则运算时若大整数为正数请 ...

  8. C语言课程设计——电影院订票系统

    1. 课题简介 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户登录系统后,实现电影放映厅信息管理和电 ...

  9. C语言课程设计 Win32应用程序

    问题描述: 请设计一个职工信息管理程序,以方便人事部门对本单位职工的管理,该程序应该具有以下功 能: (1)能从键盘输入职工的信息 . (2)给定职工号,显示职工的信息. (3)给定工作部门,显示该部 ...

随机推荐

  1. JNA—JNI终结者

    JNA—JNI终结者 介绍 给大家介绍一个最新的访问本机代码的Java框架—JNA. JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的J ...

  2. java连接数据库时出现如下错误:

    java.lang.ClassNotFoundException: com.mysql.jdbc.driver at org.apache.catalina.loader.WebappClassLoa ...

  3. PHP漏洞全解(六)-跨网站请求伪造

    本文主要介绍针对PHP网站的跨网站请求伪造.在CSRF所有攻击方式中包含攻击者伪造一个看起来是其他用户发起的HTTP 请求,事实上,跟踪一个用户发送的HTTP请求才是攻击者的目的. CSRF(Cros ...

  4. HDU 2986 Ballot evaluation(精度问题)

    点我看题目 题意 : 给你n个人名,每个名后边跟着一个数,然后m个式子,判断是否正确. 思路 :算是一个模拟吧,但是要注意浮点数容易丢失精度,所以要好好处理精度,不知道多少人死在精度上,不过我实在是不 ...

  5. Ubuntu14.04下如何开启Mysql远程访问

    近来开发项目的需要,需要开启服务器下的Mysql远程访问权限(方法有很多),学习了一下,这里只演示个人觉得比较简单的一种方法. 对用户授权方法: 1. 在目录/etc/mysql下找到my.cnf,用 ...

  6. 135. Candy

    题目: There are N children standing in a line. Each child is assigned a rating value. You are giving c ...

  7. android viewpager change adapter ---在使用viewpager设置新的adapter的时候发现页面还是显示旧的adapter中的值

    有一个需求是当用户选择navigationview中的某一项时,右边的viewpager需要动态切换不同的adapter 发现直接setAdapter没有任何反应,加载的数据还是旧的数据 折腾了半天只 ...

  8. java的异常处理机制(try…catch…finally)

    1 引子try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话.不信 ...

  9. 添加service到SystemService硬件服务

    添加service到SystemService: 添加硬件服务. 创建时间:2015年3月9日(星期一) 晚上11:07 | 分类:硬件驱动Android | 天气: 修改时间:2015年3月10日( ...

  10. Form.KeyPreview 属性2

    在使用.Net Framework编写窗体应用程序的时候,有时有需要响应窗体的按键消息. 当窗体上没有任何其他控件的时候,窗体是可以直接响应这些消息的. 但是当窗体上有其他控件时,会发现窗体再也不会响 ...