栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实用案例:整数四则运算计算器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实用案例:整数四则运算计算器

前言

        很多学习C++的人都想过要编一个计算器吧,有可能你没有想过,但你肯定对这个感兴趣。如果你再CSDN上搜一下,出来的一定是双栈啊,class啊什么的,因此你看不懂,所以你感觉没必要copy下来,因为自己不会。那这期我会带大家深度剖析用简单的字符串就能解决的整数四则运算计算器。

一、整体框架

        ①思路框架

        一个合格的计算器,就必须有处理多项式的功能,那么我们遇到一个多项式,会怎么算呢?比如:3 * 3 + 2 / 2 * 5 - 4 * 10 / 5.

        首先,我们应该想到的是将多项式化为单项式,也就是以+ -为分界线:

        比如:3*3        +        2/2*5        +        4*10/5

        然后依次算出:

        比如:9  +  5  +  8

        最后求和:

        比如:22

        ②代码框架
        代码框架大概是这样的:

        我们用math函数算单项式,main分离多项式。

#include<......>
using namespace std;
int math(string n){
    算单项式;(分离各位)
}
int main(){
    分离多项式;
    依次调用math()
    输出ans;
}
二、 自定义函数math详解

        刚刚我们了解到要用一个自定义math函数来求一个单项式的值,那我们来具体分析一下:

        在程序中计算一个单项式,该怎么做呢?

        设这个字符串变量名为a,则:

char now='*';
string s;
for(int i=0;i

        于是,我们补全代码,就是:

int math(string a){//计算单项式头文件
	stringstream ss;//定义字符串流ss 
	string num;//定义字符串类型变量num 
	int num_;//定义整数类型变量num_ 
	int ans=1;//定义整数类型变量ans并初始化赋值为1 
	char now='*';//定义字符类型变量* 
	for(int i=0;i>num_;//导出至num_ 
			if(now=='*'){//如果之前统计的符号位是* 
				ans*=num_;//*前一个项 
			}else{//否则	
				ans/=num_;///前一个项 
			}
			ss.clear();//清空ss流 
			num="";//清空num 
			now=a[i];//获取当前符号位 
		}else{//如果当前为数字位 
			num+=a[i];//统计当前数字位 
		}
	}
	ss<>num_;//导出至num_ 
	if(now=='*'){//如果之前统计的符号位是* 
		ans*=num_;//*前一个项 
	}else{//否则 
		ans/=num_;///前一个项 
	}
	ss.clear();//清空ss流 
	num="";//清空num 
	return ans;//返回ans 
} 

        怎么样,学费了还是学会了?我们继续来看下一部分吧!

三、main函数详解 

        在main()函数里,重要的任务就是分离多项式,其实也很简单,以加,减符号为间隔就行,再注意一下细节就可以。

        main代码:

int main(){//主函数开始
	string s;//定义字符串类型变量s
	int ans_all=0;//定义整数类型变量ans_all 
	string num;//定义字符串类型变量num 
	cin>>s;//输入s的值
	char now='+';//定义字符类型变量now并初始化赋值为+ 
	for(int i=0;i 
四、完整AC代码 
#include//调用输入输出流头文件 
#include//调用字符串流头文件 
#include//调用C语言输入输出头文件
#include//调用字符串流头文件 
using namespace std;//使用标准名字空间 
int math(string a){//计算单项式头文件
	stringstream ss;//定义字符串流ss 
	string num;//定义字符串类型变量num 
	int num_;//定义整数类型变量num_ 
	int ans=1;//定义整数类型变量ans并初始化赋值为1 
	char now='*';//定义字符类型变量* 
	for(int i=0;i>num_;//导出至num_ 
			if(now=='*'){//如果之前统计的符号位是* 
				ans*=num_;//*前一个项 
			}else{//否则	
				ans/=num_;///前一个项 
			}
			ss.clear();//清空ss流 
			num="";//清空num 
			now=a[i];//获取当前符号位 
		}else{//如果当前为数字位 
			num+=a[i];//统计当前数字位 
		}
	}
	ss<>num_;//导出至num_ 
	if(now=='*'){//如果之前统计的符号位是* 
		ans*=num_;//*前一个项 
	}else{//否则 
		ans/=num_;///前一个项 
	}
	ss.clear();//清空ss流 
	num="";//清空num 
	return ans;//返回ans 
} 
int main(){//主函数开始
	string s;//定义字符串类型变量s
	int ans_all=0;//定义整数类型变量ans_all 
	string num;//定义字符串类型变量num 
	cin>>s;//输入s的值
	char now='+';//定义字符类型变量now并初始化赋值为+ 
	for(int i=0;i 

总结

        今天就到这里了,大家再见,这是我原创的,来之不易,好好理解一下吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号