[英]C++ cout won't work inside for and if?
我有這兩段代碼作為我的家庭作業。 代碼對我來說看起來很好,但無論如何它都不會打印出我想要的東西。 事實上,控制台輸出仍然完全是空的。
第一個程序應該打印出滿足ladna()
函數要求並且在1
和a
之間的所有數字:
#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...while
和for
,但沒有幫助。 也不適用於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.