【C语言项目实训】四则计算器V1.0(忽略运算符优先级)

文章介绍了一个实现简单四则运算表达式计算的程序,限定输入为不超过80个字符且所有数字为一位整数,不考虑运算符优先级,且只支持整除。程序通过字符数组存储表达式,将字符转换为数字并进行运算,主要包含数字字符转数字和两个操作数间运算的函数。代码目前仅支持一位数的运算表达式。
摘要由CSDN通过智能技术生成

        项目要求:输入一行字符数量不超过80的四则运算表达式,字符中所有的数都是一位整数,在不考虑运算符优先级的情况下,计算该表达式的最后的值。(除法仅考虑整除)

        在实现该计算器之前,我理清楚了几个关键点:

                1.用什么数据类型存储表达式?

                        答:长度为80的字符数组。

                2.如何将数字字符转成数字?

                        答:若有一数字字符ch,那么该字符可通过ch-48或者ch-‘0’即可转成数字。

        那么该如何进行表达式的运算呢?根据项目要求,我们不妨把长的四则运算表达式想象成是由一个简单的四则运算表达式逐渐整体放大形成长的表达式,可以用下面这个图来理解:

        好了,那么我们就必不可少的需要写两个函数来帮助完成这个V1.0版本的四则计算器。

        首先是数字字符转数字的函数:

/*
	函数功能:将数字字符转换成数字 
*/
int Toint(char ch)
{
	int re;
	re=ch-'0';
	return re;
}

 然后就是实现两个操作数之间的运算的函数:

/*
	函数功能:传入两个操作数a和b,还有一个操作符ch
			  返回a与b之间进行ch运算后的结果 
*/ 
int Calculate(int a,char ch,int b){
	int res;
	switch(ch)
	{
		case '+':
			res=a+b;
			break;
		case '-':
			res=a-b;
			break;
		case '*':
			res=a*b;
			break;
		case '/':
			res=a/b;
			break;
	}
	return res;
}

接下来就要在主函数中来写代码了。

下面是完整的实现代码:

#include<stdio.h>
#include<string.h>
/*
	函数功能:传入两个操作数a和b,还有一个操作符ch
			  返回a与b之间进行ch运算后的结果 
*/ 
int Calculate(int a,char ch,int b){
	int res;
	switch(ch)
	{
		case '+':
			res=a+b;
			break;
		case '-':
			res=a-b;
			break;
		case '*':
			res=a*b;
			break;
		case '/':
			res=a/b;
			break;
	}
	return res;
}

/*
	函数功能:将数字字符转换成数字 
*/
int Toint(char ch)
{
	int re;
	re=ch-'0';
	return re;
}


int main()
{
	
	char a[80]; //定义一个长度为80的字符数组a 
	int sum,i; //定义一个sum用来储存运算结果,i是循环控制变量 
	gets(a); //输入一串字符,将这串字符赋值给字符数组a 
	sum=Toint(a[0]);//让sum先存储第一个出现的操作数 
	
	/*
			因为我们一开始已经拿到了第一个操作数了,
		所以我们从第二个操作数开始进行循环。
		因此i的初值为2。
			并且根据表达式的字符规律可知,每次i步进
		2之后,其i-1就是对应的运算符。
	*/ 
	for(i=2;i<strlen(a);i+=2)
	{
		//调用Calculate函数进行运算 
		sum=Calculate(sum,a[i-1],Toint(a[i]));
	}
	//输出结果 
	printf("%d",sum);
	return 0;	
} 

我们把刚刚的表达式例子拿出来验证一下:

 可以看到完成了表达式的运算。

特别注意,该代码仅支持一位数的表达式运算!

过一段时间再更新支持多位数的表达式运算的算法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君莫愁。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值