C語言求解,為什麼下面這道題答案是

2021-07-30 12:45:53 字數 3536 閱讀 2134

1樓:匿名使用者

因為k是int型,所以在k被賦值為3.4的時候,實際上轉換成了3(精度損失了),add並沒有改變 k的值,因為c中的引數傳遞是按照值傳遞的,a實際上等於4了,但在add()執行完之後,a就被釋放掉了,k仍然沒變,所以還是3.

2樓:

因為你那個add函式的引數a是值傳遞的,

所以呼叫add(k)後不會改變k的值,k還是3.4,呼叫printf函式用%d格式輸出k,使得k丟掉了整數後的尾數只輸出結果3。

c/c++函式引數傳遞方式有三種:值傳遞,指標傳遞,引用傳遞。

可以參考

以下**就會輸出4了

void add(int &a)

main()

3樓:匿名使用者

首先3.4賦值給int型的k,會截斷變成3

其次你的add函式根本沒有返回值,k值沒變過

所以列印出來肯定還是3

4樓:車車

因為int只能儲存整數,你把3.4賦給int,而int只能存整數,所以傳過去的數字後面的小數會被截斷

這道c語言題(例3)的答案是什麼,為什麼

5樓:千鋒教育

首先這個書上題目是錯的

應該是while(y--){}

printf("y=%d\n",y);

因為是後置自減,所以先判斷再自減,可知當y=0時不再迴圈,然後y自減得到-1,所以選b

6樓:匿名使用者

書上答案錯

bai誤。。

while迴圈中的duy只要不為0就會迴圈,當y等於zhi1的時候,執行

daowhile(y--)此時成立,進入專迴圈,y已經屬自減1變為0了,這裡就輸出0,當再次進入迴圈while(y--)的時候,這個時候y等於0,迴圈不會執行,但是while語句過後y--最後y的值是-1,但是不會輸出y=-1,所以書上的答案錯誤(已經敲**測試了,書上答案有誤)

求解一道c語言題。答案為什麼這麼寫?

7樓:匿名使用者

第1堆是a[0],第2堆是a[1],第3堆是a[2]。

這裡說明一下(i+1)%3。表示用(i+1)/3取餘數。當i=2時,i+1=3,3/3餘數為0,則(i+1)%3=0。

程式的思想是倒推。首先第一個for迴圈第一條語句執行,此時i=2。 a[(i+1)%3]表示a[0]。

a[0]/=2就是把自己本身/2,這樣第1堆火柴恢復到第3堆火柴給它火柴之前的狀態。然後a[i]+=a[(i+1)%3];這樣第3堆火柴剛剛分出去的火柴也加回來了。

然後迴圈第二遍,此時i=1。a[(i+1)%3]表示a[2]。分析思路相同……

最後陣列a中存的火柴恢復了初始狀態,迴圈輸出一遍完事。

8樓:匿名使用者

就是把過程倒過來啊

第一堆減半,加到第三堆

第三堆減半,加給第二堆

第二堆減半,加給第一堆

(c語言)這三道題目答案是什麼,為什麼求解答 10

9樓:跑酷大俠

第一題 3 7 15 31 static 靜態變數 會一直存在第二題 9(6+3) 5(2+3) 7(2+5) 6(5+1)自己找規律吧

第三題 5 2 8 6 理解指標的用法

10樓:tcj一笑而過

可以在vc中執行下,看看結果。

求解下面這道題。

11樓:匿名使用者

設提速前相遇時間為t1,提速後相遇時間為t2,乙原來的速度為x,甲速度為a

300/t1-x=300/t2-(x+1)300÷(140/a)=300÷[(300-180)/a]-115a/7=5a/2-1

5/14a=1

a=14/5 米/秒

t1=140÷(14/5)=50秒

x=(300-140)÷50=16/5米/秒

一道c語言題,為什麼輸出結果是3,2,2?題見**。謝謝啦

12樓:匿名使用者

首先,同學,你寫**的格式就不是很規範,最好每行只有一個**語句,例如:

#include "stdio.h"

void main()

我想你之所以沒明白是對if語句的不熟悉; if 條件句只能夠管它下面的一個語句,這道題中就是if(a>c)下面的b=a;這一句。而再下面a=c; c=b; 是不受 if 限制的。

程式執行時,首先檢測if的條件是否為真,此題中a>c為假,故不執行b=a; 程式繼續執行,執行

a=c;

c=b;

兩條賦值語句,此時a=c=3; c=b=2; b=2;

所以列印結果為3,2,2。

13樓:夢見鈔

if(a>c) b=a; a>c不成立,所以這句 b=a不執行。

之後執行a=c;執行後a=3,b=2,c=3c=b;執行後a=3,b=2,c=2

所以最後輸出3,2,2

c語言選擇題(3道題),幫忙解答一下,謝謝!

14樓:匿名使用者

1、int a=1,b=10;

dowhile (b- -<0);

do迴圈執行了一次,b執行了兩次,第一次b=b-a,b變成了9,b=9>0,迴圈結束,執行b--,b=8;

2、結果應為-1,答案是錯的,或者你拉掉了,因為無論上面執行了什麼,都會執行倒數第二行: y=-1; 最後輸入必為-1;

3、c語言中,sqrt()函式原型為double sqrt(double),所以上題為c,當然vc2008後函式有過載,需要指定型別。

15樓:匿名使用者

第一題:迴圈執行一次,b-=a; a++; 此時b=9,a=1,a++之後,a=2,b=8了

第2題 :因為a

3. 18/4*sqrt(4.0)/8開方後進行運算要進行資料轉換

16樓:匿名使用者

1、第一次迴圈後就退出了迴圈。

b = 10 - 1 = 9 --> b-- --> b = 82、答案是d,除非你抄漏了標點。

就 y=-1;

printf("%d",y);

這兩句有用,其他的都是障眼法。

3、這個無所謂吧,想是什麼型別都可以。有xx特色的題目了。

17樓:匿名使用者

1、do while迴圈先執行一次do,執行後b=9,再執行while語句中的b--,得到b=8.

2、這種題目只要遵循else和最近的if匹配是很簡單的,你可以把程式省略的else或if給添上。、

3、這個可以完全遵循數**算,因為sqrt執行完後是double型的,所以結果是double型的

這道題求解,求解下面這道題。

解答 復 1.52 42 3 2.ab2 bc2 202 152 625bc2 252 625 a 90 s ab?ac 2 od?ab ac bc 2od 5 3.3 x 2x 4 x 2 5 x 2 3 x 2x 4 x 1 x 1 x 2 3 x 2 x 1 x 1 f x y f x f y...

求解這道題,求解下面這道題。

按正常做,只需要注意要換元,則答案是sin 2x 3 1 2 c 1 定義在 4,4 的奇函式,f 0 0,1 a 0 a 1,x 4,0 時,f x 1 4 x 1 3 x.當x 0,4 時,x 0.4 則 f x 1 1 4 x 1 1 3 x 4 x 3 x,奇函式,則f x f x f x ...

下面這道題答案是啥,下面這道題答案是什麼

第一個來乃 才的意思。自第二個乃 於是。第一bai個但 只不過du的意思,但 zhi,只 的意思.但聞dao 只聽見 的意思.所以b正確,第一個爾是你的意思,第二個爾.文言助詞。而已 罷了。第一個以是用,或者把的意思,第二個以 作介詞,憑藉滿意請採納拉 b呀 因 copy為第一個乃 才的意思。第二個...