C++:停止我的 Fizz Buzz 程序中的最后一个增量
C++: stopping last increment in my Fizz Buzz program
因此,作为编码挑战的一部分,我尝试在不查看解决方案的情况下用 C++ 编写 Fizz Buzz 程序。对于那些不知道的人,它应该是一个循环,用 Fizz
替换任何能被 3 整除的数字,用 Buzz
替换任何能被 5 整除的数字,用 [= 替换任何能被两者整除的数字14=]:
1
2
Fizz
4
Buzz
6
7
8
Fizz
Buzz
11
Fizz
下面的代码就快完成了,但是,我有点恼火,尽管我希望循环完全停止在 100,但我设置程序的方式意味着额外的 1在循环结束后添加到 i
。有没有办法阻止我的 FizzBuzz 程序超过 100?
#include <iostream>
using namespace std;
int main () {
for (int i = 1; i < 100; ++i){
if (i % 3 == 0 && i % 5 == 0){
cout << "FizzBuzz\n";
i = i + 1;
}
if (i % 3 == 0){
cout << "Fizz\n";
i = i + 1;
}
if (i % 5 == 0){
cout << "Buzz\n";
i = i + 1;
}
cout << i << "\n";
}
}
所以我稍微修正了你的代码:
int main()
{
for (int i = 1; i < 101; ++i)
{
if (i % 3 == 0 && i % 5 == 0)
cout << "FizzBuzz\n";
else if (i % 3 == 0)
cout << "Fizz\n";
else if (i % 5 == 0)
cout << "Buzz\n";
else
cout << i << "\n";
}
}
每次你做 i = i + 1;
,它有点没用,因为你的循环就是这样做的。另外,我把一切都放在一个 if else
链中,而不是和 if if
链中。这样只有 on 语句才会在任何给定时间执行。还将最大值更改为 101 而不是 100,因为 for 循环将在 101 处停止并且不会打印 101 的结果。
希望这对您有所帮助:)
在 c++ 中,变量有一个 lifetime,称为它们的作用域,并且在它们的生命期到期后被删除。在循环声明中定义的 i 的范围受 for 循环的右括号“}”限制。因此,变量 i 在 循环后 不存在,仅在循环期间存在。但是在您提供的代码中,问题是您多次递增 i 。在你的 for 循环中,每次执行 for 循环的主体时,你都会递增 i,但在该主体内,当它可以被 5 或 3 或两者或两者都整除时,你会递增 i。您可以删除所有 i = i + 1;语句并删除大部分错误。
因此,作为编码挑战的一部分,我尝试在不查看解决方案的情况下用 C++ 编写 Fizz Buzz 程序。对于那些不知道的人,它应该是一个循环,用 Fizz
替换任何能被 3 整除的数字,用 Buzz
替换任何能被 5 整除的数字,用 [= 替换任何能被两者整除的数字14=]:
1
2
Fizz
4
Buzz
6
7
8
Fizz
Buzz
11
Fizz
下面的代码就快完成了,但是,我有点恼火,尽管我希望循环完全停止在 100,但我设置程序的方式意味着额外的 1在循环结束后添加到 i
。有没有办法阻止我的 FizzBuzz 程序超过 100?
#include <iostream>
using namespace std;
int main () {
for (int i = 1; i < 100; ++i){
if (i % 3 == 0 && i % 5 == 0){
cout << "FizzBuzz\n";
i = i + 1;
}
if (i % 3 == 0){
cout << "Fizz\n";
i = i + 1;
}
if (i % 5 == 0){
cout << "Buzz\n";
i = i + 1;
}
cout << i << "\n";
}
}
所以我稍微修正了你的代码:
int main()
{
for (int i = 1; i < 101; ++i)
{
if (i % 3 == 0 && i % 5 == 0)
cout << "FizzBuzz\n";
else if (i % 3 == 0)
cout << "Fizz\n";
else if (i % 5 == 0)
cout << "Buzz\n";
else
cout << i << "\n";
}
}
每次你做 i = i + 1;
,它有点没用,因为你的循环就是这样做的。另外,我把一切都放在一个 if else
链中,而不是和 if if
链中。这样只有 on 语句才会在任何给定时间执行。还将最大值更改为 101 而不是 100,因为 for 循环将在 101 处停止并且不会打印 101 的结果。
希望这对您有所帮助:)
在 c++ 中,变量有一个 lifetime,称为它们的作用域,并且在它们的生命期到期后被删除。在循环声明中定义的 i 的范围受 for 循环的右括号“}”限制。因此,变量 i 在 循环后 不存在,仅在循环期间存在。但是在您提供的代码中,问题是您多次递增 i 。在你的 for 循环中,每次执行 for 循环的主体时,你都会递增 i,但在该主体内,当它可以被 5 或 3 或两者或两者都整除时,你会递增 i。您可以删除所有 i = i + 1;语句并删除大部分错误。