1

以下は、私が取り組んでいるコード スニペットです。入力には 4 つの値が必要ですが、ユーザーが正しい値を入力するまで、同じ値を入力し続ける必要があります。よろしくお願いします

#include<stdio.h>
#include<math.h>

int
main(int argc, char *argv[])
{
        int days;
        float peny;

        do{
                printf("Enter Number of days: ");
                scanf("%d", &days);
        }
        while ((days != 28) || (days != 29) ||(days != 30) ||(days != 31));
        printf("Number of days are %d", days);


}
4

4 に答える 4

5

ループ条件が何を言っているのか考えてみてください。これらの個々の条件のいずれかがまだ真である間、または別の言い方をすれば、それらすべてが同時に偽になるまでループし続けます。それは可能ですか?

于 2012-04-19T00:15:37.427 に答える
2

while((日<28)||(日>31)); // すなわち。低すぎるか高すぎるため、日は違法です

于 2012-04-19T00:19:18.280 に答える
2

条件

(((days != 28) || (days != 29) ||(days != 30) ||(days != 31)))

do-whiledays の値を同時に 28、29、30、31 にすることはできないため、ループ内では常に true になります。or 演算子は and に変更できます。

while ((days != 28) && (days != 29) && (days != 30) && (days != 31));
于 2012-04-19T00:33:16.597 に答える
1

からの戻りステータスを常にテストしscanf()ます。1 と表示されない場合は、おそらくユーザーがaの代わりに入力したために失敗しています31

ユーザーがイライラしないように、連続して失敗した回数をカウントすることを検討してください (カウントが高くなりすぎた場合は救済します)。

fgets()入力を読み取っsscanf()て解析するために使用することを検討してください。一般に、管理が容易です。

C++ には C++ を、C には C を使用することを検討してください。あなたが示しているのは、C++ プログラムではなく C プログラムです (ただし、私の目が私を欺かない限り、実際には C++ でコンパイルできます)。一般に、言語は大きく異なります。

final の最後に改行を含めますprintf()

于 2012-04-19T00:15:37.303 に答える