fuze11 发表于 2020-4-21 22:14:16

求大神们指点

#include <stdio.h>
main()
{
        char ch;
        float a,b,c;
        printf("请输入式子\n");
        scanf("%.2f %c %.2f",&a,&ch,&b);
        switch(ch)
        {
                case '+' :c=a+b; printf("结果是%.2f",c);break;
                case '-' :c=a-b; printf("结果是%.2f",c);break;
                case '*' :c=a*b; printf("结果是%.2f",c);break;
                case '/'
                  if(b==0)
                  {
                          printf("除数不为零");
                  }
                  else
                  {
                          c=a/b;
                             printf("结果是%.2f",c);
                  }
        }
}

liuzhengyuan 发表于 2020-4-21 22:15:20

你的
case '/'
后面没加 ':'
应该是
case '/':

fuze11 发表于 2020-4-21 22:25:40

谢谢大神,但是我发现我输出不出结果

4goodworld 发表于 2020-4-21 22:36:13

fuze11 发表于 2020-4-21 22:25
谢谢大神,但是我发现我输出不出结果

你确定是输入进去了吗?
scanf("%.2f %c %.2f",&a,&ch,&b);
连续输入很容易出问题的{:5_109:}

sunrise085 发表于 2020-4-21 23:42:52

scanf格式化字符最好只写格式化字符,不添加任何其他字符,也就是最好把空格去掉,
不过这不是错误所在,错误的原因是你规定了输入浮点数的小数位数,这是不对的,使用scanf是,不能规定输入浮点数的小数位数。

另外一个问题,二楼已经说了,case '/'后面少一个冒号

liuzhengyuan 发表于 2020-4-22 09:04:58

fuze11 发表于 2020-4-21 22:25
谢谢大神,但是我发现我输出不出结果

感觉你问题在于 scanf 输入时,中的格式化不建议加 .2 如 %.2f,就会出错
你把 .2 去掉就可以了

如果你想保留两位小数的话那就 在输出的时候 %.2f 即可

fuze11 发表于 2020-4-22 09:09:30

谢谢大神们,我懂了
页: [1]
查看完整版本: 求大神们指点