一个简易的c语言计算器代码如下:
#include <stdio.h>
int main()
{
int a,b,c;
float d,e,f;
char op;
scanf("%d %d %ch", &a,&b,&op);
switch(op)
{
case'+':
c=a+b;
printf("%d",c);
break;
case'-':
c=a-b;
printf("%d",c);
break;
case'*':
c=a*b;
printf("%d",c);
break;
case'/':
if(b==0)
{
printf("Zero Divided Error!");
break;
}
if(a%b==0)
{
c=a/b;
printf("%d",c);
break;
}
else
{
d=a;
e=b;
f=d/e;
printf("%.2f",f);
break;
}
default:
printf("ERROR!\n");
break;
}
return 0;
}
想讲的其实是做除法运算中的两个if条件句,上述代码是正确的的逻辑。
我们可以试想,如果if(a%b==0)前置会怎样?不改变其中的任何代码。
一般情况下不会出现任何错误,但是当a==b==0时错误就出现了!
if(a%b==0)与if(b==0)同时成立,但是if(a%b==0)位于前段,进入if语句后break触发跳出
case:'/',并且执行0/0这样的逆天计算。
总结,做数据运算的时候简单的逻辑判断要放在之前。
感谢您的阅读。