float x1,x2 x1 3 2 printfdlfint)x1,x2)除錯了下,為什麼x

2021-03-28 00:52:32 字數 4265 閱讀 3227

1樓:聽不清啊

第一個是因為3/2是兩個整數的商,也是一個整數,所以就等於1(小數部分丟棄了)。

第二個是因為1.0/2=0.5,但是「%.lf"格式符指定輸出0位小數,所以小數部分四捨五入,就也是1了。

2樓:飄零↗落羽

x1 = 1.5

(int) x1 保留x1整數部分(小數部分捨去),是1x2 = 0.75

%.lf x2四捨五入輸出,是1

如果用%lf,預設保留6位

形如%.1lf這樣就是保留一位,%.2lf就是保留兩位

3樓:劉琰明

x1是1 是因為你print (int)。x2 try %f or %lf 不是 %.lf 那個decimal point 估計是錯了。

4樓:匿名使用者

輸出是: 1,0.500000            你是不是 看錯了

5樓:

float後面得加l

float x1,x2; x1=3/2; x2=x1/2; printf("%d%.1f",(int)x1,x2); 輸出值是多少

6樓:

x1=3/2;

x2=x1/2;

printf("%f\n",x1);

你會發現 x1 就等於1

因為 x1=3/2; 3和2都是整型,除下來結果也為整型,是1,然後賦值給float,變成1.0

為什麼也是正確的

7樓:匿名使用者

printf語句中沒有必要加l。%f和%lf沒有區別,一樣算對。

8樓:小柳

%f代表單精度浮點型資料(float),%lf代表雙精度浮點型資料(double),你這樣寫相當於將%lf型別版強制轉換成了%f型別,關於資料權型別轉換如果你還沒有學習過的話可以參考這篇部落格,強制型別轉換容易造成精度丟失,所以使用的時候要慎重

c語言問題,為什麼無論輸入什麼結果輸出的x1=0,x2=0

9樓:ㄨ『正典』灝皴

這樣du改#include

#include

void main()

else

printf("此一元二次方程的解為虛根");}

10樓:匿名使用者

x1=(-b+sqrt(d))/2*a;

x2=(-b-sqrt(d))/2*a;

中-b應該是來(自-1)*b

