switch开关小问题!

pinevspine23 2014-04-12 10:00:25
#include <stdio.h>

main()
{
float d1,d2;
char op;
printf("Input d1,op,d2:");
scanf("%f,%c,%f",&d1,&op,&d2);
switch(op)
{
case '+':printf("%.2f%c%.2f=%.2f\n",d1,op,d2,d1+d2);
break;
case '-':printf("%.2f%c%.2f=%.2f\n",d1,op,d2,d1-d2);
break;
case '*':printf("%.2f%c%.2f=%.2f\n",d1,op,d2,d1*d2);
break;
case '/':printf("%.2f%c%.2f=%.2f\n",d1,op,d2,d1/d2);
break;
default: printf("op is error!\n");
}
}
为什么执行之后总是default的语句?
...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
u013555618 2014-04-12
  • 打赏
  • 举报
回复
你看看你是不是英文输入的逗号啊,我不知h道这有没有影响,如果你是用汉语输的,你可以试试
u013555618 2014-04-12
  • 打赏
  • 举报
回复
你看我就是这样输入的,用的vs2010,程序和你的一样,没有问题
pinevspine23 2014-04-12
  • 打赏
  • 举报
回复
scanf(“%f,%c,%f”,&d1,&op,&d2) 在输入的时候输入:10,+,1这样的数据输入为什么显示的是default的输出语句呢?谢谢
ws怪叔叔 2014-04-12
  • 打赏
  • 举报
回复
没有清空输入缓存区,他会把你输入的逗号当做op的,所以,一直都是default
可以将输入改成
scanf("%f",dl);
fflush(stdin);
scanf("%f",dl);
fflush(stdin);//清空输入缓冲区
u013555618 2014-04-12
  • 打赏
  • 举报
回复
我认为你在输入数据的时候有错误,比如10+1吧,应该10,+,1应该与scanf语句一致 如果 scanf("%f%c%f",&d1,&op,&d2);把scanf中逗号去掉,则应输入10+1,而不能10空格+空格1,负责程序会认为你输的符号为空格而不是加号

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