首页 新闻 会员 周边 捐助

为什么switch case 直接跳过结果啊?有点迷啊!求大神帮忙!!!

0
悬赏园豆:10 [已解决问题] 解决于 2020-01-21 21:38

Hoxie的主页 Hoxie | 初学一级 | 园豆:53
提问于:2019-03-08 23:34
< >
分享
最佳答案
1

读入op前要加&符,case结束要break

#include<stdio.h>
int main()
{
int a=10;
int b=20;
float c;
char op;

scanf("%c",&op);

switch(op)
{
    case '+':c=a+b;break;
    case '-':c=a-b;break;
    case '*':c=(float)a*b;break;
    case '/':c=(float)a/b;break;
}
printf("c=%f\n",c);

return 0;
}
收获园豆:8
蒟蒻魔芋汤 | 初学一级 |园豆:199 | 2019-03-09 10:14

补充:如果要算除法,int要强制转换成float,否则输出0,不会是0.5

蒟蒻魔芋汤 | 园豆:199 (初学一级) | 2019-03-09 10:17

感谢,题中的问题解决了,但是我后面还有一个问题,帮帮忙,十分感谢

Hoxie | 园豆:53 (初学一级) | 2019-03-09 10:18

@Hoxie: 不要在里面return啊!那样直接结束程序。

蒟蒻魔芋汤 | 园豆:199 (初学一级) | 2019-03-09 10:19

最前面的题中用了return,可以运行呀,后面的我把return删掉了,但是结果还会出错

Hoxie | 园豆:53 (初学一级) | 2019-03-09 10:21

@Hoxie: What?你看一下我前面的回答

蒟蒻魔芋汤 | 园豆:199 (初学一级) | 2019-03-09 10:26

@蒟蒻魔芋汤: 看到了,我后面定义的都是浮点型变量啊

Hoxie | 园豆:53 (初学一级) | 2019-03-09 10:27

@Hoxie: 为什么要getchar()

蒟蒻魔芋汤 | 园豆:199 (初学一级) | 2019-03-09 10:29

@蒟蒻魔芋汤: 这个不是要吃掉回车吗?要不然程序会直接跳过运算符的输入,直接把\n当作op了

Hoxie | 园豆:53 (初学一级) | 2019-03-09 10:30

@Hoxie: scanf不会吧(我c++党,不行就找别人吧,对不起)

蒟蒻魔芋汤 | 园豆:199 (初学一级) | 2019-03-09 10:32

@蒟蒻魔芋汤: 啊,这样啊,那谢谢你呀,为你打CALL哦

Hoxie | 园豆:53 (初学一级) | 2019-03-09 10:34

@Hoxie: 不用谢!

蒟蒻魔芋汤 | 园豆:199 (初学一级) | 2019-03-09 10:35
其他回答(2)
0

没有写break

会长 | 园豆:12463 (专家六级) | 2019-03-09 07:20

加了break后会有结果,但是结果总是0.00000

支持(0) 反对(0) Hoxie | 园豆:53 (初学一级) | 2019-03-09 09:27
0

没有结束,造成了穿透,写上break就可以了

收获园豆:2
一只小小媛 | 园豆:204 (菜鸟二级) | 2019-03-09 15:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册