關於c語言for語句的問題,關於C語言for語句的問題

2022-03-07 15:15:04 字數 6077 閱讀 4939

1樓:虛源草

這兩個程式是不同的,for語句在不加大括號情況下只迴圈到之後的一個分號,即前一個程式迴圈體包括printf……,輸出為1234;後者迴圈體中不包括printf……,執行完for語句後,再執行printf……,輸出為5。

2樓:匿名使用者

第一個for迴圈的迴圈體內有一條語句,那就是printf,每次迴圈都要執行一次迴圈體內的語句,也就是printf,所以依次輸出1234。

而第二個for迴圈內沒有語句,所以迴圈四次後i=5,最後輸出5。

不懂可以找我。呵呵

3樓:匿名使用者

for(i=1;i<5;i++)

printf("%d",i);

顯然是執行printf("%d",i);四次,所以結果是1234而for(i=1;i<5;i++)

;printf("%d",i);

這個是執行這段程式的第二行4次,即執行4次空操作,此i=5;

所以顯示5

4樓:

for語句屬於迴圈語句,迴圈的結束點是以第一個分號來限定的。

上面的 printf 就在迴圈裡面,所以會輸出 1234下面的迴圈到第一個分號結束,就是空迴圈。

迴圈結束後輸出一次i的值 就是一個5.

5樓:匿名使用者

顯然不一樣

首先第一個列印輸出是在迴圈裡面的,每執行一次迴圈,他就輸一次而第二個迴圈後面是個空語句,等效,相當於他光執行了i的迴圈,但每次什麼都不執行,然後列印輸出位於迴圈外,只執行一次

你單步除錯看看變數怎麼變,箭頭每次怎麼走,很直觀的希望你能明白^-^

c語言for語句中的條件問題

6樓:匿名使用者

1、for是c語言中的一個關鍵字,主要用來控制迴圈語句的執行。

2、舉例說明for語句的使用方法:

int i;

for(i=0; i<3; i++)

// i=0是初始化部分;i<3是迴圈判斷條件部分(當滿足此條件時才進入執行for迴圈中的語句);i++是執行完迴圈體語句後的操作

// 上面的for語句就是控制輸出3次helloworld

7樓:匿名使用者

仔細看(1)(2)(3)(4)(5)這樣,你應該能瞭解了吧。c語言中的for迴圈語句使用最為靈活,不僅可以用於迴圈次數已經確定的情況,而且可以用於迴圈次數不確定而只給出迴圈結束條件的情況,它完全可以代替while語句.

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

它的執行過程如下:

(1)先求表示式 1.

(2)求表示式2,若其值為真(值為非0),則執行for語句中指定的內嵌語句,然後執行下面第三步 做若為假(值為0),則結束迴圈,轉到第5步.

(3)求解表示式3

(4)轉回上面第(2)步驟繼續執行;

(5)結束迴圈,執行for語句下面的一個語句;

for(迴圈變數賦初值;迴圈條件;迴圈變數增值)語句

如for(i=1;i<=100;i++)sum=sum+i;

它的執行相當於

i=1;

while(i<=100)

顯然,用for語句更簡單、方便。

說明:(1)for語句的一般形式中的"表示式1"可以省略,此時應在for語句之前給迴圈變數賦初值.注意省略表示式1時,其後的分號不能省略.如for(;i<=100;i++);

(2)如果表示式2省略 即不判斷迴圈條件,迴圈無終止地迴圈下去,也就是認為表示式2始終為真.

例如:for(i=1;;i++);

相當於i=1;

while(1)

(3)表示式3也可以省略,但此時程式設計者應另外設法保證迴圈能正常結束.如:

for(i=1;i<=100;)

這個例子的迴圈增量沒有放在表示式三的位置 而是作為迴圈體的一部分 其效果是一樣的.

(4)可以省略表示式1和表示式3,只有表示式2 即只給迴圈條件.

