上星期群裡剛上大一學c語言的朋友問了一道題目,要求是這樣的:
「迴圈輸入一串數字,當輸入到-1為止,將-1前的所有資料求和並求出平均數,並保留兩位小數」
例如
「輸入:1,2,3,-1 輸出:2.00」
「輸入:-1 輸出:無資料」
因為不定數輸入的問題,很顯然對於剛學到if,for,while的大一新生來說有些困難,所以在這邊聊一下關於老師不讓你寫的「死迴圈」和不建議去寫的「break」的問題。
那麼就有人問了:磚!什麼是死迴圈呢?
死迴圈簡單講就是乙個永久停不下來的迴圈,典型的死迴圈問題就是「套娃」(x)。
正經的講,迴圈是怎麼進行的呢?例如while迴圈的用法規則,
while(條件)
條件給的返回值是乙個布林值,常用的布林值有:true,false,0,1
對於while來說條件處於true或者1時,就會進行迴圈體內的語句,而條件處於false或者0時它就會停止迴圈,
那麼如果條件一直為true它將一直進行迴圈,一直進行迴圈體中的語句(就會和你的電腦比誰命長)這種迴圈就是死迴圈。
例如:
int i =1;
while(i == 1)
這裡的i == 1
返回值為布林值true
,也就是說如果不改變i
的資料它會一直迴圈到天荒地老。
你想讓這個迴圈停下來也很簡單,只需要讓while內的條件也就是i == 1
的返回值變為false就好。
例如:
int i = 1;
while(i==1)
如果放在這個題目中也不失為一種解法,不過這偏離死迴圈和break的主題了。
下面就扯一下break的使用了:
break
在迴圈中的用法是跳出當前迴圈,原理很簡單,當你認為乙個迴圈該停了以後就可以break掉它
例如:
while(true)
啪,很快啊,這小夥子(x)這小迴圈直接就停掉了
break有個特性就是僅能跳出當前執行的迴圈
例如這一部分**:
while(true)
}
這個乙個break並不能跳出while迴圈,當執行到break時他會從for迴圈中跳到while迴圈中繼續進行while迴圈注:if不是迴圈
如果全部跳出則需要:
while(true)
break;
}
下面就是關於這些的操作例項,拿朋友問我的那道題做演示:
1、題目要求是做乙個迴圈輸入,這裡用到了乙個while(true)去做乙個所謂的死迴圈
2、當輸入到-1時需要做乙個迴圈跳出,於是拿乙個if做條件判斷進行break操作
具體**如下:
#include int main()
sum = sum + in;
i = i + 1;
} if (i != 0)
else
return 0;
}
所以0的存在本身就是乙個false,有1嗎? Shell語言 While死迴圈
原文 在linux下程式設計的程式猿都知道shell指令碼,就算你不怎麼熟悉,也應該聽過的吧!那在shell指令碼中的死迴圈該怎麼寫呢?對於熟悉c語言的猿人們來說,最簡單的死迴圈應該這樣寫 while 1 do something或者你也可以用for語句和do while語句來實現,這裡就不說了!可...
while 1 和for 死迴圈對比
這是在c中的死迴圈方式 include intmain void return0 include intmain void return0 兩種迴圈在構造死迴圈時的區別 用while構造死迴圈時,一般會使用while true 來構造死迴圈 而用for來構造死迴圈時,則使用for 來構造死迴圈。這兩...
C語言死迴圈,「貪心法」
死迴圈問題例項 int i int a n for i 0 i n i 根據編譯軟體的不同,這段 出現的問題也有不同,一般如果出現錯誤,原因如下 以上這段 編譯器給變數分配記憶體時變數i的記憶體會在陣列a n 的後邊,迴圈內給陣列內的變數賦值是從前往後寫入位址的,當i n時已經寫到編譯器給i分配的那...