如何解决我的For循环计数器未按预期增加 1-x='AAA'的预期输出 2-您对作业的解释 3-您对作业的解释
每当函数的输入中包含字母的第for (let i = 1; i < 6; i++) {
var cls = ".star_".concat(i);
var sp_cls = ".star_color_".concat(i);
$(cls).click(function() {
$(sp_cls).toggleClass(sp_cls.slice(1));
$("#rate").html("<b>Hello world!</b>");
console.log(i);
});
}
个值时,我都会尝试将函数的输入字符串的第<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<!-- Rating Stars Box -->
<div class='rating-stars text-center p-2 mt-3'>
<h5 id="rate">Rate this answer here!</h5>
<ul id='stars'>
<li class='star_1' title='Poor' data-value='1'>
<span class='star_color_1'>
<i class='fa fa-star fa-fw fa-2x'></i>
</span>
</li>
<li class='star_2' title='Fair' data-value='2'>
<span class='star_color_2'>
<i class='fa fa-star fa-fw fa-2x'></i>
</span>
</li>
<li class='star_3' title='Good' data-value='3'>
<span class='star_color_3'>
<i class='fa fa-star fa-fw fa-2x'></i>
</span>
</li>
<li class='star_4' title='Excellent' data-value='4'>
<span class='star_color_4'>
<i class='fa fa-star fa-fw fa-2x'></i>
</span>
</li>
<li class='star_5' title='WOW!!!' data-value='5'>
<span class='star_color_5'>
<i class='fa fa-star fa-fw fa-2x'></i>
</span>
</li>
</ul>
</div>
个值替换为j
。
我希望每当'0'
等于输入i
时,此for循环都会递增i
,但这样做时会卡在alphabet[i]
上。这是怎么回事?
PS 这是一门入门编程课程(CS50),它使用的语法与标准C不同。
x[j]
x ='AAA'的函数输出给了我
i
我希望它能给我
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);
}
}
}
}
解决方法
这是我的第一篇文章,如果我太冗长或不遵循任何未说的规则,请原谅。我会很乐意在我提供更多建议时提出任何建议。
我可能是错的,但看起来"Your expected output pattern"
和"your interpretation of assignment"
是矛盾的。
让我解释为什么?
1-x='AAA'
的预期输出
I am expecting it to give me
0,A,0AA
1,B,0AA
2,C,0AA
2-您对作业的解释
将函数输入字符串的
'j'th
值替换为'0'
只要函数输入中包含字母的'i'th
值。
在这里,您将何时解释为"update input string with '0' for **ALL** matches"
即用A's
替换所有0's
。
如果我按照解释[2]进行操作,则x='AAA'
的您的功能代码“按原样” 的输出将像这样打印
0,0AA
0,00A
0,000
i loop with j=1 will run but nothing is printed because there is no B in input string
i loop with j=2 will run but nothing is printed because there is no C in input string
and this will continue till Z
and the loop will end
顺便说一句-希望您能看到解决方案中CPU处理能力的浪费。
如果您的解释[2]是正确的,那么您对输出[1]的期望是错误的,反之亦然。
假设解释[2]是正确的,那么您需要按如下所示更改代码,但是输出将与预期输出[1]不同。
void checkrepeat(char x[])
{
char 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,000
1,000
2,000
...
25,Z,000
作为一个示例,当x='ABCDZABCDZ'
时,预期输出看起来像
0,0BCDZ0BCDZ
1,00CDZ00CDZ
2,000DZ000DZ
3,D,0000Z0000Z
4,E,0000Z0000Z
...
25,0000000000
打开此链接以查看C语言中的工作代码
https://onlinegdb.com/rJhda-gMP
3-您对作业的解释
我希望这个for循环会递增
'i'
,只要alphabet[i]
等于输入x[j]
在这里,您将无论何时解释为“一旦找到第一个匹配项,就用'0'
更新输入字符串并递增'i'
”
假设解释[3]是正确的,需要更改以下代码才能打印您的预期输出[1]
void checkrepeat(char x[])
{
char 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';
break;
}
}
printf("%i,x);
}
}
如果我遵循解释[3],则它符合预期的输出[1],对于x='AAA'
,您的函数将按以下方式打印
0,0AA
...
25,0AA
作为一个示例,当x='ABCDZABCDZ'
时,预期输出看起来像
0,0BCDZABCDZ
1,00CDZABCDZ
2,000DZABCDZ
3,0000ZABCDZ
4,0000ZABCDZ
...
25,00000ABCDZ
打开此链接以查看C语言中的工作代码
https://onlinegdb.com/rJhda-gMP
希望有帮助。
,首先,,
是一个错误。您可能并不打算在%c
之后使用i
。删除它。
第二,很容易松开嵌套循环中的逻辑,特别是对于初学者。如果您还没有了解调试器,请写下来并进行遍历。
现在,当++
和alphabet[i]
之间存在匹配项时,您可能不希望x[j]
到i
,因为for
是循环计数器,并且不应被这样弄乱(您可能将while
循环与int x
循环相混淆,或者来自诸如Scratch之类的东西)。
我建议为此任务声明一个单独的变量,例如x++;
。
正如评论中已经提到的那样,您实际上并没有实现这种增量(在if语句中使用简单的i++
),并且错误地假定您的x
for循环已为您完成。
同样,我建议您先读一读书,然后再回过头来看看for循环的确切工作原理,该循环经常在C语言中经常使用,因此您不能 strong>对它的关键概念模糊不清。
此外,您似乎希望字符串0AA
保留为if()
...如果是这种情况,为什么您的{{1}中 first 语句会如此}是x[j] = '0';
吗?这将使j
的第每个x
元素与alphabets
匹配为'0'
。
此外,在期望的输出中,尽管明确指出,您期望alphabet[i]
依次为A
,然后依次为B
和C
。在您的问题中,您已通过x
作为"AAA"
(显然不能与B
或C
匹配)。
也许您还没有写清楚的“ 我期望”。如果问题中提供的代码不可能,请不要包含示例预期输出。它使我感到困惑,并可能使任何人困惑。我认为您已大大缩短了S.O的代码。但提供了您在计算机上拥有的原始代码的预期输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。