求解一道c語言題,答案是輸出13,求解為什麼還會輸出

2021-05-13 09:29:28 字數 1149 閱讀 3091

1樓:匿名使用者

首先主程式呼叫fun(bai3),x=3,dux/2>0,迭代zhi呼叫daofun(x/2),內傳入x=1,在fun(1)中,x/2<0,跳過呼叫fun(x/2),輸出x的值:1

fun(1)函式結束容回到fun(3),繼續輸出當前x的值:3最後fun(3)呼叫結束,回到主程式,輸出換行注意無論x/2是否》0,輸出語句都會呼叫,if判斷隻影響是否迭代

c語言中的一道題 求程式的輸出結果 為什麼我求出來是1 2 2 呢?而答案是1 2 3 啊

2樓:匿名使用者

你的情況是:來

while(n++<=1)中是先取n值判斷源後再n++,因此第一次n=0判斷有效,n變為1並執行迴圈體;

第二次n=1判斷仍有效,n變為2並執行迴圈體,第三次n=2判斷無效,n++被忽略。

但實踐中由於編譯器的實現不同,可能導致第三次半段無效時n++未被忽略-理論上是不應該忽略的。所以給的答案是1 2 3。

所以問題可能出在你使用的編譯器上。

我用tc2.0編譯器、tcc編譯器和cygwin下的gcc編譯器執行結果均為:1 2 3。

不知道你用的什麼編譯器?

難怪。這主要是編譯器的問題。 我用vc6.

0測試了,如果debug模式沒有問題,release模式有問題,只有1 2。 我估計是release優化出錯。所以檢視了一下,如果以速度優化,則輸出1 2。

預設模式則跟debug一樣。最小尺寸優化也只輸出兩個。自定義優化跟預設模式一樣。

所以問題出在編譯器及project設定上。

所以正確答案應是三個:1 2 3。

3樓:光明左右二使

你忽略了最後一次,n = 2的時候,還是會計算n++ <= 1的,這個時候 因為n > 1,所以沒有進迴圈(在括號處求的值),但是編譯器還是對n++求了一次值,不然,怎麼知道n++ 已經不符合條件了

4樓:匿名使用者

當n=1時(第二次迴圈),1<=1滿足,那麼n加一,然後執行迴圈體

此時n=2,進入n++<=1中,由於2<=1不成立,應該跳出迴圈啦,但n還要加1的,因為n++<=1是一個語句。此時n=3了。

一道c語言題,為什麼輸出的結果為負數?

求解一道c語言題目,求解一道c語言題

a p s 可以分解成 p s p 表示式的值即使前者的結果,因為p a,且 的優先順序比 的高,所以先 版執行p s獲得 abc 的首地址權,再解引用獲得 字元 a 求解一道c語言題 函式fun中有c,但是那個c只屬於函式fun,且fun不返回c,主函式中定義的c也沒有接受fun返回的值,所以,相...

一道c語言題目求解答,一道C語言程式設計題,求解答並且說明錯誤原因!!

scanf 函式中沒有精度控制。如 scanf 5.2f a 是非法的。不能企圖用此語句輸入小數為2位的實數。則排除c b,d沒有 排除 格式輸入嚴格按照格式輸入就好了,如果是c的話輸入得是 6.2283.1900 6.2在輸出的時候有作用,再輸入的時候沒作用。一道c語言程式設計題,求解答並且說明錯...

C語言積極求解,一道C語言程式設計題求解

1.若以下選項中的變數已正確定義,則正確的賦值語句是 a x1 26.8 3 b 1 2 x2 c x3 0x12 d x4 1 2 3 2.下面給出的識別符號中,能作為變數名的是 d a for b 123 c int d a b 中間一橫線在下面 3.c語言中,運算物件必須是整形數的運算是 c ...