【问题标题】:How do i loop back to the start in c programme?我如何循环回到c程序的开头?
【发布时间】:2024-01-20 14:48:02
【问题描述】:

如果用户选择“否”选项,我如何才能返回到程序的开头? 请帮帮我。

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int choice;
  printf("Are you done? 1 for Yes, 2 for No: ");
  scanf("%d",&choice);
  
  if (choice==1)
  {
      
  }

return 0;
}

【问题讨论】:

  • 您可以通过多种方式进行操作,其中一种是使用goto &lt;label&gt;
  • 使用 goto 会使代码更难阅读,按照惯例不推荐,只需将代码放入 while(1) 循环并在用户选择 1 时退出它
  • @yvw 请不要为此使用goto。这最好使用循环来解决,就像链接的副本一样。
  • 正确使用goto绝对没有错。它经常被严重滥用,应该避免滥用。但是goto start 会比循环中的复杂逻辑更好。

标签: c printf


【解决方案1】:

使用while循环:

int main()
{
    while (1)
    {
        int choice;
        printf("Are you done? 1 for Yes, 2 for No: ");
        scanf("%d", &choice);

        if (choice == 1) {
            break;
        }
    }

    return 0;
}

不推荐goto,因为它降低了代码的可读性,但我还是写在这里,因为它也可以解决你的问题。

int main()
{
$START:

    int choice;
    printf("Are you done? 1 for Yes, 2 for No: ");
    scanf("%d", &choice);

    if (choice == 0) {
        goto $START;
    }

    return 0;
}

详细了解goto

【讨论】:

  • 请注意,如果输入以非整数值开头(例如 a),这将调用未定义的行为,因为 scanf 不会将值写入 choice 并且条件正在检查值一个未初始化的变量。您必须始终检查scanf返回的值。