然後把printf("此一元二次方程

的解為\nx1=%lf,x2=%lf",&x1,&x2);中的&去了而且。。你的d應該是>=0吧

11樓:匿名使用者

你再執行試試,我這裡輸出不是 0

不過你**寫錯了,輸出中 x1,x2 應該去掉 & .

12樓:匿名使用者

你這個有兩個問題,2*a需要用括號括起來,還是printf中x1和x2不需要取地址符

13樓:悠遊萬年

輸出時x1,x2前多加了&

14樓:彌敦道

&x1和&x2是地址

# define ma(x,y) (x)*(y) int i=2; i=3/ma(i,i+2)+5; printf(「%d」,i); 輸出是什麼,為什麼?

15樓:匿名使用者

i=3/ma(i,i+2)+5;

經過巨集替換後抄:

i=3/(i)*(i+2)+5;

由於在此襲之前,i=2,所以

3/(i)*(i+2)+5

就成了3/2*4+5

由於參與運算的都是整

數,所以結果也是整數,即:

3/2的結果就是1,因此,表示式就變成了:

1*4+5

也就是9

16樓:匿名使用者

輸出來 9

沒有為什麼 **這源麼簡單 你問的是為什麼 輸出9 還是什麼我估計你是不明白 #define ma(x,y) (x)*(y) 這個就是個自定義 重新命名的意思

定義以後 ma(1,2) 就相當於 1*2懂了嗎

17樓:匿名使用者

答案為9.

步驟:i=3/ma(i,i+2)+5=3/(i)*(i+2)+5=3/2*4+5=1*4+5=9.

18樓:匿名使用者

9 i = 3/2 * 4 + 5 = 9

main() { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d \n", d*y); } 結果 為什麼是0???

19樓:王愛飛

x = 1.2個語句有問題

抄,注意對襲於浮點數,計

算機的表示是近似值(有精度範圍),而1.2對於計算機是無法精確表示的,計算機應該是存了一個跟1.2最接近的數值(接近但是小於1.

2),這樣的話x+3.8(注,3.8 也不能精確表示)就小於5.

0,這樣表示式(x+3.8)/5.0的值就是接近1但是小於1,然後將這個小於1的數值賦給y,而y是int,不能接收小數,對於絕對值小於1的情況都是0,所以結果是0

20樓:

x=1.2; //x是整形,因此x=1

y=(x+3.8)/5.0;

=(1+3.8)/5.0

=4.8/5.0 //結果是0.96,但y是整形,因此y=0=0

21樓:

c語言中有個強bai制型別轉換du。舉個例子zhiint x;

x=1.2;

這個時候daox是1

float x; x=5;

這個時候x是5.0

你這個題目實專際是這樣的

屬y=(x+3.8)/5.0

因為x是int型,所以x取1

y=(1+3.8)/5.0=4.8/5.0因為y也是int型,所以y取0

22樓:匿名使用者

x是int型,x=1.2時會給截斷,變成x=1,

這樣x+3.8 / 5時是4.8/5 < 1,賦給y時就會給截斷了,變成0

#include"stdio.h" #include"math.h" int main() { float a,b,c,i,x1,x2; printf("請輸入三個值a,b,c:\n")

23樓:

程式雖然不完整,但錯誤是下面導致的:

float a,b,c,i,x1,x2; //x1是大寫,你後面又寫成小寫,c是區分大小寫的。

輸入x1,x2,x3想用外部函式的方法使其按大小依次輸出,但是形參實參問題處理不好,源**見下,求指點,謝謝~

24樓:飄飄渺渺夢逍遙

#include

void ***p(int *x1 , int* x2);}void main()

用上指標,不

用指標只能更改版

區域性權量

25樓:匿名使用者

其實是屬於排序問題,

最簡單的就是氣泡排序,專一段程式供

屬參考:

#include

int a[3];

void swap(int i , int j)void main()

for(i=0; i<3; i++)

for(j=i; j<3; j++)

if(a[i]>a[j])

swap(i,j);

for(i=0; i<3; i++)

printf("%-4d",a[i]);

printf("\n");}

若有以下程式段: int x1=1, x2=2, x3=3; x3=x1/x2; printf(「%d\n」,x3); 執行後輸出的結果是( )。 a

26樓:等一個人灰咖啡

c 看下c語言中關於/是怎麼解釋的就懂了 兩個整數/結果還是整數 x3=x1/x2; 還有這裡printf(「%d\n」,x3) 格式控制要求輸出d 也是整數

x 2x 2 2x 1x 2x 2 1x 1),其中x(根號

1 baix 2 du x 2 2x 1 zhix 2 daox 2 1 x 1 其中x 根號 回2 2 1 x 2 x 1 2 x 2 x 1 x 1 x 1 1 x 2 x 1 x 2 1 x 2 x 1 x 2 x 2 x 2 x 1 x 2 答x 2 x 2 x 2 3x 2 x 2 x 2...

x 2 x 1 3 2在 0,1 上的定積分

先用待定係數法把被積函式分開,然後你就會算了 答案是4 3。用第二來換元法源 0 1 1 x x 1 3 2 dx 0 1 1 x 1 2 3 4 3 2 dx 令x 1 2 3 2 tanz dx 3 2 sec z dz x 1 2 3 4 3 4 tan z 3 4 3 4 sec z 3 2...

x2x1x4x3x,x2x1x4x3x3x2x5x4,初二數學計算題

原式 1 1 x 1 1 1 x 3 1 1 x 2 1 1 x 4 1 x 1 1 x 3 1 x 2 1 x 4 1 x 1 1 x 4 1 x 2 1 x 3 2x 5 x 1 x 4 2x 5 x 2 x 3 2x 5 1 x 1 x 4 1 x 2 x 3 2x 5 x 2 5x 6 x ...