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

#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. AES加密算法原理

    随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES[1].经过三轮的筛选 ...

  2. delphi xe5 android 使用样式(风格)

    1.在界面上添加 TStyleBook 控件 2.点击Resource 选择xe5程序安装带的几个风格的其中之一,路径存放在: C:\Program Files\Embarcadero\RAD Stu ...

  3. java.util.List

    /* * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...

  4. 1090-Rock, Paper, Scissors

    描述 Rock, Paper, Scissors is a classic hand game for two people. Each participant holds out either a ...

  5. ANDROID_MARS学习笔记_S01原始版_021_MP3PLAYER001_下载mp3文件

    一.简介 1.在onListItemClick()中new Intent,Intent以存储序列化后的mp2Info对象作为参数,启动serivce 2.DownloadService在onStart ...

  6. UDP模块(黑胶体)

    UDP模块是采用PIP封装技术的U盘半成品模块,直接加上外壳,就是成品U盘. 它有以下特点: 防水.防尘.防震. 一体WAFER封装技术. 薄.轻.时尚. 产品装配方便.简单. 产品标准化,适合客户在 ...

  7. 对于Unicode编码在js中和html中

    1.对于Unicode在js中 var a="\u9102WQW121" 中"\"是需要转义的,直接在页面输出的效果

  8. Python标准库之urllib,urllib2

    urllib模块提供了一些高级接口,用于编写需要与HTTP服务器交互的客户端.典型的应用程序包括从网页抓取数据.自动化.代理.网页爬虫等. 在Python 2中,urllib功能分散在几个不同的库模块 ...

  9. IPv6 tutorial – Part 6: Site-local addresses and link-local addresses

    https://4sysops.com/archives/ipv6-tutorial-part-6-site-local-addresses-and-link-local-addresses/ In ...

  10. Oracle Form Developer: Folder FRM-99999 Error 14212

    Question: 做FOLDER文件夹功能,打开FORM错误提示: FRM-99999:出现1412错误.有关该错误的详细信息,请参阅发行说明文件(relnotes) Answer: 原因是FOLD ...