-
這個問題需要了解系統在編譯時會給靜態變數分配記憶體,函式呼叫結束後不會釋放它們占用的記憶體單元,即變數的值是下次函式呼叫時上乙個函式呼叫的值。
當 i=0 時,執行 a+=f(); 呼叫函式 f(); 在這種情況下,s=1+0,i=1;在 f() 函式中則 a=1;
當 i=1 時,繼續執行 a+=f(); 呼叫函式 f(); 在本例中,s=1+1, i=2; 在 f() 函式中則 a=1+2=3
當 i=2 時,繼續執行 a+=f(); 呼叫函式 f(); 在這種情況下,f() 函式中的 s=1+2, i=3那麼 a=3+3=6
當 i=3 時,繼續執行 a+=f(); 呼叫函式 f(); 在本例中,s=1+3, i=4; 在 f() 函式中那麼 a=6+4=10
當 i=4 時,繼續執行 a+=f(); 呼叫函式 f(); 在本例中,f() 函式中的 s=1+4, i=5那麼 a=5+10=15
當 i=5 時,繼續執行 a+=f(); 呼叫函式 f(); 在本例中,f() 函式中的 s=1+5, i=6那麼 a=15+6=21
此時,在 main 函式中 i=6,程式結束。 請注意,main 函式中的 i 與調製函式中的 i 無關。
結果 : 21
-
如果不使用靜態變數,則 f() 中 i 的初始值始終為零,因此每次返回 s 時,它都是 1
-
靜態變數在定義時進行初始化。 int 型別的預設初始化值為 0。 在那之後,每乙個變化都會影響它。
例如,在乙個程式中,每次呼叫 f 函式時,都會新增 i。 而不是每次呼叫 f 函式時都初始化 i。
main 函式中的 i 與 f 函式中的 i 不同。 在 main 函式中,i 不是靜態的,而是由 main 函式本身宣告的 i,而在 f 函式中,main 函式的 i 是被遮蔽的。
-
少年,你算錯了,第一次s=1,i=0返回s=1;第二次 s=1, i=1 返回 s=2; 六次返回的 s 值是 ,加 = 21
-
在第 9 個陷阱問題中,每個案例後都沒有中斷; 所以,無論有多少M型別,最終的答案總是A
問題8仍然是乙個陷阱問題,第二個如果被降級為第乙個else,這給人一種錯覺,認為它是else的乙個分支,調查的目的毫無意義,實際上它是乙個新的if,else判斷,與第乙個if無關else,所以x=y=-5
問題 16. 當 i 是 2 和 3 的倍數時,會跳過該操作,因此首先輸出乙個介於 1 和 20 之間的數字,而不是 2 和 3 的倍數,然後將這些數字相加,將它們儲存為 s,最後輸出。
最後乙個問題。 if(i==10)break;當我達到 10 歲時,它就會跳出來。
因此,下面的邏輯運算數介於 1 和 9 之間。
if(i%3 != 1)continue;
這句話的意思是,如果 i 不是 1 for 3,則跳過運算,1 和 9 之間 for 3 是 1,只有 3 個數字 1、4 和 7,所以輸出是 147
朋友,請【領養答案】,你的領養是我回答問題的動力,如果你不明白,請問。 謝謝。
-
9.輸入 65,應該輸出 b,但因為沒有 break 語句,所以輸出 a
8.因為第乙個 else 後面跟著乙個分號,所以第乙個 if 被執行,第二個 if 被執行
16.計算 20 以內的素數之和。
13.計算餘數 1 除以 3 以 10 內的數字。
-
我個人覺得是一次,後來自己敲了一句**,發現k是輸出不了的,然後就是無數次迴圈,然後又看了for迴圈的裡面。
實際上,它是這樣的:for(;; k=1;) k++;
然後你仔細地比較這個for(; k==1;) k++;
問題給出的for迴圈中的約束不存在,k=1實際上是每個迴圈開始時k的值等於1,如果換成k==1,那麼這個迴圈的條件就變成了k等於1,當迴圈可以進行時, 請注意 k=1,k==1 和 k==1 的差值,== 是判斷條件,= 是賦值,因此 k 的值為 1;
-
無限,是乙個賦值,而不是相等。
-
Hello int (*pt)[3] 這是乙個二維陣列,宣告了乙個不確定的線標記,主要區別於 int *pt[3],後者是乙個帶有 3 個指標、變數的指標陣列。
給房東舉個例子,幫助你理解:
#include
int main(void)
;int (*pt)[3];
int i,j;
pt=a;這是將二維陣列名稱 a 分配給動態二維陣列 pt,正是因為 pt 的線標不確定,那麼 pt 是可以賦值的指標變數,陣列 a 是確定 a 是指標常量的線標記。
printf("a:");
for(i=0;i<2;i++)
printf("pt:");
for(i=0;i<2;i++)
printf("");
return 0;
你會發現程式的結果和A是一樣的,這證明了它的正確性,希望對你有幫助。
-
可以這樣理解:
int a=1;
pt=&a;將 a 的位址分配給 pt;
2:[3] 表示陣列變數;
則 (*pt)[3] 表示指標型別變數的陣列,其個數為 3;
int(*pt)[3] 表示乙個數字為 3 的 int 型別的指標變數陣列。
所以我個人覺得答案是b
-
定義了乙個由三個元素組成的陣列,每個元素都是乙個指向記憶體空間 int 的指標變數,答案是
-
() 具有最高優先順序,因此您應該能夠稍微理解它。
#define qt *pt
int qt[3];