C語言,雙迴圈求詳解 最好能一步一步註釋下

2025-02-14 09:05:24 字數 4653 閱讀 9898

1樓:

輸出結果:32

函式註釋:void main()

int i=0,a=0; /定義i為0,a為0

while(i<20) /迴圈1,在i<20時迴圈。

for(;;迴圈2

if((i%10)==0)break; /如果i餘10為0,即i是10的倍數時結束迴圈2,即i不變。

else i--;否則i自減,即如果i不是10的倍數,i自減。

迴圈2為以上3行,功能是判斷i是否是10的倍數,是i的值不變,不是則i自減。

i+=11; /i=i+11

a+=i; /a=a+i

printf("%d",a); 整數形式輸出a

分析:初值i=0,a=0,i<20滿足迴圈1條件,且是10的倍數,i不變,迴圈後i=11,a=11

i=11滿足迴圈1條件,且i不是10的倍數,則i自減,i=10+11=21,a=11+21=32

i=21不滿足迴圈1條件,迴圈結束,則a=32

2樓:網友

a=0;進入 for(;;

if((i%10)==0)break;

else i--:

符合if條件。

執行 i+=11;

a+=i;得a=11

i=11由於while的迴圈 回到 for(;;

if((i%10)==0)break;

else i--:

執行 i--

繼續 i+=11;

a+=i;得 i=21

a=32 接下來跳出迴圈輸出32

ps:for的那個迴圈應為for(;;

只有兩個分號⊙0⊙

c語言習題迴圈求解

3樓:

理論上這個迴圈是無限的,但是由於int型資料是4個位元組的,它所能表示的最大資料範圍是。

2^31~~+2^31-1,所以當k的值不斷累加超過2^31-1時,它的最高位變為1,int型是有符號的,當最高位為1就被當做是負數來處理了,這樣就退出了迴圈,你可以改動一下程式進行驗證:

int k=0;

dowhile(k>=0);

printf("%d",k);//輸出退出迴圈時k的值。

程式的輸出結果為:-2147483648

迴圈條件3<=x<=4不能這樣表示,這樣表示等價於(3<=x)<=4,無論x為任何數,3<=x要麼是1要麼為0,但不論1還是0都是小於4的,所以這個迴圈條件始終為真,就是死迴圈了,條件應該改成(3<=x &&x<=4)

只看最後一次for迴圈i=5,b=1,先判斷迴圈條件b(此時b的值為1)>=0為真再將b的值減1,b=0,由於條件為真執行k++,進入下一次while迴圈,先判斷b(此時b的值為0)>=0為真再將b的值減1,b=-1,由於條件為真執行k++,再進入下一次的while迴圈,先判斷b(此時b的值為-1)>=0為假再將b的值減1,b=-2,由於條件為假退出while迴圈。因此b的值為-2

也就是說,迴圈條件b-->=0是等價於b>=0,b--,再判斷完一次b>=0?然後就將b的值減在表示式中是先用b的值進行表示式計算,然後再將b的值減1

c語言迴圈語句求助

4樓:匿名使用者

簡單說:

a、5帶進去,意味著第乙個if前i=3,那麼i++%5 !=0; 不能執行到列印語句,所以不對。

b、24帶進去,意味著第乙個if前i=22,則i++%=0; 不能執行到列印語句,所以不對。

c、32帶進去,意味著第乙個if前i=30,則i++%==0;執行第乙個if後,i=31,第二個if執行,先自加了1,再模8,所以等於是32%8 = 0;所以c是對的。

簡單說:在1~40內,只有32能滿足 x%5=0,並且(x+2)%8=0。

5樓:沒有妳我怎庅辦

當i=30的時候,除以5的餘數為0;在i++,i=31,在++i,i=32

c語言迴圈

6樓:網友

迴圈從i = 1,迴圈到了i = 100,總共迴圈了100次。當迴圈到100次時,i++後,i變成了101,無法通過while(i<=100)。迴圈結束。

最終結果為:i = 101, sum = 5050。

不過要注意while(i <= 100)後面;不能被省略掉,否則程式會出錯。

7樓:網友

結果,sum=5050,如果輸出i,則i的值是101

8樓:爽朗的陌

不是do while麼,當i=100時還是要執行,然後i++,i=101了,所以輸出i=101

9樓:網友

101另外。

while語句後少了乙個分號。

否則編譯不過的。

求c語言中迴圈的具體用法

10樓:匿名使用者

while語句的一般格式:

while(表示式)

若干語句。while語句由關鍵字while、括號中的乙個求值為boolean型資料的表示式和乙個複合語句組成,其中的複合語句稱作迴圈體,迴圈體只有一條語句時,大括號「{}可以省略,但最好不要省略,以便增加程式的可讀性。表示式稱作迴圈條件。

while語句的執行規則是:

1)計算表示式的值,如果該值是true時,就進行(2),否則進行(3)。

2)執行迴圈體,再進行(1)

3)結束while語句的執行。

do-while迴圈。

一般格式:do

若干語句。while(表示式);

do-while迴圈和while迴圈的區別是:do-while的迴圈體至少被執行一次,for迴圈。for語句的一般格式:

for (表示式1;表示式2;表示式3)

若干語句。for語句由關鍵字for、括號中用分號分割的3個表示式,以及乙個鍵坦空複合語句組成,其中的「表示式2」必須是乙個求值為boolean型資料的表示式,而複合語句稱作稿瞎迴圈體。

for語句的執行規則是:

1)計算「表示式1」,完成必要的初始化工作。

