2

ユーザーから2つの整数を取得し、それらの入力の合計を変数に入れることができるプログラムが必要です。その後、合計が5を超えているかどうかを確認しますか? ( if 、 ... でできることはわかっていますが、 while でやりたいです)。私自身がやりましたが、いくつか問題があります。何が問題なのか、どうすればデバッグできるのか教えていただけませんか?これが私のコードです:

#include <stdio.h>
int main()
{
    int ui1;
    int ui2;
    puts("Please enter two numbers:");
    scanf("%2i", &ui1, &ui2);
    int sum;
    sum = ui1+ui2;
    while(sum > 5) { 
         printf("Whats up !");
    }
    return 0;
}
4

5 に答える 5

6

この行は、1 つの整数のみをスキャンしています ( %i22桁のみを示す形式で)。

scanf("%2i", &ui1, &ui2);

しかし、2 つの整数を受け取ることを期待していたようです。
これにより、2 番目の引数 が初期化されないままになりui2ます。(少なくとも、正常に
満たされるはずです)ui1

代わりに試してください:

scanf("%i %i",  &ui1, &ui2);
于 2013-09-16T15:41:21.727 に答える
2

scanf ステートメントをループに含めてみてください。無限ループではなくなります... (整数を逆参照する必要もあります。編集を参照してください)

#include <stdio.h>
int main()
{
    int ui1;
    int ui2;
    puts("Please enter two numbers:\n");
    //scanf("%2i", &ui1, &ui2);
    int sum = 10;//(so that it will enter the loop at least once)
    //sum = ui1+ui2;
    while(sum > 4) 
    { 
        printf("enter number 1:\n");
        scanf("%i", &ui1); //EDIT &
        printf("enter number 2:\n");
        scanf("%i", &ui2); //EDIT &
        sum = ui1+ui2;        
    }
    printf("result is:  %d\n", sum);
    getchar();//so you can see the result;
    getchar();
    return 0;
}
于 2013-09-16T16:45:57.067 に答える
1

実際、 while はループ stmt であり、条件付きチェッカーではありません

条件チェッカーを使いたいならif...else系、スイッチなど

注: あなたのコードループではif(sum> 5)が始まり、決して終わらない(無限の「Whats up !」)

sum = ui1+ui2;
while(sum > 5)  ///loop starts if (sum > 5) and never ends (infinate "Whats up !")
{ 
     printf("Whats up !"); // (infinate "Whats up !")
}

  if(sum > 5)

  {

  //greater stuff
  }

   else

{

   //lower stuff
}

ここでチュートリアルを参照して ください

于 2013-09-16T15:44:23.570 に答える
1

そうしないとwhileループが永遠に真になるため、「合計」をリセットする必要があります。次に、入力 scanf が単純に間違っています。

ここに正しいコード

#include <stdio.h>
int main()
{
    int ui1;
    int ui2;
    puts("Please enter two numbers:");
    scanf("%d %d", &ui1, &ui2);
    int sum;
    sum = ui1+ui2;
    while(sum > 4) { printf("Whats up !");
    sum=0;}
    return 0;
}
于 2013-09-16T15:42:05.057 に答える
0

私はあなたが何をしたいのか分かりません...しかし、単にwhileステートメントを使用して2つの整数の合計を確認したい場合は、whileループ内にブレークを入れることができ、すべてが機能します:)

#include <stdio.h>
int main()
{
    int ui1;
    int ui2;
    puts("Please enter two numbers:");
    scanf("%2i", &ui1, &ui2);
    int sum;
    sum = ui1+ui2;
    while(sum > 5) { 
         printf("Whats up !");
         break;
    }
    return 0;
}

他の人があなたに言ったように、 if を使用することが最善の解決策です

于 2013-09-16T17:44:31.440 に答える