如for(;i<=100;)

這個相當於

whlie(i<=100)

(5)三個表示式都可以省略,如:

for(;;)語句

相當於while(1)語句

即不設初值 不判斷條件(認為表示式2為真值)迴圈變數不增值,無終止的執行迴圈體.

(6)表示式1也可以是設定迴圈變數初值的賦值表示式,也可以是與迴圈變數無關的其他表示式.如:

for(sum=0;i<=100;i++)

for(sum=0,i=0;i<=100;i++)

等等寫法.

8樓:匿名使用者

y<5起作用用下面這個程式可以測試出來int main()

return 0;

} 原理: int i = 1, 2;最後i的值是2;x<5 有一個值真或假 y<5 也有一個值真或假表示式 x<5, y<5的最後的值 是y<5的值

9樓:匿名使用者

xy的初始值都是0 xy不能超過5 迴圈1次x自加1 y自加1

xy等於5了就跳出迴圈

10樓:匿名使用者

x、y都成立時候,條件才成立,才能執行下面的迴圈語句

c語言for迴圈語句的問題

11樓:每壹段路都是壹種領悟

for(初始值:可以為空,但是後面分號不能省;限制條件:不能為空,後面分號不能省;增量:可以為空,後面沒有分號)

int main()

for()中不能定義

12樓:馨雲逸夢

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

執行順序:1.表示式1,程式開始時便執行,且只執行一次。

2.之後執行表示式2,當表示式2為真(非0),執行迴圈體3.最後執行表示式三

之後重複 2、3步驟,直到表示式二為假

原則上來講,表示式1、2、3都可以為空,只要迴圈體內部有可以控制迴圈結束的條件就不會出現死迴圈

希望我的回答對你有所幫助

13樓:

for(int i=0;i<10;i++)//確定符號是英文半形

14樓:餛飩

c的某些編譯器是不支援,「隨手宣告變數」的。這個**,放在gcc裡,可能就沒事兒。。。

15樓:小忍and奏

for(a=1;a<0;a++)

{}因為這是c語言 不能在括號裡定義

16樓:冷血西伯利亞狼

變數的定義一般不能放在for迴圈中

17樓:怒戰九人黑

for 迴圈就不是個問題

c語言中關於多個for迴圈的問題 5

18樓:匿名使用者

#include

void main()

19樓:匿名使用者

1、最開抄

始進入的是第一層for迴圈,襲在進入第二層for迴圈,一直bai到最後一層dufor迴圈執行完,再返回上一zhi層for迴圈一次,進入dao下一層迴圈,一直到所有迴圈結束。

2、例如:

for(int i=0;i<5;i++)

printf("\n");

}/*這裡是3層迴圈,第一次是i=0,j=0,l=0,一直l=4;在返回j=1,l=0,一直到l=4;再返回上一層迴圈,直到j=4;再返回i=1,直到i=4結束整個迴圈,結果就是迴圈125次:

(最外層是是對應5組,第二層是對應25行,第三層是對應0—4)*/

20樓:聽不清啊

圖中二層迴圈都是迴圈3次,所以就輸出9個aa

迴圈全部結束後輸出bb一次。

21樓:

這個實際bai上不是 多個for迴圈的問du題,而是一個語zhi

句的作用範圍dao的問題

當你需要迴圈的語回句只有一句的時答候,就可以寫成這樣

for(i=0,i<3;i++)

printf("aa\n");

如果有多個的話

就需要用大括號括起來

for(i=0,i<3;i++)

括起來的話,這三句都將迴圈三次。

而不論大括號裡括了多少條語句,for迴圈本身也只算一個語句。

因此,可以分析你剛才那段**

for(i=0;i<3;i++)

for(j=2;j<5;j++)

printf("aa\n");

printf("bb\n");

先看外邊的for ,它沒有使用大括號{} ,因而只將離他最近得一條語句進行迴圈

