簡體   English   中英

C++ cout 不能在里面工作,如果?

[英]C++ cout won't work inside for and if?

我有這兩段代碼作為我的家庭作業。 代碼對我來說看起來很好,但無論如何它都不會打印出我想要的東西。 事實上,控制台輸出仍然完全是空的。

第一個程序應該打印出滿足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;
}

也不行。

在我看來,這兩段代碼似乎都有相同的問題,因為它們的編寫方式相同,基於相同的原理,並且錯誤相同。 因此我的假設,原因也是一樣的。

不幸的是,為了我的愛,我根本看不出所說的錯誤是什么......

對於第一個代碼:

我認為你應該用 i 調用 ladna 函數,比如ladna(i)

對於第二個代碼:

for它應該是i<=a

'%' 是模運算符,在(a%i)的執行過程中,您將 a 與 i 相除並取余數,因為我從零開始,由於被零除,您將得到“浮點異常(核心轉儲)”。 所以, for應該從 1 開始。這應該有效:

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

    if (a%i == 0){

        cout << i << endl;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM