简单计算器 (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)给定工作部门,显示该部 ...
随机推荐
- SanDisk SecureAccess™ Software
买了一个sandisk 的u盘,配套软件有空可以研究一下. QuickStartGuide_SanDiskSecureAccessV2.0.pdf http://www.sandisk.com/pro ...
- mapreduce 多路输出
Streaming支持多路输出(SuffixMultipleTextOutputFormat) 如下示例: hadoop streaming \ -input /home/mr/data/test_t ...
- c++函数内部可以返回函数内部定义的指针 但是不能返回函数内部定义的数组
1.返回数组 // demo.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<stdio.h> char *m ...
- 使用JProfiler进行内存分析
在最近的工作中,通过JProfiler解决了一个内存泄漏的问题,现将检测的步骤和一些分析记录下来,已备今后遇到相似问题时可以作为参考. 运行环境: Tomcat6,jdk6,JProfiler8 内存 ...
- nginx Location配置总结(转)
本文部分转自:http://cssor.com/nginx-location-configuration.html 一. 开头 语法规则: location [=|~|~*|^~] /uri/ { … ...
- push 栈顶sp=sp-2 可以把立着的栈,向左侧倒下,那么形态就和反汇编时,内存的形态是一样的。小偏移的字节在前, 大的偏移字节在后
push 栈顶sp=sp-2 可以把立着的栈,向左侧倒下,那么形态就和反汇编时,内存的形态是一样的.小偏移的字节在前, 大的偏移字节在后. 1 2 3 4 5 1 2 3 4 5
- mjpg-streamer on raspberrypi
http://sourceforge.net/projects/mjpg-streamer/ svn address svn checkout svn://svn.code.sf.net/p/mjpg ...
- ssh 密钥详解
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(192.168.1.155),B(192.168.1.181).现想 ...
- 152. Maximum Product Subarray
题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...
- 理解Java ClassLoader机制
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader | extension cla ...