如何在不使用 goto 关键字的情况下编写 C 代码?

How do i write C code without using a goto keyword?

我使用 goto 关键字编写了这段代码:

#include<stdio.h>
    
    int main()
    {
        int i,j,k;
         for(i=1;i<=3;i++)
         {
         for(j=1;j<=3;j++)
         {
         for(k=1;k<=3;k++)
         {
         [***if(i==2&&j==2&&k==2)
         
           goto out;][1]
         else
         printf("%d %d %d\n ",i,j,k);***
        }
        }
       }
       out:
       printf("\nOut of the loop");
        return 0;
    }

并且我尝试在 if 语句和 switch case 的帮助下不使用 goto 来编写它。但我无法提出完美的逻辑。请有人帮我解决这个问题。

#include<stdio.h>
    
int main()
{
        int i,j,k;
         for(i=1;i<=3;i++)
         {
         for(j=1;j<=3;j++)
         {
         for(k=1;k<=3;k++)
         {
         if(i>=2&&j>=2&&k>=2)
         break;
         else
         printf("%d %d %d\n ",i,j,k);
    
        }
        **

**switch(i>=2&&j>=3&&k>=1)
        {
        case 1: break;
        default : break;
     }**

**
     }
        switch(i>=3&&j>=2&&k>=2)
        {
        case 1: break;
        default : break;
     }
     }
     return 0;
    }

您可以在循环内更改控制变量

for (i = 0; i < 2; i++) {
    for (j = 0; j < 4; j++) {
        for (k = 0; k < 8; k++) {
            if ((i == 2) && (j == 2) && (k == 2)) {
                // change control variables to finish their loop
                k = j = i = 9; break; // exit all loops
            }
            printf("%d, %d, %d\n", i, j, k);
        }
    }
}

您可以使用另一个变量并将其用于 "notify" 它们应该结束的循环。

#include<stdio.h>

int main()
{
    int i,j,k;
    int run_me = 1;
    for (i = 1; run_me && i <= 3; i++) {
      for (j = 1; run_me && j <= 3; j++) {
        for (k = 1; run_me && k <= 3; k++) {
          if (i == 2 && j == 2 && k == 2) {
             run_me = 0;
          } else {
             printf("%d %d %d\n ",i,j,k);***
          }
        }
      }
   }
   printf("\nOut of the loop");
   return 0;
}

您可以从循环创建函数。

#include<stdio.h>

void function(void) 
{
    int i,j,k;
    for (i = 1; i <= 3; i++) {
      for (j = 1; j <= 3; j++) {
        for (k = 1; k <= 3; k++) {
          if (i == 2 && j == 2 && k == 2) {
             return;
          } else {
             printf("%d %d %d\n ",i,j,k);***
          }
        }
      }
   }
}

int main()
{
   function();
   printf("\nOut of the loop");
   return 0;
}