程序遇到scanf直接跳过不执行这是为什么

newcleaner newcleaner 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
苦逼自学者,刚开始学C,不太明白下面这段代码为什么不执行scanf函数,请高手指点一下。就算程序逻辑有问题,程序遇到scanf也应该让我输入一下再出错也好啊,但是它直接跳过不执行。泪奔了。

//计算面积或体积
#include <stdio.h>

int main()
{
char choose = 'c'; //选择计算方式,提供a、b两种选项

float a = 5.0f; //长
float b = 6.0f; //宽
float h = 7.0f; //高

int on = 1; //循环开关,初始为打开
char yesorno = 'n'; //是否再次计算,初始为关闭
while (on)
{
printf("请选择\n");
printf("a>计算面积\n");
printf("b>计算体积\n->");

scanf("%c", &choose);
switch (choose)
{
case 'a':
case 'A':
printf("%f\n", a*b);
break;
case 'b':
case 'B':
printf("%f\n", a*b*h);
break;
default:
printf("不能识别你的输入!\n");
continue;
}
printf("是否需要再次计算(y/n):");

scanf("%c", &yesorno); //就是这个输入,始终不执行。不止为什么?
if (yesorno == 'N' ||
yesorno == 'n')
on = 0; //选择否,循环开关关闭
else if (yesorno == 'y' ||
yesorno == 'Y')
on = 1; //选择是,循环开关继续开启
else
on = 0; //乱输入则关闭循环,不再执行计算
}
return 0;
}
...全文
评论 5
收藏 已收藏
分享
返回顶部
newcleaner
新手乐园 33,315 成员 41,769 内容