用于状态增量/减量误差 我对使用C++是新的。我读过书,也使用过互联网。在这里-练习16-)
我不明白为什么我的“for”语句不起作用,因为它似乎符合标准。完整代码如下所示,我将指出不适用于我的位:用于状态增量/减量误差 我对使用C++是新的。我读过书,也使用过互联网。在这里-练习16-),c++,function,for-loop,C++,Function,For Loop,我不明白为什么我的“for”语句不起作用,因为它似乎符合标准。完整代码如下所示,我将指出不适用于我的位: #include <iostream> using namespace std; void primecheck(int z) { bool primes = true; // start at 1 because anything divisible by zero is an error for (int i=1; i<=z; i++)
#include <iostream>
using namespace std;
void primecheck(int z)
{
bool primes = true;
// start at 1 because anything divisible by zero is an error
for (int i=1; i<=z; i++)
{
if (z%i == 0)
{
// ignore if divisible by 1 or itself do nothing
if ( i == z || i == 1)
{}
// if it can be divided by anything else it is not a prime
else
{
primes = false;
//break;
}
}
}
(primes == true) ? (cout << z << " is a prime number" << endl) : (cout << z << endl);
}
int main()
{
int x;
cout << "Enter a number to see if it is a prime number" << endl;
cin >> x;
for (x; x>0; x--)
{
primecheck(x);
}
}
#包括
使用名称空间std;
无效预检查(int z)
{
布尔素数=真;
//从1开始,因为任何可以被零整除的东西都是错误的
对于(int i=1;i您需要:
for (; x>=1; x--)
{
primecheck(x);
}
您前面所说的,只要x为,就继续这个for循环
即:
x;
毫无意义,因为它什么都不做
<代码>的中间部分为循环不是一个停止条件。循环只要它是真的就运行。当你输入一个高值,如<代码> 5代码>,<代码>如果你输入<代码> 5 < /代码>然后<代码> x,这不是问题,但是对于从<代码> PrimeChuest的输出,使用<代码>如果语句。on用于计算值。将其纯粹用于副作用是错误的。只需了解for循环中的中间表达式是一个条件检查表达式。如果为true,则继续执行body,否则结束循环。现在,如果输入5,则它将大于1,但您的条件要求它大于1。因此循环将结束。Alternatively,cout Thank sheep&Pete Becker,我只是想用尽可能多的东西来获得经验。我知道这可能是“误用”,但我仍在学习,所以我会记住:)我只是想帮你。请告诉我否决我的答案的原因,以帮助我获得更好的答案。我最初否决了你的答案,因为最初它只是“你需要这样做:代码片段
”这不是好的代码:x;
什么都不做。是的,但我有一个解释。我加了它。我想在解释之前提供狙击手,这样OP就可以处理一些事情。我马上加了解释,但你的回答仍然是“你需要做坏代码”
”。我不喜欢那些建议使用错误代码的答案。错误代码是怎么回事?它是一个简单的for循环。x;并不是毫无意义的,因为它是一个保存值OP希望循环运行的变量。谢谢,我理解你现在所说的。虽然“for”循环保持为真,但它会继续运行,但一旦它为假/超出范围,它就会停止。
for (; x>=1; x--)
{
primecheck(x);
}
for (x; x<=1; x--)
{
primecheck(x);
}
x;
while (x<=1)
{
primecheck(x);
x--;
}