用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;
}