1

私が書こうとしているプログラムの場合、ユーザーに数値を入力するように要求し、ユーザーがループを停止するために -1 を入力するまで、入力されたすべての数値の合計を計算するプログラムを作成する必要があります。ただし、-1を印刷したり、合計に追加したりすることはできませんが、苦労しています。

#include <stdio.h>

int main ()
{
    int x, total;

    total = 0;
    x = 0;

    while (x <= -2 || x >= 0)
    {

        printf("Please enter a number: ");
        scanf("%d", &x);

        printf("You entered %d \n", x);

        totalSum = total + x;
        printf("total is %d \n", total);

    }

    printf("Have a nice day :) \n");
    printf("total is %d \n", total);

    return 0;
}

ループを印刷したり合計に追加したりせずに -1 でループを停止する方法について何か提案はありますか?

4

2 に答える 2

2

ループの開始時に入力が等しいかどうかを確認できます。等しい場合は-1、計算する代わりに終了します。

while(1) {
    printf("Please enter a number: ");
    scanf("%d", &x);      

    if (-1 == x)
      break;

     ...
 }
于 2013-03-15T03:53:59.110 に答える
0

申し訳ありませんが、条件付きブレークのみによって駆動されるループを見ると、ただうんざりします。while(1)次のようなものはどうですか:

printf("Please enter a number: ");
while(scanf("%d", &x) == 1 && x != -1)
{
    // do work

    printf("Please enter a number: ");
}

この方法の欠点の 1 つは、出力が重複することですが、while 条件を使用することの利点は、実際にはそれを補う以上にループを駆動すると考えています。追加の利点は、scanf もここでチェックされ、次の値が正しく読み取られていることを確認することです。

于 2013-03-15T11:59:09.873 に答える