我是菜鸟,所以请原谅我愚蠢...
基本上,假设密钥是26个字符,由字母组成,不允许重复的字符。
所以我想做的是拿住钥匙的第一个字母,按住它,然后搜索钥匙的其余部分,看看是否有重复的字母。如果是这样,它将返回错误值1。
string keycopy = "JTREKYAVOGDXPSNCUIZLFBMWHQ";
for (int i = 0; i < keylength; i++)
{
// check if all is alphabet, check for repeated chars
int c = keycopy[i]; //current char, save and then loop
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
{
continue;
}
else
{
printf("Alphabet only please\n");
return 1;
}
for (int j = i + 1; j < keylength; j++)
{
if (keycopy[j] == c)
{
printf("No repeating characters please\n");
return 1;
}
}
}
我很确定在这里我要获取密钥副本的第一个字符,并将其仅与密钥副本的第二个字符进行比较,但是我想比较密钥副本的第一个字符并将其与整个密钥副本的其余部分进行比较,一个字符时间。我还没有了解指针。
第二个for循环是死代码,它永远不会到达,因为continue
for会跳到for循环的下一个迭代。
替换为
if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
{
printf("Alphabet only please\n");
return 1;
}
我也认为,最好将其声明c
为,char
而不是int
,这样可以减少以后发生无法预料的错误的风险。
char c = keycopy[i]; //current char, save and then loop
有一种更有效的方法来测试是否已经在没有第二个循环的情况下看到了一个字符,但是对于本练习,我认为您当前的代码到目前为止已经足够了
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句