gpt4 book ai didi

c++ - 不使用跳转语句的结构化解决方案

转载 作者:行者123 更新时间:2023-11-30 00:42:24 25 4
gpt4 key购买 nike

来自 Schaums C++ 文本

删除 goto- 表示使用标志

代码段:

const int N2 = 5;
int i, j, k;

for (i = 0; i < N2; i++)
{ for (j = 0; j < N2; j++)
{ for (k = 0; k < N2; k++)
if (i + j + k > N2)
goto esc;
else
cout << i + j + k << " ";
cout << "* ";
}
esc: cout << "." << endl;
}

解决方法:

const int 5;
int i, j, k;
bool done = false;
for (i = 0; i < N2; i++)
{ for (j = 0; j < N2 && !done; j++)
{ for (k = 0; k < N2 && !done; k++)
if (i + j + k > N2)
done true;
else
cout << i + j + k << " ";
cout << "* ";
}
cout << "." << endl;
done = false;
}

结构化解决方案的输出不会产生相同的结果...与 goto 的结果...我看不出问题

  1. 此外,还有什么方法可以消除 goto?- 我可以不使用标志而只是补充条件吗。

谢谢...

最佳答案

编写这种循环转义功能的一种好方法是返回;陈述。采取:

const int N2 = 5;

void inner_loop(const int i) {
for (int j = 0; j < N2; ++j)
{
for (int k = 0; k < N2; ++k)
{
if (i + j + k > N2)
return;

cout << i + j + k << " ";
}
cout << "* ";
}
}


for (int i = 0; i < N2; ++i)
{
inner_loop(i);
cout << "." << endl;
}

关于c++ - 不使用跳转语句的结构化解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com