这个简单的程序询问使用的年龄,并根据它显示一条消息。最后,如果是,则询问用户是否要再次重复整个事情。但是我收到错误
Break语句不在循环或开关
之内
当我编译它时。这是什么意思,我该如何纠正呢?
#include <stdio.h>
#include <string.h>
static int prompt_continue (const char *prompt)
{
printf("%s", prompt);
char answer[5];
if (scanf("%1s", answer) != 1)
return 0;
if (answer[0] == 'y' || answer[0] == 'Y')
{
int c;
while ((c = getchar()) != EOF && c != '\n')
;
return 1;
}
return 0;
}
int main(void)
{
/*Creates a simple program using if else example. */
int age;
while (printf("Welcome, this program is designed for if else statements.\n"));
printf("Please enter your age.\n");
scanf (" %d", &age); /*Enters age.*/
if (age < 18){
printf("You are young!\n");
}
else if (age > 18){
printf("Ah you're old!\n");
}
{
printf(" Woot.\n");
if (prompt_continue("Do you want to try again? Y/N") == 0)
break;
}
return 0;
}
试图解决这个问题,需要一些帮助。我使用了while循环错了吗?任何想法都会有所帮助。谢谢!
答案 0 :(得分:2)
问题是你的break语句什么都不做,因为它不在循环或开关中,为什么你把它放在那里。
答案 1 :(得分:2)
您需要定义循环的范围。在这段代码中:
while (printf("Welcome, this program is designed for if else statements.\n"));
printf("Please enter your age.\n");
...
if (prompt_continue("Do you want to try again? Y/N") == 0)
break;
你真正需要的是:
while (true)
{
printf("Welcome, this program is designed for if else statements.\n"));
printf("Please enter your age.\n");
...
if (prompt_continue("Do you want to try again? Y/N") != 1)
break;
}
break
此处停止执行while
循环。
答案 2 :(得分:1)
这就是您的错误所说的!! break
语句必须位于loop
,if
或switch-case
的正文中,并将控件从该块中取出如果你想在那时结束程序,那么你应该在这里使用而不是中断:
exit(0); //0 means successful termination, non-zero value means otherwise.
如果你想让整个事情再次重复,恐怕你的程序需要彻底检查。逻辑是错误的。让我检查......
编辑嗯,这是您的完整工作计划。我相信您会理解所做的更改。请在评论中告诉您的混淆(如果有的话)。这里是对更改的简要说明:< / p>
return
函数中的prompt_contineu()
个语句需要稍作修改,根本不需要getchar()
,while
循环中没有任何条件main()
函数及其正文在{}
中没有明确定义,最后但并非最不重要的是,需要在prompt_continue()
循环中调用while
函数才能获得作业我希望你能看到continue
声明的作用。顺便说一下,这个邪恶的程序说我 FRIGGIN OLD : - )
#include <stdio.h>
#include <string.h>
static int prompt_continue (const char *prompt)
{
printf("%s", prompt);
char answer[5];
if (scanf("%1s", answer) != 1)
return 0;
if (answer[0] == 'y' || answer[0] == 'Y')
{
return 2;
if (answer[0] == 'n' || answer[0] == 'N')
return 3;
}
return 0;
}
int main(void)
{
/*Creates a simple program using if else example. */
int age;
while (1)
{
printf("Welcome, this program is designed for if else statements.\n");
printf("Please enter your age.\n");
scanf (" %d", &age); /*Enters age.*/
if (age < 18)
printf("You are young!\n");
else if (age > 18)
printf("Ah you're old!\n");
printf(" Woot.\n");
if(prompt_continue("Do you want to try again? Y/N")==3)
break;
else
continue;
}
return 0;
}