為什麼程式的輸出是 2 6 而不是 2 3 4

發布 科技 2024-07-31
3個回答
  1. 匿名使用者2024-01-31

    因為,這裡我們使用指標,現在我們分析從主執行開始到執行結束的值和輸出:

    i=1,呼叫 sub(&i) 函式,在 sub() 函式中,*s +=1; 所以 s=2; 由於 s 是指標,因此 main() 函式中 i 的值在這裡發生了變化,即 main() 函式中的 i 變為 2, t +=*s; 使得 t=2; reutrn t;回到 main() 函式,我們得到 sub() 函式 2 的返回值; 此時 i=2;

    在第二個迴圈中,由於第乙個迴圈中 i 的值改為 2,因此在第乙個迴圈結束時執行了 i++,因此 i=3; 判決書 i<4; 在迴圈中執行語句,呼叫 sub(& i ) 函式,*s+=1; 使得 *s=4; (main()函式 i 也變為 4),t+=*s; 使得 t=6; reutrn t;返回 t,返回 main() 函式,輸出 sub() 返回值 6; 此時 i=4; 第二個迴圈結束,然後執行 I++; 使得 i=5; 判決書 i<4; 跳出迴圈; 週期結束。 程式結束。

    主要有三點需要注意,第一:sub() 的引數是乙個指標,指標引數的操作會影響呼叫方實際引數的值,第二:t 是乙個全域性變數,每次呼叫 sub() 方法時,t 都不需要初始化, 所以上一次呼叫會影響下一次呼叫的值。

    第三:f(i=1; i<4;i++) 迴圈看似迴圈 3 次,但實際上它的值被改變了,因為 &i 是 sub() 函式的指標引數,所以它實際上迴圈了 2 次,而不是 3 次。

  2. 匿名使用者2024-01-30

    首先看第乙個迴圈,i=1,此時呼叫函式sub,*s代表i,s+=1:等價於i=i+1,所以此時i=2,然後下一步就是執行語句t+=*s,相當於t=t+i,結果為2, 所以此時輸出 2;

    此時,程式需要返回到 main 函式,以 printf("%4d",sub(&i));在 的末尾,也執行預設的最後乙個語句 i++,所以 i 是 3

    然後進行第二個迴圈,s+=1 表示 i 增加 1,所以是 4;

    t+=*s 代表 t=t+i,所以是 2+4=6;

    所以此時的輸出是 6。

    回到 main 函式,執行 i++ 並將 i 設定為 5,這樣就可以退出迴圈。

    主功能結束。

    程式簡單,但敘事麻煩,瞭望塔主人。

  3. 匿名使用者2024-01-29

    在第乙個 for 迴圈中是 i,它執行兩個迴圈;

    第二個for迴圈是J,如果i滿足條件,它將執行三個迴圈;

    然後當 i=0 時進入迴圈的第一層,當 j=0 1 2 滿足迴圈的第二層條件時,則 k++ 執行 3 次,即 k 為 3,m++ 執行 1 次,即 1; 當 i=1 時,滿足相同的條件,再次執行 j,然後再次執行 k++,此時 k 為 6,第二次執行 m++,即 2。

    輸出: k=6, m=2

相關回答
6個回答2024-07-31

第二個問題不是問題,第乙個是重要的問題。 >>>More

9個回答2024-07-31

#include

int main() >>>More

20個回答2024-07-31

在你編寫的程式中,a 和 c 都是浮點型變數,兩個浮點型變數在 a==c 等邏輯運算之後的返回值並不是編譯器可以考慮的布林值。 >>>More

4個回答2024-07-31

詞語是狹義的,而詞語是非常寬泛的,包括修辭和解釋。 《辭海》是中國重要的詞典,所以很有價值。

14個回答2024-07-31

男人生來就是為了征服世界,因為他知道,當他征服世界時,會有無數的女人; 乙個女人征服那個男人就足夠了,因為她知道她已經征服了那個男人,也就是說,她已經征服了整個世界。 >>>More