2013-03-15 64 views
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循環沒有它打印或加總?

回答

2

您可以檢查是否輸入是在循環的開始等於-1,如果是的話退出而不進行計算:

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

    if (-1 == x) 
     break; 

    ... 
} 
+0

哦,所以我需要添加條件來打破循環?謝謝你,分析它對我來說越來越清晰。 – user2092535 2013-03-15 04:09:00

+0

@ user2092535正確的,當它應該:)時打破循環 – 2013-03-15 04:32:24

0

我很抱歉,但我只是畏縮當我看到一個僅由條件中斷驅動的while(1)循環。什麼是這樣的:

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

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

一個騙子以這種方法打印是重複的,但我相信,具有同時有條件的親實際驅動迴路超過彌補了它。另一個好處是scanf也在這裏被檢查,以確保它正確讀入下一個值。