用C语言写简单的四则运算(没有栈没有指针)

用C语言写简单的四则运算(没有栈没有指针,因为还没学到)

在这平台都是大佬发的指针和栈的方法,我都没法借鉴,自己写好了就发了一下

四个数的加减乘除,不带0和()

大一新生写的作业可能有点小毛病,我在Visual C++ 6.0可以运行,其他软件可能要小改

想要加0或者()运算,可以自行在条件里加

 

 全是if,switch,看着比较麻烦,但是知道原理就很清晰了

#include<stdio.h>
int main()
{
	float a, b, c, d, e;    //设abcd为计算数,e为计算结果
	float j=0, k=0, l=0;   //设jkl为乘除法运算中间数
	float i=0,o=0,p=0;    //设iop为运算中间数
	char x, y, z;        //设xyz为计算运算符
	printf("欢迎进入简单四则运算系统\n");
	printf("现在请你输入例如1+1+1+1这样的式子\n");
	scanf("%f%c%f%c%f%c%f\n", &a, &x, &b, &y, &c, &z, &d);
	if(y=='*')
		k=b*c;
	else if(y=='/')
		k=b/c;
	else k=0;
	if(x=='*')                 //这些是为了让电脑知道x,y,z的符号,得到中间值,定下后面的运算条件
		j=a*b;
	else if(x=='/')
		j=a/b;
	else j=0;
	if(z=='*')
		l=c*d;
	else if(z=='/')
		l=c/d;
	else l=0;
	if(k!=0&&j!=0&&l!=0)
	{
		switch(y)
		{
		case '*': e=j*l;break;       //x,y,z全为*号
		case '/': e=j/l;break;
		}
	}
	if(k==0&&j==0&&l==0&&x=='+')
	{
		switch(y)
		{
		case '+': o=(a+b)+c;break;           //    
		case '-': o=(a+b)-c;break;           //
		}                                    //
	}                                        //
	else if(k==0&&j==0&&l==0&&x=='-')        //x,y,z全为+/-
	{                                        //
		switch(y)                            //
		{                                    //
		case '+': o=a-b+c;break;             //
		case '-': o=a-b-c;break;             //
		}
	}
	if(o!=0)
	{
		switch(z)
		{
		case '+': e=o+d;break;
		case '-': e=o-d;break;
		}
	}
	if(l==0&&j!=0)
	{
		switch(y)
		{
		case '+': i=j+c;break;
		case '-': i=j-c;break;              //x为*,/; z为+,-; y待定
		case '*': i=j*c;break;
		case '/': i=j/c;break;
		}
	}
	else if(k!=0&&l==0)
	{
		switch(x)
		{
		case '+': i=a+k;break;
		case '-': i=a-k;break;               //y为*,/; z为+,-; x待定
		case '*': i=a*k;break;
		case '/': i=a/k;break;
		}
	}
	else;
	if(i!=0)
	{
		switch(z)
		{
		case '+': e=i+d;break;
		case '-': e=i-d;break;
		}
	}
	if(l!=0&&j!=0&&k==0)
	{
		switch(y)
		{
		case '+': e=j+l;break;          //只有y为+,-
		case '-': e=j-l;break;
		}
	}
	else if(j==0&&l!=0)
	{
		switch(y)
		{
		case '+': p=d+l;break;
		case '-': p=d-l;break;            //z为*,/; x为+,-; y待定
		case '*': p=d*l;break;
		case '/': p=d/l;break;
		}
	}
	else;
	if(p!=0)
	{
		switch(x)
		{
		case '+': e=a+p;break;
		case '-': e=a-p;break;
		}
	}
    if(a==0||b==0||c==0||d==0)
		printf("错误,本系统不允许数为0\n");
	else printf("%.2f%c%.2f%c%.2f%c%.2f=%.2f\n",a,x,b,y,c,z,d,e);
	return 0;
}

 

 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值