已有定義int i float f1,f2執行scanf2f 3d ff1,i,f2 時,輸入

時間 2021-09-09 01:17:19

1樓:墨汁諾

45.000000,少了兩個0。

scanf("%3d%f")  3d 就是擷取前三位放在x裡面,那麼45就賦值給了y;

又因為float預設有效位數是6,所以:結果少了兩個0。

scanf中的%3d代表只接收前三個數字。所以是123,又因為scanf中輸入格式為%3d%f,所以遇到空格的時候就會停止,即當123賦值給了x的時候接下來就全部賦值給y,又因為有空格,所以在45的時候斷開,即y停止計入,又因為y是flote型,所以是小數。所以為45.

0。函式原型

int scanf(const char * restrict format,...);函式 scanf() 是從標準輸入流stdin(標準輸入裝置,一般指向鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應地址的變數中。

函式的第一個引數是格式字串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的資訊並儲存於可變引數列表中對應的指標所指位置。每一個指標要求非空,並且與字串中的格式符一一順次對應。

2樓:愛笑的柯南推理

scanf和printf不同,控制語句中除了格式控制符都不起作用反而會帶來麻煩,比如加一個\n不但不會換行還要你手動輸一個回車

(c語言)已有定義:float f1,f2; 資料的輸入方式:4.52 3.5

3樓:

a是正確的,b是錯誤的。因為scanf函式中的控制符不能有精度要求,這是規定。

4樓:匿名使用者

a對,c語言中scanf語句中,輸入的數字是隨你定的(前提,看型別)。所以,想輸入4.52 3.

5 是不用這樣的。

5樓:匿名使用者

a輸入實數時,小數位數不能限制,只可控制加整數控制有效列數,這是語法規定,課本後提高處有介紹

6樓:夜承風

%3.21f中3指數的位數,2指保留的小數位數

a.scanf未指定要保留的位數

7樓:匿名使用者

輸入時不需要指定位數,輸出時才需要

在c語言裡然後輸入4.52(回車)3.5,為什麼會出現錯誤呢?

8樓:匿名使用者

float f1,f2;

scanf("%f,%f",&f1,&f2); // 應該這樣輸入資料:4.52,3.5

1、在scanf()函式讀入浮點數(float型別和double型別)資料時內,不能指定容精度

2、以格式"%f,%f"讀入浮點數時,鍵盤輸入時也以半形逗號「,」隔開

9樓:匿名使用者

scanf("%3.2f%2.1f",&f1,&f2)改為scanf("%f%f",&f1,&f2)

10樓:在下姓周

c語言 scanf 輸入時不能指定精度

已有定義: float fl,f2; 資料的輸入方式:4.52 3.5

11樓:無瀅渟

比較好的解釋就是:規定如此。

好啦,我親自實驗了一番。scanf函式可以有多種格式限制,但是沒有 精度 這一項。

而且,%3f,這裡的3是指讀取的列數,比如你輸入2.22,它只會讀到2.2,小數點也算呦。

從這一點看,你給一個%3.2f,3.2列就是開玩笑了。

若已有定義intmn則m為奇數或者n為奇數的表示式為

糜含之 neusoft c語言程式設計 習題集 c程式設計 習題集 第一章c語言基礎知識 1.1 填空題 1 要把高階語言編寫的源程式轉換為目標程式,需要使用 a 編輯程式 b 驅動程式 c 診斷程式 d 編譯程式 2 若有說明語句 int a,b,c,d c 則能正確從鍵盤讀入三個整數分別賦給變數...

已有定義 int x 3,y 4,z 5,則表示式 x

之經亙姒郎 你這個是c語言吧。你可以看看布林值其他型別的轉換規則。表示式 x y z 1 y z 2的值只可能是0和1,也就是假和真。這裡是表示式條件滿足,所以是1。x y z 1和y z 2分別判斷是0還是1,然後再進行邏輯與 運算。c語言當中,整數轉布林值的時候是非0轉1,0轉0吧。按這個規則來...

電腦已有1根記憶體條,目前正常執行,增加1根同為金士頓DDR3,1333的記憶體條無法開機

電源一直用著的,可以直接排除是電壓的問題。換記憶體時很多朋友都有一個共同的誤區,同型號就ok,隨便插上去就好了。我的個人習慣 1,如果我要換或加記憶體,首先要買同牌子同晶片顆粒 最好同批號 的,因為這樣可以減少不相容的可能。2,換記憶體時先把機子除塵特別是記憶體插槽 可用毛刷,錫紙和風機清理 拆開記...