以下程式為什麼會是死迴圈呢,以下程式為什麼會是死迴圈呢? 5

時間 2022-09-05 10:55:08

1樓:匿名使用者

浮點數之間比較相等不相等不能直接用“=”或“!=”,因為浮點數本身就是近似值,直接用“=”或“!=”通常會達不到預期的結果,這就是你的程式為什麼會出現死迴圈的原因(並不是所有機器上都會出現死迴圈,這種問題具有不確定性)

比較浮點數是否相等可以用兩個浮點數的差小於一個極小值,比如比較浮點數 a1, a2 是否相等可以這樣寫:

if(fabs(a1-a2) < 1e-10)else

對於你的問題只需將“!=”改為“<”或“<=”即可

2樓:臺灣明星

不會出現死迴圈

執行此程式 什麼事都沒發生,就是d=10了。

3樓:匿名使用者

這個應該不會是死迴圈吧

你可以自己跟蹤一下,看它執行到d=10的時候,它是怎麼處理的

4樓:

浮點型相加不是像人工相加的那樣。往往達不到預期目標

5樓:

我把你的程式改了一下:

double d = 0;

for(;d<10.0;)

執行的結果是

0.10.2

0.30.4

0.50.6

0.70.8

0.91

1.11.2

1.31.4

1.51.6

1.71.8

1.92

2.12.2

2.32.4

2.52.6

2.72.8

2.93

3.13.2

3.33.4

3.53.6

3.73.8

3.94

4.14.2

4.34.4

4.54.6

4.74.8

4.95

5.15.2

5.35.4

5.55.6

5.75.8

5.95.99999999999999

6.09999999999999

6.19999999999999

6.29999999999999

6.39999999999999

6.49999999999999

6.59999999999999

6.69999999999999

6.79999999999999

6.89999999999999

6.99999999999999

7.09999999999999

7.19999999999999

7.29999999999999

7.39999999999999

7.49999999999999

7.59999999999999

7.69999999999999

7.79999999999999

7.89999999999999

7.99999999999999

8.09999999999999

8.19999999999999

8.29999999999999

8.39999999999999

8.49999999999999

8.59999999999999

8.69999999999999

8.79999999999998

8.89999999999998

8.99999999999998

9.09999999999998

9.19999999999998

9.29999999999998

9.39999999999998

9.49999999999998

9.59999999999998

9.69999999999998

9.79999999999998

9.89999999999998

9.99999999999998

10.1

press any key to continue你看到了。所以你的條件永遠成立,所以會出現死迴圈。

為什麼程式中的死迴圈會導致100%cpu佔用

6樓:深圳中宇視通科技****

您好 如果在單任務系統中執行,可以用c語言編寫一個死迴圈,讓cpu使用率一直保持在100%。 例如:while(true); (注:

dos 就是單任務作業系統) 如果在多工系統中執行,則不可能只通過一個死迴圈就讓cpu使用率一直保持在100%。

為什麼下面的程式會出現死迴圈呢? 10

7樓:

vc 還是c# 還是c++ ?

vc要看你把它放到了什麼地方~~

還有。。讀了半天都不知道你這個程式在幹什麼~還有怎麼用void來宣告阿?習慣?

本人專長不是c~~但也懂得些~

8樓:匿名使用者

陣列加長度,比如xx改成xx[20]

以下程式執行時出現了死迴圈現象,需要怎樣改正?

9樓:內的權勢

我來說吧,double雙精度比較大小不能用==或者不等,一般除了整型可以用==或者!=來判斷大小,單精度,雙精度,一般比較大小都是這樣,比如a-b<0.0000000001.

像這樣,0000越多,精度越高。你可以試試,double a=3.141414跟b=3.

141414比較。直接a==b看是否相等

10樓:匿名使用者

改進的方法有兩個,一個是把迴圈條件寫作 i <= 10,或 i <= 10.0。二是改作 fabs(i - 10.0) <= 1e-6。

11樓:殤灬無法彌補

用 <=10

。。。。

幹嘛用!=啊

為什麼程式會進入死迴圈?

12樓:匿名使用者

public static void main(string args)

//for(object o:set)

set.clear();

}}set.iterator()這個方法每次都重新返回iterator,所以不能使用這個方法來遍歷,需要先將它賦值給一個iterator物件,然後再遍歷。

13樓:來自天目山英姿颯爽的小丑魚

set set = new hashset();

set.add("好");

set.add("你");

set.add("沒");// 尚未存在新增這個元素iterator it1 = set.iterator();

while (it1.hasnext())set.clear();

c語言程式問題,為什麼這個程式會陷入死迴圈

14樓:網友了了了

因為你超出陣列邊界了,a[10]指的是a[0]到a[9],你用到了a[10],就會陣列越界

15樓:匿名使用者

陣列a[10]是從a[0]到a[9],將a[10]賦值為0不太對

為什麼c是死迴圈,什麼是死迴圈?,謝謝

16樓:曉凡

c是死迴圈的原因是因為沒有結束迴圈的條件。i小於10的時候是continue,但是並沒有說大於10的時候break.因此該迴圈就一直下去了,只是在大於10的時候不回做continue這條語句而已。

死迴圈即是因為沒有設定結束迴圈的條件或者條件永遠不可能發生而導致程式一直處在迴圈中的現象。

希望對你有所幫助。

17樓:鹹天晴

c裡沒寫當l>=10的時候怎麼辦,所以會一直迴圈下去

死迴圈就是程式執行是無限的,不會自己內部停止

18樓:匿名使用者

在c選項中,沒有跳出for迴圈的有效條件。當i<10,不成立,則繼續迴圈。當i>=10,它仍然選擇了繼續。

以下程式中for迴圈的執行次數是

0心如蝶舞 編譯後for迴圈變成 for i 1 i 8.5,i i從1到8.5,一共迴圈8次。你把num一層一層的往裡代,最開始是for i 1 i n 1 n 2 i 然後是for i 1 i m 1 1 m 1 2 最後一層是for i 1 i 2 1 1 2 1 2 i 算一下,迴圈條件是i...

c語言問題為什麼是死迴圈

當迴圈體一直成立的時候,程式將無法跳出迴圈,如果這時還沒有break強制跳出迴圈的語句或中斷時,程式就會是死迴圈了。你的算式中把一個 號打成 號了。sum1 a 0 1000 a 1 100 a 2 10 a 3 sum2 a 3 1000 a 2 100 a 1 10 a 0 應該是 sum1 a...

以下句子誰令你最感動,為什麼

1.我經常會懷念初中的那種感覺,因為那裡有我舍不去的情感,那時候的味道,天氣,往事如夢一般奢侈不堪回首。2.他不愛我,我聽過這首歌,一種真愛,一種無奈,見歌詞不多說,都是因為愛 3.擁有時不珍惜,失去了才感受到了少的那些東西才是自己最想要最離不開的 4.當你笑著說出來的時候,那是因為你領悟了,懂得了...