而這條語句也是一個for迴圈。 第二個for 迴圈也沒有大括號,因此也只將離他最近得語句進行迴圈。即將printf("aa\n");進行迴圈。

而最後的printf("bb\n");沒有在任何迴圈裡邊,所以只執行一次。

for迴圈的巢狀,從外邊進入裡邊,將裡邊的迴圈當做一個整體,幾次迴圈執行完畢後,再回過頭來進行外邊迴圈。總的來說,將裡邊的迴圈看做整體,比較有利於理解。

22樓:劉鴻波

你的程式相對於bai下面這段代du碼:

#include

void main()

}printf("bb\n");}執行

zhi順序如下:

i=0:

j=2;printf("aa\n");j++;

j=3;printf("aa\n");j++;

j=4;printf("aa\n");j++;

i=1;

j=2;printf("aa\n");j++;

j=3;printf("aa\n");j++;

j=4;printf("aa\n");j++;

i=3;

j=2;printf("aa\n");j++;

j=3;printf("aa\n");j++;

j=4;printf("aa\n");j++;

跳出dao巢狀迴圈

執行printf("bb\n");

所以版最終的結果是9個

權aa,一個bb

23樓:

#include

void main()

24樓:匿名使用者

執行的每一步 順序 如下

i=0,i=2,printf("aa\n");

i=0,i=3,printf("aa\n");

i=0,i=4,printf("aa\n");

i=1,i=2,printf("aa\n");

i=1,i=3,printf("aa\n");

i=1,i=4,printf("aa\n");

i=2,i=2,printf("aa\n");

i=2,i=3,printf("aa\n");

i=2,i=4,printf("aa\n");

printf("bb\n");

**這麼寫讓人 能好理解些。

#include

void main()

裡的**

for(j=2;j<5;j++)

}printf("bb\n");//這個print 不屬於任何循答環裡 所以只執行了1次}

25樓:匿名使用者

先是內層迴圈(即j),再迴圈i,因為沒加{}所以迴圈體只有輸出aa那個,最後退出兩個迴圈時才輸出一個bb,謝謝

26樓:匿名使用者

先執行一

抄次最外層的for語句,然後執行第二層的for語句襲,直到第二層執行完畢bai

,又回到第du一層的for語句執行一次

zhi,再執行第二層,結果是外迴圈的for語句執行3次,第二層的for迴圈執行(5-2)*3=9次,第二層的迴圈每執行一次就輸出一個aa,所以輸出9個aa,printf("bb\n")是在for語句的外邊,所以只在最後執行一次,for語句如果每次迴圈都要執行一條以上的語dao句就要在語句外邊加花括號,即如果要執行printf("aa\n");printf("bb\n");兩條語句的話就要寫成

這種形式。

關於c語言問題關於c語言的問題

void vtaskstartscheduler void privileged function 是函式定義,函式名 vtaskstartscheduler,void 表示該函式是無參函式,前面的 void 表示這個函式無返回值。privileged function 是巨集,預編譯期間,執行文字...

關於c語言的計算問題,關於c語言的計算問題

這涉及c的細節,我建議你記住 程式中的常量其實也存放在記憶體單元中,c規定運算運算子兩旁同類時運算結果與參與運算的數的型別相同,事實上時 加法器直接處理那兩個記憶體單元中的資料,並將結果送到另一記憶體單元,而這裡的 另一記憶體單元也是兩位元組長,因此他只接收到結果的低二位元組部分 及1的補碼 所以,...

關於C語言簡單問題,關於C語言一個簡單問題

c語言有兩個標準,c89 89年出的,c99 99年出的c89規定,在任何執行語句之前,在塊的開頭宣告所有區域性變數。在c99以及c 中則沒有這個限制,即在首次使用之前,可在塊的任何位置都可以宣告變數。編譯結果和c語言的編譯器實現有關,你用的可能是較老的c編譯器,只支援c89規定。簡單的講就是老的編...