我寫了這個回圈來添加數字,break如果輸入的數字小于零,則退出回圈,最后列印計算出的數字而不添加負數。但問題是即使我break在輸入 15 和 15 和 -2 時在加法之前寫了陳述句,輸出是 28 而不是 30 我發現了如何解決這個問題,我想知道是為什么,謝謝。
#include <stdio.h>
void main()
{
int j = 1, num = 0, rslt = 0;
while (1) {
if (num < 0) break;
printf("enter a number : ");
scanf("%d", &num);
rslt = rslt num;
}
printf("the resluts are %d\n", rslt);
}
uj5u.com熱心網友回復:
目前,您正在有效地測驗上一次迭代的輸入,然后將其添加到您的結果中。相反,在用戶輸入數字后立即檢查數字,然后再執行任何計算。
#include <stdio.h>
int main(void)
{
int num = 0, rslt = 0;
while (1) {
printf("enter a number : ");
scanf("%d", &num);
if (num < 0)
break;
rslt = num;
}
printf("the results are %d\n", rslt);
}
您可能還想檢查是否scanf回傳了您期望的成功轉換次數(在本例中為一次),以處理用戶輸入無效輸入的事件。
if (1 != scanf("%d", &num))
break;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/392122.html
下一篇:C指標陣列第二個最大值
