iT邦幫忙

0

請問一下C語言的基本問題:

在下列C語言程式裡面,為什麼while的條件式是下(b)我看不懂這是代表什麼意思...

 int gcd(inta , int b)  
 {  
 int c;  
 while(b)  
 {  
 c=a%b;  
 a=b;  
 b=c;  
 }  
  
 }
看更多先前的討論...收起先前的討論...
都寫得出21 點的程式了
為何這個會看不懂呢
疑惑
太久沒碰C語言了...
是整數條件符合就會往下執行的意思嗎...然後到0就停止嗎...
如果是的話..為什麼0會停止..困惑...請前輩指導
ycl8000 iT邦高手 1 級 ‧ 2012-03-26 11:00:40 檢舉
C語言不是這樣看滴.
要實際跑跑看, 踏出第一步才會有收穫.
我在寫VB.net的時候while後面只能接boolean值
是不是C語言後面不是接布林值...這點不懂..
找最大公因數

這是使用 "輾轉相除法" 這個方法
http://zh.wikipedia.org/wiki/%E8%BC%BE%E8%BD%89%E7%9B%B8%E9%99%A4%E6%B3%95

可以遞迴找出 最大公因數

最終 有一個數會為0
前一個數即為最大公因數

0 剛好為終止條件 (不為真)
所以會停止

請大家指教~
非 0 是 true
0 是 false

while (false) 自然就會離開(停止)while區塊了
好答案
給你一個讚
謝謝jacky790125前輩
我剛剛聽你的話把塵封2年的Dev-C++裝起來跑..基本上運作模式都看著它順順的跑過~可是那時我的頭腦還是被卡住~不過現在懂了~謝謝前輩您的指導~
謝謝antijava前輩的指導^^
如果問題已解決
記得選wiseguy大大為最佳解答
忙
選了~只是當時發問未滿6小時不能選...謝謝前輩指導~我也找到一個不錯學習的網址~分享給大家
http://programming.im.ncnu.edu.tw/C_index.html
funforeverhttp://programming.im.ncnu.edu.tw/C_index.html提到:
一個不錯學習的網址~分享給大家


一看就知道這是非常早期典型的網頁
內容比畫面豐富
跟現在華而不實的網頁剛好相反
落寞

1 個回答

18
wiseguy
iT邦超人 1 級 ‧ 2012-03-26 11:08:08
最佳解答

C 語言中沒有真假值的變數型態,所以用 0 當作 false,不是0都當做 true。
while(b) 的意思就是:進行 while 迴圈,直到 b 的值變成 0。這個不懂,大概也沒什麼 C 程式看得懂了。汗

這程式是迴圈式的輾轉相除法,c 是兩數相除的餘數。當 c 等於零的時候,也就是 a=b 的時候,即輾轉相除法結束的時候。這時再把 c 設給 b,b 就等於 0 也就是迴圈該跑完的時候。

iT邦幫忙MVPwiseguy提到:
當 c 等於零的時候,也就是 a=b 的時候

寫太快了,這段有點小誤,是否更正一下下?

賽門 iT邦超人 1 級 ‧ 2012-03-26 13:15:41 檢舉

iT邦幫忙MVPwiseguy提到:
這個不懂,大概也沒什麼 C 程式看得懂了。

這才是重點....

我要發表回答

立即登入回答