-3

私の課題は、2 種類のループ (For、While、do While) を使用することです。タスクは、ユーザーに 1 から 10 までの数字を入力するように求めることであり、プログラムは 0 からユーザー数までカウントします。また、ユーザーが 1 ~ 10 以外の数字を入力した場合、プログラムはエラー メッセージを表示し、ユーザーに数字の再入力を求めることができなければなりません。正常に動作しています。ただし、範囲内の数値を入力すると、何も実行されないか、0 からその数値まで無限にカウントされ、カウントのループが停止しません。助けてください!

#include <stdio.h>

int main(void)

{
    //Variables
    int num;
    int zero;

    //Explains to the user what the program will do
    printf("This program will count from 0 to a number you pick.\n\n");

    //Asks the user to input a value
    printf("Please enter a number (between 1 and 10): \n");
    scanf("%d", &num);


    //If the correct range was selected by the user
    while ( num >= 1 && num <= 10 )
    {
            for ( zero = 0; zero <= num; zero++ )
            {
                    printf("%d...", zero);

            }
    }

    //If a value outside of the accepted range is entered
    while ( num < 1 || num > 10)
    {
            printf("I'm sorry, that is incorrect.\n");
            printf("Please enter a number (between 1 and 10): \n");
            scanf("%d", &num);
    }


    printf("\n\n\n");

    return 0;


}
4

3 に答える 3

1
 while ( num >= 1 && num <= 10 )
    {
            for ( zero = 0; zero <= num; zero++ )
            {
                    printf("%d...", zero);

            }
    }

num はループ内で変更されないため、num が 1 から 10 の間の場合、永久に実行されます。

「悪い」値を入力すると、これをスキップして 2 番目の while ループに入ります。ただし、「適切な」値を入力して while ループから抜け出すと、あとは実行するだけです。

printf("\n\n\n");

return 0;

最初の while ループを取り除き、2 番目のループを for ループの上に移動する必要があります。

#include <stdio.h>

int main(void)

{
    //Variables
    int num;
    int zero;

    //Explains to the user what the program will do
    printf("This program will count from 0 to a number you pick.\n\n");

    //Asks the user to input a value
    printf("Please enter a number (between 1 and 10): \n");
    scanf("%d", &num);

    //If a value outside of the accepted range is entered
    while ( num < 1 || num > 10)
    {
            printf("I'm sorry, that is incorrect.\n");
            printf("Please enter a number (between 1 and 10): \n");
            scanf("%d", &num);
    }

   for ( zero = 0; zero <= num; zero++ )
   {
            printf("%d...", zero);

   }

    printf("\n\n\n");

    return 0;
}
于 2013-10-10T00:48:36.997 に答える
0

本当にシンプル!

while ループ内でブレークを使用できます。

#include <stdio.h>

int main(void)

{
//Variables
int num;
int zero;

//Explains to the user what the program will do
printf("This program will count from 0 to a number you pick.\n\n");

//Asks the user to input a value
printf("Please enter a number (between 1 and 10): \n");
scanf("%d", &num);


//If the correct range was selected by the user
while ( num >= 1 && num <= 10 )
{
        for ( zero = 0; zero <= num; zero++ )
        {
                printf("%d...", zero);

        }
        break; // !!! Here !!!
}

//If a value outside of the accepted range is entered
while ( num < 1 || num > 10)
{
        printf("I'm sorry, that is incorrect.\n");
        printf("Please enter a number (between 1 and 10): \n");
        scanf("%d", &num);
}


printf("\n\n\n");

return 0;


}
于 2013-10-11T01:21:50.880 に答える