【发布时间】:2020-08-11 04:48:00
【问题描述】:
只要字母表的ith 值包含在函数的输入中,我就会尝试将函数输入字符串的jth 值替换为'0'。
每当alphabet[i] 等于输入x[j] 时,我希望这个for 循环增加i,但它会卡在i 上。这是怎么回事??
P.S这是一门编程入门课程(CS50),它使用的语法与标准 C 不同。
void checkrepeat(string x)
{
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int alphalen = strlen(alphabet);
for (int i = 0; i < alphalen; i++)
{
for (int j = 0; j < strlen(x); j++)
{
if (alphabet[i] == x[j])
{
x[j] = '0';
printf("%i,", i);
printf("%c,", alphabet[i]);
printf("%s\n", x);
}
}
}
}
值为 x = 'AAA' 的函数的输出给了我
0,A,0AA
0,A,00A
0,A,000
我期待它给我
0,A,0AA
1,B,0AA
2,C,0AA
【问题讨论】:
-
“我希望这个 for 循环在字母表[i] 等于输入 x[j] 时增加 'i'” - 为什么?你永远不会在那种情况下增加它
-
“我希望这个 for 循环在字母表[i] 等于输入 x[j] 时增加 'i'”。你的代码没有这样做。
if (alphabet[i] == x[j])块不包含到i的任何增量。建议您使用调试器单步执行代码并在运行时观察变量值。 -
@klutt 不用于 (int i; i i++) i++ 使 'i' 增加?
-
@kaylum 也许我对 For-Loop 有一个错误的想法。我认为 for 循环中包含的任何内容都已完成,i++ 中的“i”增加了。
-
是的,它确实增加了,但那是外循环。
j将从0到strlen(x)每增加一次i运行一次