【发布时间】:2016-09-16 06:55:19
【问题描述】:
所以我开始学习 c++ 并编写了这个简单的程序,当用户输入错误的数字时,它会提供重试选项,但是当用户输入任何字符时,它会提供重试选项并直接退出程序为什么会这样? `
#include<unistd.h>
#include<stdio.h>
int main(){
int a;
char b ,c;
start:
printf("INPUT ONLY NUMBER 1 : ");
scanf(" %d", &a);
if(a==1)
{
printf( " you entered correctly \n");
printf("do you want to try again? <Y> <N> \n");
scanf(" %c", &c);
if(c=='Y' ||c=='y')
{
goto start;
}
}
else {
sleep (1);
printf("wrong number , do you want to try again? <Y> <N> \n");
scanf(" %c" , &b);
}
if (b=='Y'||b=='y')
{
sleep(1);
goto start;
}
else
if(b=='n'||b=='N')
{
sleep(1);
printf("thank you and goodbye");
exit (1);
}
}
`
【问题讨论】:
-
如果用户输入了错误的数字,它可以正常工作,只有当用户输入一个字符时它才会退出
-
“所以我已经开始学习 c++” - 这看起来像 C,而不是 C++。确定你选对了书?无论如何,:得到一本更好的书!
goto有它的应用程序,但初学者应该不从它开始! 1970 年代/80 年代早已不复存在,使用结构化代码!并正确格式化和缩进代码。 -
使用while循环代替goto语句
-
但我想知道为什么会这样?
-
用循环语句重写代码并使用 C++ iostreams,而不是 C 风格。然后再试一次。如果这太复杂,从更简单的开始。另见How to Ask。
标签: c++