为啥我这goto语句不执行啊

[复制链接]
查看11 | 回复2 | 2021-1-27 06:18:50 | 显示全部楼层 |阅读模式
#include
intmain()
{
doublenum1,num2;
charcharacter,command;
doublevalue;
lable:
printf("请输入第一个数:\n");
scanf("%lf",&num1);
printf("请输入第二个数:\n");
scanf("%lf",&num2);
printf("请输入计算符号\n");
fflush(stdin);
scanf("%c",&character);
switch(character)
{
case'+':
value=num1+num2;
printf("两式相加结果为:%lf\n",value);
break;
case'-':
value=num1-num2;
printf("两式相减结果为:%lf\n",value);
break;
case'*':
value=num1*num2;
printf("两式相乘结果为:%lf\n",value);
break;
case'/':
value=num1/num2;
printf("两式相除的结果为%lf\n",value);

break;
}
printf("是否还要继续进行运算,请在下方输入yes/no\n");
fflush(stdin);
scanf("%c",&command);
if(command=='yes')
{
fflush(stdin);
gotolable;
}
else
printf("请关闭程序\n");

}
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:18:50 | 显示全部楼层
因为判断失败,command只取了'y'。scanf("%c",&command);

回复

使用道具 举报

千问 | 2021-1-27 06:18:50 | 显示全部楼层
fflush(stdin);不是针对所有的编译器都有效的,因为对于一些编译器这个函数操作stdin是未定义行为。
建议用getchar();替换fflush();
未执行goto,是因为执行goto语句的条件没满足。很有可能fflush(stdin)没有起作用,建议用getchar();
另外,command是char类型,"yes"是字符串不是字符。这个是一个bug。
#include
intmain()
{
doublenum1,num2;
charcharacter,command;
doublevalue;
lable:
printf("请输入第一个数:\n");
scanf("%lf",&num1);
printf("请输入第二个数:\n");
scanf("%lf",&num2);
printf("请输入计算符号\n");
//fflush(stdin);
getchar();//for'\n'
scanf("%c",&character);
getchar();//for'\n'
switch(character)
{
case'+':
value=num1+num2;
printf("两式相加结果为:%lf\n",value);
break;
case'-':
value=num1-num2;
printf("两式相减结果为:%lf\n",value);
break;
case'*':
value=num1*num2;
printf("两式相乘结果为:%lf\n",value);
break;
case'/':
value=num1/num2;
printf("两式相除的结果为%lf\n",value);

break;
}
printf("是否还要继续进行运算,请在下方输入y/n\n");
fflush(stdin);
scanf("%c",&command);
getchar();//for'\n'
//if(command=='yes')
if(command=='y')
{
//fflush(stdin);
gotolable;
}
else
printf("请关闭程序\n");
return0;
}
供参考~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行