在循环中使用字母的正确方式是什么



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

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

编写一个程序,读取用户输入的两个整数n和l,并按字母顺序生成所有可能的密码,由以下5个字符组成:
符号1:i,从1到n的数字。
符号2:j,从1个到n的位数。
符号3:字母,拉丁字母表前l个字母中的小写字母
符号4:第二个字母,拉丁字母表前l个字母中的小写字母
符号5:d,从1到n的数字,大于前两位数字
输入从控制台读取,由间隔为[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;
}

您可能想做:

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',它是这样的。。。

相关内容

  • 没有找到相关文章

最新更新