
#include
#include
#include
//给你一个简单的四则运算表达式,包含两个实数和一个运算符,请编程计算出结果
//表达式的格式为:s1 op s2, s1和s2是两个实数,op表示的是运算符(+,-,*,/),
//也可能是其他字符。
注意运算符两侧各有一个空格。
//如果运算符合法,输出表达式的值;若运算符不合法或进行除法运算时除数是0,
//则输出"Wrong input!"。
最后结果小数点后保留两位。
int main()
{
//思路:用到单片机里面 的标志位思想和for,switch语句
double x,y;
char symbol,flag=1;
char sy1[4]="+-*/";//定义一个数组存放合法字符
scanf("%lf %c %lf",&x,&symbol,&y);
//这里特别容易因为肌肉记忆写成%d,编译器不报错,但是程序是错的
// if(symbol=='+')
// printf("%.2f",x+y);
for(int i=0,j=0;i<4;i++)//用到一个for循环来依次对比,直到匹配上了进入相应case语句执行任务
{
if(symbol==sy1[i])
{
switch(i)
{
case(0):printf("%.2f",x+y);flag=0;break;
case(1):printf("%.2f",x-y);flag=0;break;
case(2):printf("%.2f",x*y);flag=0;break;
case(3):if(fabs(y) <= 1e-10){printf("Wrong input!");flag=0;}else{printf("%.2f",x/y);flag=0;}break;
default:break;
}
}
}
if(flag==1)//没有正常运算,标志位就没被置0
printf("Wrong input!");
return 0;
}
必须要用到fbas()这个库函数,在math.h的头文件里,不用就会报错。
把0当成是无穷小量吗,我也不知道咋设计的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)