統計給定的n個數中,負數、零和正數的個數。
input
輸入資料有多組,每組佔一行,每行的第乙個數是整數n(n<100),表示需要統計的數值的個數,然後是n個實數;如果n=0,則表示輸入結束,該行不做處理。
output
對於每組輸入資料,輸出一行a,b和c,分別表示給定的資料中負數、零和正數的個數。
sample input
6 0 1 2 3 -1 0
5 1 2 3 4 0.5
0 sample output
1 2 3
0 0 5
1 #include 2using
namespace
std;
3int
main()else
if(temp > 0
)else19}
20 printf("
%d %d %d\n
", negative, zero, positive);21}
22return0;
23 }
(1)printf的%f說明符既可以輸出float型又可以輸出double型。
根據「預設引數提公升」規則(在printf這樣的函式的可變引數列表中,不論作用域內有沒有原型,都適用這一規則)float型會被提公升為double型。因此printf()只會看到雙精度數。
(2)scanf對於float型別必須用%f,double必須用%lf,對於scanf,情況就完全不同了,它接受指標,這裡沒有類似的型別提公升。
(通過指標)向float儲存和向double儲存大不一樣,因此,scanf區別%f和%lf。
(3)事實上,printf中沒有定義%lf,但是很多系統可能會接受它。要確保可移植性,就要堅持使用%f。
建議大家使用double型別時,用%lf輸入,%f輸出避免出錯。
float佔32位,double佔64位,(52位為系數字 11位為指數部分,1位為符號位)
double和float的區別
float a 0.1 編譯器報錯 warning c4305 initializing truncation from const double to float 原因 在c c 中 也不知道是不是就在vc 中這樣 上述語句等號右邊0.1,我們以為它是個float,但是編譯器卻把它認為是個doub...
float和double儲存方式
在c c 中float是32位的,double是64位的,兩者在記憶體中的儲存方式和能夠表示的精度均不同,目前c c 編譯器標準都遵照ieee制定的浮點數表示法來進行float,double運算。無論是float還是double,在記憶體中的儲存主要分成三部分,分別是 1 符號位 sign 0代表正...
double和float的誤區!
float是單精度型別,精度是8位有效數字,取值範圍是10的 38次方到10的38次方,float占用4個位元組的儲存空間 double是雙精度型別,精度是17位有效數字,取值範圍是10的 308次方到10的308次方,double占用8個位元組的儲存空間 當你不宣告的時候,預設小數都用double...