0

这个简单的程序询问用户的年龄并据此显示一条消息。如果是,最后询问用户是否想再次重复整个过程。但我收到错误

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循环吗?任何想法都会有所帮助。谢谢!

4

3 回答 3

2

问题是你的 break 语句什么都不做,因为它不在循环或开关中,你为什么把它放在那里。

于 2013-05-05T01:23:27.293 回答
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;
}

breakwhile在这里停止循环的执行。

于 2013-05-05T01:25:17.023 回答
1

这就是你的错误所说的!break语句必须在 a 的主体内loopif 或者switch-case 并且将控制权从该块中取出。如果您想在该点结束程序,那么您应该在这里使用它而不是 break:

 exit(0); //0 means successful termination, non-zero value means otherwise.

如果你想让整个事情再次重复,恐怕你的程序需要大修。逻辑有问题。让我检查一下……

编辑好吧,这是您的完整工作程序。我相信您会理解所做的更改。否则请在评论中告诉您的困惑(如果有的话)。以下是对更改的简要说明:

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;
}
于 2013-05-05T01:25:22.663 回答