goto 和 junping 循环循环 c++
goto and junping loop by loop c++
我是这里的新程序员和用户。
我不想在我的代码中使用 goto 因为我不想被称为“糟糕的程序员”。
我需要你的经验来摆脱它。
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
srand(time(NULL));
int control = 1;
char a[50], harf[5][10];
a[0] = 65 + rand() % 26;
for (int i = 1; i < 50; i++)
{
if (i % 2 == 0)
a[i] = 65 + rand() % 26;
else
a[i] = 97 + rand() % 26;
come:
for (int j = 0; j < i; j++)
{
if (a[i] == a[j])
{
if (i % 2 == 0)
{
a[i] = 65 + rand() % 26; goto come;
}
else
{
a[i] = 97 + rand() % 26; goto come;
}
}
else
continue;
}
cout << a[i]<<" ";
}
system("pause");
}
screenshot
只需将 come
块(内部 for 循环)替换为一个函数即可。然后,调用 come()
而不是 goto come
(假设函数名称是 "come")。
无需创建函数,将您的 "goto" 替换为 "j = -1;"
替换
come:
for (int j = 0; j < i; j++)
{
if (a[i] == a[j])
{
if (i % 2 == 0)
{
a[i] = 65 + rand() % 26; goto come;
}
else
{
a[i] = 97 + rand() % 26; goto come;
}
}
else
continue;
}
和
int loop=0;
do
{
for (int j = 0; j < i; j++)
{
if (a[i] == a[j])
{
if (i % 2 == 0)
{
a[i] = 65 + rand() % 26;
}
else
{
a[i] = 97 + rand() % 26;
}
loop=1;
break;
}
else
loop=0;
}
}while(loop);
与其他一些答案相比,这是一种更通用的解决方案。它基于以下认识:当您找到匹配项 (a[i] == a[j])
时,您只想从顶部再次 运行 主 for
循环。 (您可以通过将 j
设置为 -1 来获得相同的结果,但这不会在所有情况下都有效,如果 j
需要 unsigned
则肯定不会)
我是这里的新程序员和用户。 我不想在我的代码中使用 goto 因为我不想被称为“糟糕的程序员”。 我需要你的经验来摆脱它。
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
srand(time(NULL));
int control = 1;
char a[50], harf[5][10];
a[0] = 65 + rand() % 26;
for (int i = 1; i < 50; i++)
{
if (i % 2 == 0)
a[i] = 65 + rand() % 26;
else
a[i] = 97 + rand() % 26;
come:
for (int j = 0; j < i; j++)
{
if (a[i] == a[j])
{
if (i % 2 == 0)
{
a[i] = 65 + rand() % 26; goto come;
}
else
{
a[i] = 97 + rand() % 26; goto come;
}
}
else
continue;
}
cout << a[i]<<" ";
}
system("pause");
}
screenshot
只需将 come
块(内部 for 循环)替换为一个函数即可。然后,调用 come()
而不是 goto come
(假设函数名称是 "come")。
无需创建函数,将您的 "goto" 替换为 "j = -1;"
替换
come:
for (int j = 0; j < i; j++)
{
if (a[i] == a[j])
{
if (i % 2 == 0)
{
a[i] = 65 + rand() % 26; goto come;
}
else
{
a[i] = 97 + rand() % 26; goto come;
}
}
else
continue;
}
和
int loop=0;
do
{
for (int j = 0; j < i; j++)
{
if (a[i] == a[j])
{
if (i % 2 == 0)
{
a[i] = 65 + rand() % 26;
}
else
{
a[i] = 97 + rand() % 26;
}
loop=1;
break;
}
else
loop=0;
}
}while(loop);
与其他一些答案相比,这是一种更通用的解决方案。它基于以下认识:当您找到匹配项 (a[i] == a[j])
时,您只想从顶部再次 运行 主 for
循环。 (您可以通过将 j
设置为 -1 来获得相同的结果,但这不会在所有情况下都有效,如果 j
需要 unsigned
则肯定不会)