0

私は数時間の経験を持つ初心者で、IF コマンドに慣れるために本当に簡単なプログラムを作成しようとしています。私はこのコードを思いつきました:

#include<stdio.h>

int main()
{
    char ans;
    char n;
    char y;
    printf("Do you want to exit?\n");
    scanf("%c\n",ans);
    if (ans == y)
    {
        printf("As you wish!\n");
        return 0;
    }
    else (ans == n);
    {
        printf("You'll exit anyways!\n");
        return 0;
    }
}

うまくいくと思いますが、何かを入力すると、プログラムが動かなくなります! 前もって感謝します!

4

3 に答える 3

9

if (ans == y)

読むべき

if (ans == 'y')

ans前者は初期化されていない変数の値と比較しますがy、後者ansは文字が含まれているかどうかをチェックします'y'

についても同様です'n'

および変数は不要でありyn削除できます。

また、次の行は正しくありません。

else (ans == n);

それは読むべきです

else if (ans == 'n')

(私は追加しif、セミコロンを削除しました。)

最後に、 は次のようにscanf()なります。

scanf("%c",&ans);
于 2013-03-23T13:55:24.477 に答える
3
else (ans == n);

これでは期待した結果が得られません。および 条件を削除し;ます。 elseコードの本体のみを使用できます。条件を処理しません。条件が必要な場合は、次を使用しますelse if

else if (ans == 'n')

その他のエラー:

if (ans == y)

ここで y は、宣言されているが値を持たない変数を指します。確かにあなたはキャラクターを参照したい'y'

if (ans == 'y')

また、scanfはポインタを期待するので、 の代わりにansを使用します&ans。値のメモリアドレスに書き込む必要があります。値は気にしません。最終的にポインターについて学習します。(数時間の経験でそれらを調べていないと仮定して)

于 2013-03-23T13:56:15.267 に答える
2

主なエラーは 3 つあります。

  • 関数にポインタを渡す必要があるため、 ( )scanfの前にアンパサンドを追加する必要があります。ans&ans

  • ステートメント;の最後にトレーリングがあります。else

  • yは変数 (存在しない) を参照しますが、文字ansと比較したい場合は、 'y'

于 2013-03-23T13:56:13.277 に答える