【解決方法】偶数を見つけるCプログラム.

[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)。

次のアプローチを試してください。

  1. 偶数のカウンターを定義します。 even_count そしてそれを初期化します 0.
  2. 整数を読み取る、と言う n 入力シーケンスから (使用 scanf)。
  3. もしも n==0 の値を印刷する even_counterプログラムを終了します
  4. ここ n がゼロでない場合、そのパリティをチェックします: if n 増分は偶数です even_count
  5. ポイント 2 に移動

解決策 4

見積もり:

「2 3 5 -2 20 0」の入力 0 に会うまで

1. 配列を検索せずに結果を出力する
2. 配列はどこにあり、n が読み込まれるのはなぜですか?
3. 配列の要素ではなくインデックスが検索されるのはなぜですか?
注: abs() がなくても、結果は 2,-2,20 – 「3 つの偶数が見つかりました」です。

[ad_2]

コメント

タイトルとURLをコピーしました