C++ 我能';t找出while循环没有给出预期结果的原因):

C++ 我能';t找出while循环没有给出预期结果的原因):,c++,for-loop,while-loop,char,nested-loops,C++,For Loop,While Loop,Char,Nested Loops,我不知道我做错了什么。我是新的C++和AM练习。我发现了这样的代码,它使用嵌套的while循环编写两个字母组合,并在末尾添加.com。那个代码运行得很好。为了练习,我希望它输出第三个组合,但由于某种原因,每当我添加一个第三个while循环时,中间的一个只能输出{。任何帮助都是非常感谢的!谢谢!!! #include <iostream> using namespace std; int main() { char letter1; char letter2; char letter

我不知道我做错了什么。我是新的C++和AM练习。我发现了这样的代码,它使用嵌套的while循环编写两个字母组合,并在末尾添加.com。那个代码运行得很好。为了练习,我希望它输出第三个组合,但由于某种原因,每当我添加一个第三个while循环时,中间的一个只能输出{。任何帮助都是非常感谢的!谢谢!!!
#include <iostream>
using namespace std;

int main() {
char letter1;
char letter2;
char letter3;

cout << "Three-letter domain names:" << endl;

letter1 = 'a';
while (letter1 <= 'z') {
    letter2 = 'a';
    while (letter2 <= 'z') {
        letter3 = 'a';
        ++letter2;
    }
    while (letter3 <= 'z') {
        cout << letter1 << letter2 << letter3 << ".com" << endl;
        ++letter3;
    }
    ++letter1;
}

return 0;
}
#包括
使用名称空间std;
int main(){
字符1;
字符字符2;
字符3;

cout第三个循环应该是第二个while循环的嵌套循环。也就是说,应该有三个嵌套循环

此外,由于变量letter1、letter2和letter3不在循环外部使用,因此最好将它们作为循环的局部变量。也就是说,最好将while循环替换为循环

这是一个演示程序

#include <iostream>

int main()
{
    std::cout << "Three-letter domain names:" << '\n';

    for ( char letter1 = 'a'; letter1 <= 'z'; ++letter1 ) 
    {
        for ( char letter2 = 'a'; letter2 <= 'z'; ++letter2 ) 
        {
            for ( char letter3 = 'a'; letter3 <= 'z'; ++letter3 ) 
            {
                std::cout << letter1 << letter2 << letter3 << ".com" << '\n';
            }
        }
    }
}   
等等


请注意,通常情况下,在所使用的编码系统中,字母之间不必没有间隙地相互跟随。

第三个循环需要嵌套在第二个循环中

<> P>但是有一个更简单的方法,它还有一个额外的好处,它也是可移植的C++(你的假设是小写字母是连续的)。基本上这是一个单一的积分计数器,转换成一个基26基数:

#include <iostream>
int main() {
    constexpr char alphabet[] = "abcedfghijklmnopqrstuvwxyz";
    constexpr std::size_t radix = sizeof(alphabet) - 1;
    for (std::size_t i = 0; i < radix * radix * radix; ++i){
        std::cout
            << alphabet[i / radix / radix]
            << alphabet[(i / radix) % radix]
            << alphabet[i % radix]
            << ".com\n"
        ;
    }
}
#包括
int main(){
constexpr char alphabet[]=“abcedfghijklmnopqrstuvwxyz”;
constexpr std::size\u t radix=sizeof(字母表)-1;
对于(std::size_t i=0;i<基数*基数*基数;++i){
标准::cout

第三个
while
不应该嵌套在第二个
while
中吗?除了@Bathsheba已经写过的内容之外,我建议在这样的任务中使用for循环(
for(char letter1='a';letter1整个
while(letter2)你有问题。
#include <iostream>
int main() {
    constexpr char alphabet[] = "abcedfghijklmnopqrstuvwxyz";
    constexpr std::size_t radix = sizeof(alphabet) - 1;
    for (std::size_t i = 0; i < radix * radix * radix; ++i){
        std::cout
            << alphabet[i / radix / radix]
            << alphabet[(i / radix) % radix]
            << alphabet[i % radix]
            << ".com\n"
        ;
    }
}