为了账号安全,请及时绑定邮箱和手机立即绑定

如下代码,求助关于c的goto与输入的问题

如下代码,求助关于c的goto与输入的问题

C PHP
侃侃无极 2022-03-24 15:15:47
#include<stdio.h>int main(){char t;int a,b,c;printf("Please enter s:\n");r1: t=getchar();if (t=='s'){printf("Please enter a,b,c:\n");scanf("%d%d%d",&a,&b,&c);printf("a=%f,b=%d,c=%d",&a,&b,&c);}else{printf("Please enter s:\n");goto r1;}return 0;}当输入不是s的时候,程序会出现两个Please enter s:我只想要一个。如果goto前面那一句删去就没有了。恳请各位大侠帮助,小弟在此有礼了。执行结果是这样的:Please Enter s:fPlease Enter s:Please Enter s:我想要的结果是:Please Enter s:fPlease Enter s:研究数日,终于找到了解决办法将getchar一句改为scanf("%s",t)就可以了分析原因应该是那个回车的问题。再次感谢帮助我的大侠们
查看完整描述

3 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

第一次getchar()读走了你输入的字符,第二次读走了你第一次输入的回车,因为第一次你输入的回车留在缓冲区没有被读走,所以应该这样读走回车。
#include<stdio.h>
int main()
{
char t;
int a,b,c;
printf("Please enter s:\n");
r1: t=getchar();
getchar(); /*读走回车*/
if (t=='s')
{

printf("Please enter a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
printf("a=%f,b=%d,c=%d",&a,&b,&c);
}
else
{
printf("Please enter s:\n");
goto r1;
}
return 0;
}

 


查看完整回答
反对 回复 2022-03-28
?
RISEBY

TA贡献1856条经验 获得超5个赞

#include<stdio.h>
int main()
{
char t;
int a,b,c;
r1: printf("Please enter s:\n");
t=getchar();
if (t=='s')
{
printf("Please enter a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
printf("a=%f,b=%d,c=%d",&a,&b,&c);
}
else
{
goto r1;
}
return 0;
}



查看完整回答
反对 回复 2022-03-28
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

你应该是想要这个当输入S时打印
:Please enter a,b,c:

输入1 个数字时输出一行,2个数字时输出二行,3个......
按你输入的字长打出相应的行数。

===================================================
#include<stdio.h>
int main()
{
char t;
int a,b,c;
printf("Please enter s:\n");
r1: t=getchar();
if (t=='s')
{
printf("Please enter a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
printf("a=%f,b=%d,c=%d",&a,&b,&c);
}else
{
if (t!=10){ printf("Please enter s:\n"); }
goto r1;
}
return 0;
}


 


查看完整回答
反对 回复 2022-03-28
  • 3 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信