1樓:楊兵
答案我執行過了,是 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
2樓:劉_永友
你嘗試著一步一步的 自己試著 想象 執行過程
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了 你要注意 格式 我估計你這個是 把迴圈的格式
弄錯了 造成了邏輯 錯誤 …… 按照題目要求 慢慢改吧 迴圈體 建議 加一個 括號……
3樓:匿名使用者
a[0]=1,a[1]=4,a[2]=5;
while (i<=n&&k>=a[i])後i 不變,仍未1;
c語言小問題,為什麼結果是 1,謝謝
ffff是的2進位制數是1111 1111 1111 1111它的反碼為1000 0000 0000 0000 符號位不變補碼就是1000 0000 0000 0001一共16個1 佔4個位元組 x為char型 資料溢位 只能儲存8個二進位制數 符號位和後面7位 就是1000 0001 符號位為1 ...
C語言 float 5 2結果是多少
c語言 float 5 2結果是2 0000000。常量5和2是int型,int型變數除以int還是int,所以5 2結果是2。最後一個等號 把2強強制轉換成float資料型別。賦給a,float資料型別在機內用指數型式表示,尾數表示浮點數有效數字,0 x。因此,float 5 2 2 000000...
C語言初級有以下程式段輸出結果是
for i 1 i 15 j 4 一定是給錯了,應該是for i 1 i 15 i 4 取4個值1,5,9,13 for j 3 j 19 j 4 m 會執行5次m 也就是m 5,j分別取3,7,11,15,19 兩個迴圈是巢狀關係,合計執行為4 5 20。外層迴圈應該是 for i 1 i 15 ...