1

当我开始调试时没有打印任何内容,我什至不确定这意味着什么,我认为错误可能在第 3 和第 4 个 for 循环中,对于字母 ASCII 字符,因为我不确定这是否正确写它们的方式。

我正在尝试解决以下练习:

编写一个程序,读取用户输入的两个整数 n 和 l,并按字母顺序生成所有可能的密码,密码由以下 5 个字符组成:
符号 1:i,从 1 到 n 的数字。
符号 2:j,从 1 到 n 的数字。
符号3:字母,拉丁字母前l个字母中的小写字母。
符号4:第二个字母,拉丁字母前l个字母中的小写字母。
符号 5:d,从 1 到 n 的数字,大于前 2 位数字。
输入从控制台读取,由区间 [1…9] 中的两个整数 n 和 l 组成,每行一个。
所有密码必须按字母顺序打印在控制台上,并用空格分隔。

My code: 
#include <iostream>
using namespace std;

int main()
{
    int n = 0;
    int l = 0;
    cout << "Input n (1, 9): " << endl;
    cin >> n;
    while (n < 1 || n > 9)
    {
        cout << "Input n (1, 9): " << endl;
        cin >> n;
    }
    cout << "Input l (1, 9): " << endl;
    cin >> l;
    while (l < 1 || l > 9)
    {
        cout << "Input l (1, 9): " << endl;
        cin >> l;
    }

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            for (char letter = char(97); letter <= l; letter++)
            {
                for (char secondletter = char(97); secondletter <= l; secondletter++)
                {
                    for (int d = 1; d <= n; d++)
                    {
                        if (d>i&&d>j)
                        {
                            cout << "Possible combination {1}{2}{3}{4}{5}: " << i << j << letter << secondletter << d << "\n";
                        }
                    }
                }
            }
        }
    }
    return 0;
}
4

1 回答 1

0

你可能想做:

for (char letter = char(97); letter <= (97+l); letter++)
            {
                for (char secondletter = char(97); secondletter <= (97+l); secondletter++)
                {

我没有完全浏览您的代码,但这很简单,可以看出letter <= (97+l)您想要代替letter <= l其他情况,并且类似地。

一种好的做法是执行以下操作:

#include <iostream>
using namespace std;

int main()
{
    int n = 0;
    int l = 0;
    cout << "Input n (1, 9): " << endl;
    cin >> n;
    while (n < 1 || n > 9)
    {
        cout << "Input n (1, 9): " << endl;
        cin >> n;
    }
    cout << "Input l (1, 9): " << endl;
    cin >> l;
    while (l < 1 || l > 9)
    {
        cout << "Input l (1, 9): " << endl;
        cin >> l;
    }

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            for (char letter = 'a'; letter <= 'a'+l; letter++)
            {
                for (char secondletter = 'a'; secondletter <= 'a'+l; secondletter++)
                {
                    for (int d = 1; d <= n; d++)
                    {
                        if (d>i&&d>j)
                        {
                            cout << "Possible combination {1}{2}{3}{4}{5}: " << i << j << letter << secondletter << d << "\n";
                        }
                    }
                }
            }
        }
    }
    return 0;
}

这个想法很简单,'a'=>97, 'a'+1=>98=>'b'事情就是这样......

于 2021-12-27T21:38:25.707 回答