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

问题描述 投票:0回答:2

我有使用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大小写不使用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;
    }
c for-loop if-statement logic goto
2个回答
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);
        }
    }
}

0
投票

您可以使用另一个变量,并使用它来“通知”循环应终止。

#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;
}
© www.soinside.com 2019 - 2024. All rights reserved.