【发布时间】:2019-12-22 11:17:24
【问题描述】:
我使用 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;
}
【问题讨论】:
-
不要在代码 sn-ps 中添加格式。在您想指出的行上添加 cmets,如果您需要更多说明,请在问题中对这些行进行解释。
-
至于打破多层嵌套循环,首先尽量避免嵌套循环,这样就不会出现这个问题了。例如,您可以改用包含循环的函数,并检查函数的返回值。否则在外部循环中使用额外的状态变量和
if检查。 -
防止 goto 的第一条规则是重构代码。然后,在 C 语言中有两种情况允许使用 goto:跳出内部循环和错误处理。这两种情况都可能需要大量状态变量和其他人为(不可读、消耗处理器周期)构造来防止 goto。
-
您介意我修复缩进吗?我的眼睛受伤了!
标签: c for-loop if-statement logic goto