C ++ cout无法在for和for中使用?

时间:2016-03-31 15:34:09

标签: c++ codeblocks cout

我将这两段代码作为我的家庭作业。代码对我来说看起来很好,但无论如何都不会打印出我想要的内容。实际上,控制台输出仍然是完全空的。

第一个程序应该打印出符合ladna()功能要求且介于1a之间的所有数字:

#include <iostream>

using namespace std;

int a;
int i = 1;

bool ladna(int a)
    {
    if((((a>>4)*5+a*2)%3)==1)
        return true;
    else
        return false;
    }

int main()
{

    cerr << "Podaj liczbe: " << endl;
    cin >> a;

    while (i <= a){

        if (ladna(a)){
            cout << i << " ";
        }

        i++;

    }

}

ladna()函数是预制的,我必须按原样使用它。

我尝试将while更改为do...whilefor,但没有帮助。不能使用cerr

第二个代码必须打印出数字a的所有自然除数。

#include <iostream>

using namespace std;

int main()
{

    int a;

    cerr << "Podaj liczbe" << endl;
    cin >> a;

    for (int i = 0; i >= a; i++){

        if (a % i == 0){

            cout << i << endl;
        }

    }

    return 0;
}

也不起作用。

对我来说,看起来两段代码都有相同的问题,因为它们是以相同的方式编写的,基于相同的原理,并且错误是相同的。因此我的假设是,原因也是一样的。

不幸的是,对于我的爱,我根本看不出错误是什么......

1 个答案:

答案 0 :(得分:1)

第一个代码:

我认为你应该用i调用ladna函数,比如ladna(i)

对于第二个代码:

for中,它应为i<=a

'%'是模运算符,在执行(a%i)期间,你用i除以并取余数,因为我从零开始,你将得到“浮点异常(核心转储)”零。因此,for应该以1开头。这应该有效:

for (int i = 1; i <= a; i++){

    if (a%i == 0){

        cout << i << endl;
    }
}