1樓:弒緋
你要弄懂自加符號在變數前面和後面的不同。在單獨使用++號時,他的意思都一樣,均為變數自己自加1;
在變數前面的時候,++號的意思是先對變數進行自加,然後在執行之後的操作。
舉個例子:
int a = 1;
int b ;
b =++a+1;
這時候的b=3,a=2
在變數後面的時候,++號的意思是先執行之後的操作,在進行自加.
舉個例子:
int a = 1;
int b ;
b =a+++1;
這時候的b=2,a=2;
同樣的道理,我們回到題目。因為x和y都執行單獨的自加,所以在執行完++y後,x的值為2,y的值為3。
現在看z=(x++)+(y++),因為++號在變數的後面。所以是先執行自加操作之外的操作,再進行自加,也就是先執行z=x+y,也就是z=2+3=5,然後執行x和y的自加
所以最後x=3,y=4,z=5
2樓:風若遠去何人留
逗號表示式 從左到右計算
所以 先
x++ -> x=2
y++ -> y=3
然後計算 z=(x++) + (y++);
這裡 先取值 z=2+3=5
然後 x自加為3 y自加為4
於是x=3
y=4z=5
3&4 4|5表示什麼意思啊?
c語言,為什麼結果是1 3 4 5
3樓:楊兵
答案我執行過了,是 1 3 4 5,現在我來解釋一下,希望我的解釋你能夠理解:
首先int a[5]=;
(1)注意到c/c++語言規定是a[0]=1,a[1]=4,a[2]=5;
而不是a[1]=1,a[2]=4,a[3]=5;
(2)經過
while (i<=n&&k>=a[i])
i++;
由於a[i]即a[1]=4,而k=3不大於a[1],不滿足迴圈條件,不執行i++語句
故經過while之後,i 不變,仍未1;
(3)for (j=n-1;j>=i;j--)
a [j+1]=a[j];
當j =n-1即j=2時,將(a[j]即a[2])的值5賦值給(a[j+1]即a[3]),此時a[5]=;
當 j=1時,將(a[j]即a[1])的值4賦值給(a[j+1]即a[2]),此時a[5]=;
(4)a[i]=k;
即將k的值3賦值給a[i]即a[1],得a[1]=3,此時a[5]=
(5)for (i=0;i<=n;i++)
printf ("%3d",a[i]);
輸出a[5]所有的值,即1,3,4,5
4樓:劉_永友
你嘗試著一步一步的 自己試著 想象 執行過程
i n j k a[0] a[1] a[2] a[3] a[4]
1 3 null 3 1 4 5 0 0
while語句進入 由於 k>=a[1] 不成立 所以 跳出
for語句 初始化 j = 2
第一次 1 3 1 3 1 4 5 5 0
第二次 1 3 0 3 1 4 4 5 0
由於 0<1 跳出
下一語句 a[i]=k; 執行 即使 a[1] = 3;
執行 列印語句 到 a[3] 所以就是 1 3 4 5了 你要注意 格式 我估計你這個是 把迴圈的格式
弄錯了 造成了邏輯 錯誤 …… 按照題目要求 慢慢改吧 迴圈體 建議 加一個 括號……
5樓:匿名使用者
a[0]=1,a[1]=4,a[2]=5;
while (i<=n&&k>=a[i])後i 不變,仍未1;
為什麼結果是 a b
首先說明一下,這個程式巧妙的應用了賦值語句作為判斷條件,同時實現了兩個作用 1.字元陣列賦值。2.判斷串尾符跳出迴圈。下面來詳細的看 字串s為 a b 注意作為字串,s的最後還有乙個預設的串尾符 0 void fun char a,char b while a a 這個語句比較好理解,作用是判斷...
7,8,9,12讓結果是,7,8,9,12讓結果是
9 7 8 12 8 9 12 7 9 12 8 內7 8 7 9 12 9 7 12 8 9 7 容8 12 8 7 9 12 12 8 7 9 12 8 9 7 9 12 7 8 12 9 7 8 8 12 9 7 7 9 8 12 9 7 12 8 7 9 12 8 12 9 8 7 12 9...
講解22的結果是,講解22的結果是
2 專2 2 2 2 2 屬2 1 2 2 2 2 2 2 2 版 權 2 2 2 2 2 2 2 原式 2 2 4 2 2 2 2 2 2013 2 2 2013 2 2013 2 3 2 數學問題求解,要有過程 2 3 2 2 2 3 2 2 2 2014一2 2013 解du zhi 2 da...