0

私は c でのプログラミングは初めてですが、コンパイル後にこのコードが正しく実行されない理由がわかりません。今のところ、エラーなしで 10 から 100 の間の数字を取りたいだけです。その後、エラーの場合は return 1 を追加し、成功の場合は 0 を追加します。

#include <stdio.h>
#include <stdlib.h>

int intGet(int, int);
int error();

int main(void)
{
    int Min, Max, UserIn;
    Min = 10;
    Max = 100;

    printf("Enter a number in between [10 -­100]: \n");
    scanf("%d", &UserIn);
    printf("Read %d\n", UserIn);

    while (UserIn < Min && UserIn > Max)
    {
        printf("Invalid \n");
        scanf("%d", &UserIn);
    }
    /* What I did to fix
      while ((UserIn > Min) || (UserIn < Max)){
         printf("Enter a number in between [10 -­100]: \n");
         scanf("%d",&UserIn);       
         printf("Read %d\n",UserIn);

       while ((UserIn < Min) || (UserIn > Max)){
         printf("Invalid \n");
         scanf("%d", &UserIn);
          printf("Read %d\n", UserIn);


       }
      }*/

    return EXIT_SUCCESS;
}

int intGet(int min, int max)
{

}

int error()
{

}
4

4 に答える 4

2

while (UserIn < Min && UserIn > Max)

userIn両方の条件を満たすことはできません。次のように変更します。

whihe (userIn < Min || userIn > Max)

于 2013-09-12T03:30:53.587 に答える
1

scanfそれが値を返すことを理解していますか? http://linux.die.net/man/3/scanfを参照

1 が返されない場合は、何らかの入力を「食べる」必要があります。

文字列を読み取って解析する方がよいでしょう。

また

while (UserIn < Min && UserIn > Max)

する必要があります

while (UserIn < Min || UserIn > Max)
于 2013-09-12T03:31:57.263 に答える
0

交換

while (UserIn<Min && UserIn>Max){

と:

while (UserIn<Min || UserIn>Max){

また、while ループを do ... while に置き換えることもできます。その後、二重スキャンはありません

于 2013-09-12T03:31:48.463 に答える
0

これをデバッグするには、次のコードを試してください。

while ((UserIn < Min) || (UserIn > Max))
{
    printf("Invalid \n");
    scanf("%d", &UserIn);
    printf("Read %d\n", UserIn);
}

また、この while ループは、Userin の最初の入力値が < 10 または > 100 の場合にのみ実行されます。

于 2013-09-12T03:40:52.943 に答える