[ad_1]
「2 3 5 -2 20 0」の入力から、すべての偶数を見つけるために 0 を満たすまでの宿題があります。 私が書いた :
#include <stdio.h> int main() { int i, n; scanf("%d", &n); printf("I found %d even numbers \n", n); for(i=1; i<=n; i++) { if(i%2 == 0) { printf("%d\n", i); } } return 0; }
印刷すると、偶数が2つあることがわかります。 負の数を認識していないと思います。 どうすればそれを修正できますか?
私が試したこと:
……………………………………………
解決策 1
テストを行うときは、 abs
テストされた値が正の値であることを確認する関数。 詳細は次のとおりです。 C ライブラリ関数 – abs()[^]
解決策 2
Graeme が言ったことに付け加えると、最も簡単な解決策は、奇妙なものをすべて無視することです。
ループを 1 から開始して 1 ずつ増やす代わりに、2 から開始して 2 ずつ増やします。
C
for (int i = 2; i <= n; i += 2) ...
偶数はすべて 2 の倍数なので、その間の数に注目する必要はありません。
解決策 3
見積もり:印刷すると、2つの偶数があることがわかります
プログラムは入力シーケンスの最初の整数を出力するだけだからです。
実際のところ、入力シーケンスを入力すると
3 19 27 42
次に印刷します
I found 3 even numbers
現状では、あなたのプログラムは完全に壊れています。 必要な入力シーケンスが与えられます 完全にプロセス (まあ、見つかるまで処理する必要があります 0
)。
次のアプローチを試してください。
- 偶数のカウンターを定義します。
even_count
そしてそれを初期化します0
. - 整数を読み取る、と言う
n
入力シーケンスから (使用scanf
)。 - もしも
n==0
の値を印刷するeven_counter
と プログラムを終了します - ここ
n
がゼロでない場合、そのパリティをチェックします: ifn
増分は偶数ですeven_count
- ポイント 2 に移動
解決策 4
見積もり:「2 3 5 -2 20 0」の入力 0 に会うまで
1. 配列を検索せずに結果を出力する
2. 配列はどこにあり、n が読み込まれるのはなぜですか?
3. 配列の要素ではなくインデックスが検索されるのはなぜですか?
注: abs() がなくても、結果は 2,-2,20 – 「3 つの偶数が見つかりました」です。
[ad_2]
コメント