2)判斷「表示式2」的值,若「表示式2」的值為true,則進行(3),否則進行(4)。

3)執行迴圈體,然後計算「表示式3」,以便改變迴圈條件,進行(2)。

4)結束for語句的執行信陸。

11樓:網友

第一種迴圈:while()

例子: i = 1;

while(i <=12)

i++;第二種迴圈:for()

例子:for(i = 1; i <=12; i++)//對比1和2,你可以發現2是1的整合檔兆形式。

第三種迴圈:do{}while

i = 1;

doi++;

while(i <=12) /這種表示,無論i一開始是否<= 12,它都將通過一次迴圈,然後在結尾時再考枝吵慮是否進行下次迴圈(因為通過條件在尾端猛蠢侍)

跟c語言迴圈有關的問題~~~大俠指教~

12樓:網友

1,在c語言中分號代表乙個語句的結束,這裡while語句後面直接就加分號,表示迴圈體為空,只是不停地在進行自加。所以當滿足條件的時候,即k=11的時候,就跳出迴圈了。這裡還要注意k++與++k的區別哦。

2,這裡的迴圈次數應該是3次。原因:首先b的初始值為0,而在整個for迴圈中,沒有對b 進行任何操作,所以b!

3恆成立。只要考慮a<3?所以這題與這個for(a=0,b=0;a<3;a++)等價了。

這個就簡單了吧。另外這裡要注意for迴圈後面直接跟了個分號,所以迴圈體為空哦。

3,首先你要理解for 迴圈的具體意義。括號裡面的第2個語句應該是做判斷用的。如上題的a<3,可是,裡面是空的話,就說明沒有任何條件,這裡我們預設它恆成立。

所以它應該一直在迴圈,是個死迴圈。而且這樣的**不能放在機器上去執行哦。可能會造成機子宕機的哦。

建議你在去書上好好看看for迴圈的相關語法知識,這一塊很重要的,對於學c 語言。希望你能弄懂這個問題哦。

還有不懂的可以追問哦。

13樓:

1:int k=1;while(k++<10);//迴圈結束後,k的值為:11。

while後面的分號表示迴圈體為空。

2:for(a=0,b=0;a<3&&b!=3;a++)

迴圈次數為:3

a=0,1,2時執行空的迴圈體。

3:for(;;

等價於。while(1)

14樓:網友

1.分號代表空語句,就是什麼都不敢,只是做迴圈判斷,跳出迴圈的時候k為11,k++是先使用k的值然後再自加。++k則是k先自加再使用k的值。

2.分號代表空語句,就是什麼都不敢,只是做迴圈判斷,迴圈次數3,這裡b永遠不等於3,所以b!=3條件永遠未真,只需要判斷a<3即可。

3.代表乙個死迴圈,一般在迴圈體內跳出迴圈。

建議樓主去看看for迴圈的語法。

15樓:

第一題相當於:

int k=1;

while(k<10)

第二題迴圈次數是3

第三題for 可以理解成while(1)

16樓:網友

其實還有goto(),迴圈的鼻祖。

c語言選擇題,詳解,C語言選擇題,求詳解

6 5 下面定義了一個日期結構date 結構變數date1和date2 struct datedate1 date2 對結構變數date2正確操作的語句是 a date2 date1 b strcpy date2,date1 c date2 d date2 你的回答 c 參 a 7 下面定義了一個日...

關於一道c語言題,求詳解,急求,關於一道C語言題,求詳解,急求

在主函式裡 是先執行fx 這個函式的,而執行這個函式得到的值x 15,而後x x a 15 5 20.a 5 所以輸出是 20 和 5 主函式的x帶的是全域性變數的值是fx函式得到的x的值15,而不是定義全域性變數的初始值,也不是fx函式裡x的初值 在這個程式裡用全域性變數無非是想說明全域性變數x在...

麻煩解釋下這段C語言迴圈。最好能一句一句解釋。謝謝

void sort int array,int n 2 12 這個程式當第一次迴圈的時候k 0,array k array 0 然後進入第二個for迴圈,如果array j 簡單的說,第一次迴圈將array 0 替換為陣列中最小值。第二次迴圈將array 1 替換成array 1 後面的陣列元素中的...