C語言題目

時間 2022-06-18 04:55:08

1樓:匿名使用者

這個很好理解。給你解釋一下下,

從main 開始。

定義就不說了,說迴圈,迴圈了2次,迴圈裡面定義了a=3 這個定義,只是在迴圈裡有效的,出了迴圈他就沒效了。這就是生存期的問題。

第一次迴圈。k+= 呼叫函式,然後去函式裡。c 是main裡面傳的值,c=a=3 c+=4;return a++ 其實這裡和a一樣。

所以 return (a++)+c =2+4=6;

第二次迴圈也是一樣的道理。只是 a++ 已經經過了一次,這事第二次,這個時候開始累加 所以這個a++=3 return 的結果是 7

然後就是返回到main函式裡了。這個時候已經出了迴圈,兩次迴圈的結果是 6 ,7 所以 出迴圈之後 k=6+7=13。你看清楚 main函式裡面沒有定義a (for裡的生存期已經結束,所以除外。

)而在函式外邊定義了 int a=1 這是個全域性變數。生存期直到程式結束,所以這個時候 k=k+a=13+1=14。

後面的輸出就不解釋了。

說了這麼多,你應該明白了吧?

2樓:

迴圈變數i=0,f(a)的返回值是 6。f(a)中的a的值是3.

迴圈變數i=1,f(a)的返回值是 8。f(a)中的a的值是4.當第二次呼叫f(a)的時候,static int a=2;沒有從新給a賦值。

還是以上次呼叫之後的結果進行執行的,返回值是7.k的值是13.

迴圈變數i=3,跳出迴圈,執行k+=a;a=1,之前定義過的,所以k值是14.

明白了嗎?

3樓:匿名使用者

for中的a在語句塊中,是區域性的,改變這個a不能改變全域性變數a,所以最後一步實際上是k+=1。

樓主試下這個輸出什麼:

int a=1;

int main()

printf("%d\n",a);

return 0;}

4樓:匿名使用者

當i=0時;

c=a=3(因為迴圈中int a=3;始終不變);

f(3)=(2++)+4=6,此時f()函式中a的值為2++即3k+=6;k的初始值為0;所以k=6

i=1時;

c任然是a的值3(因為迴圈中int a=3;始終不變);

f(3)=(3++)+4=7,

k+=7,k=k+7=6+7=13;

i=2跳出迴圈;

k+=a (此時的a為全域性變數a=1)

k=13+1=14

分清a在不同的地方值是不同,分清a在什麼情況下是全域性變數,什麼情況下是區域性變數。

C語言題目,c語言題目

3 若有兩條語句。static char x abcde static char y x存的是a,b,c,d,e,0 比y多了一個 0 p2 就是將p2串到p1上去啊。所以是abcabc 陣列名不能作為左值。要與最近的if配對。再分析下吧。static char x abcde static cha...

求c語言題目,求C語言題目

c語言經典100題 程式1 題目 有1,2,3,4個數字,能組成多少個互不相同且無重複數字的三位數 都是多少 1.程式分析 可填在百位,十位,個位的數字都是1,2,3,4.組成所有的排列後再去 掉不滿足條件的排列.2.程式源 main 程式2 題目 企業發放的獎金根據利潤提成.利潤 i 低於或等於1...

幾道C語言題目,一道c語言題目

1.為了方便敘述,現將程式的沒一行進行編號。注 語句 for i 0 i void main 注 n j n i 1 等效於n j n j n i 1 1 4 比較簡單,就不說了。具體說說 5 7 是怎麼執行的。具體過程如下 首先,對 i 進行賦值,i 0時,j 分別等於 0,1,2.把 i,j 的...