1樓:網友
程式開始定義了乙個全域性變數int a,全域性變數在其後可全域性呼叫,其值可重新賦值。而後是函式f,再後則是主函式main,在函式f中,首先定義了乙個區域性靜態變數static int a,值得一提的是這個a變數時區域性的靜態變數,首先是隻在這個函式體內起作用,再者其是「靜態的」,即用完後再用時又是初始的賦值。
主函式迴圈體for語句是函式的主體,執行過程應為:
1、i=0時,a=3,k=k+f(a),將a傳遞至函式f;在函式f中,c=a=3,區域性靜態變數a=2,c=c+1=3+1=4,返回值為: (a++)c=3+4=7;固k=0+7=7。
2、i自增後i=1,a=3,k=k+f(a),迴圈體內int a=3,又賦值一次,因此無論,a在前面的計算中如何改變,但再次迴圈時都重新賦值;再者,在第一次迴圈時,函式f中,a為靜態區域性變數,所以再迴圈時也沒做改變,因此此時f(a)=7,進而k=7+7=14;
3、i自增i=2,不滿足迴圈條件,跳出迴圈,k=k+a=14+3=17。
4、輸出結果:17
2樓:網友
輸出結果為 :16
解析如下:1. 第一次迴圈結束, k =7 過程同樓上大哥。
i=0時,a=3,k=k+f(a),將a傳遞至函式f;在函式f中,c=a=3,區域性靜態變數a=2,c=c+1=3+1=4,返回值為: (a++)c=3+4=7;固k=0+7=7。注意:
此時f()函式中的a 已經自增1 (a++)所以該函式中 a=3;
2. 第二次迴圈結束, k =15
i自增後i=1,a=3,k=k+f(a),迴圈體內int a=3,又賦值一次,因此無論,a在前面的計算中如何改變,但再次迴圈時都重新賦值;函式f中,a為靜態區域性變數,所以再迴圈時函式f中的a不再初始化,這時的a=3,因此此時f(a)=8,進而k=7+8=15;
3. 跳出迴圈後, 執行語句 k+=a; k=k+a=15+1=16。
注意:這裡的a 是全域性變數int a=1; 而不是中的a,大括號中的a的作用域為大括號內,出了大括號,就出了他的作用域,故不能為a=3。
所以最後結果為:16
請各位大俠指教。
問一道c語言題!~強者來
3樓:聖樂意閻憐
選ca和d都是錯誤的表示式,b只能把c的值賦擾巨集給變數a,因為c不為零。
所以(a=c)的值也不零,那麼不管「||後面的值是否為零,(a=c)||b=c)的值始終為1,所以計算機不會再浪費時間去處理「||後面的表示式,因為仿冊計算機已經得到(a=c)||b=c)的值了。同理,如果(a=c)的值為零,計算機也不會再去處理「&&後緩大冊面的表示式。
c語言問題,高手進C語言問題,高手進
第1個東西沒做過不過告訴你思路 設農夫為0,狼1,羊2,菜3,相鄰的不可以在一起無聊是在岸上還是船上。所以你就以0開始搜,不達到要求的過,最後就會出來結果 迷宮問題我都做爛了你要的是4方向的吧,給你一個還不錯的 include include include using namespace std ...
c語言高手進
這裡主要研究一下c語言和c 中的a a 有雙操做數和多操做數之分 雙操做數 在語言中定義a 是先用後加,a是先加後用。實際上對雙操做數來說的是在一個語句中結束前加和後加的問題。即如k a a a 是語句結束後在後加,a是先加後計算再語句結束。我舉幾個例子 用反彙編說明 1 int k 2 int v...
紫色葡萄慈父心的答案很急啊速度回答好有加分
1 父愛無言表現在 栽種葡萄,許下希望女兒好起來的心願 精心照料葡萄樹 為女兒採摘葡萄,用井水洗了,端給女兒吃,自己卻以怕酸為由捨不得吃 對女兒心靈的站立倍感欣喜,眼角眉梢都掛滿了笑意。2 第一句以生機勃勃的藤蔓為載體,反映了父親期盼女兒 站立 的情懷,也與後面女兒的 站立 相呼應。第二句連用三個 ...