洛谷 P5706 深基2 例8 再分肥宅水

2022-10-09 10:03:09 字數 1764 閱讀 6746

題目連線:

p5706 【深基2.例8】再分肥宅水 - 洛谷 | 電腦科學教育新生態 (luogu.com.cn)

我提交的:

1 #include2 #include3

using

namespace

std;

4int

main()

然而,只有乙個ac,思考良久,不知為何而錯。無奈看了看題解,發現人家比我多了乙個"fixed"。那這個"fixed"到底是什麼呢?

網上尋找了一圈,看見人家說:「如果乙個數字太大,無法使用 setprecision 指定的有效數字數來列印,則許多系統會以科學表示法的方式列印。」

經過嘗試後,發現果真如此:

所以應該加上fixed來控制位數。

那麼,為什麼setprecision不能這樣輸出呢?我又找了一圈,我發現我對setprecision的理解完全錯了。

我過去曾認為:setprecision就是傳統意義上,按照我們人腦控制的小數點位數。結果好像跟setw一樣的效果,都是控制總有效位數?

現在,問題來到了setw和setprecision的區別:

setw(n): 右對齊,不夠位數左邊加空格,可以用setfill()來控制左邊填充的東西

setprecision(n): 左對齊,不夠位數不填充,對於小數點後的0會自動省略。

double a = 123.321

;

double b = 32.21

;

//cin >> a >> b;

double num = a /b;

cout

<< "

結果:"

<

cout

<< fixed

<< setw(6) << num << endl; //

看看是不是對setw有效

cout << setprecision(6) << num <

cout

<< num << endl; //

看看是不是對下面也有效

cout << setprecision(2) << num <

cout

<< num << endl; //

確實有效

cout << setprecision(1) << num << endl;

cout.setf(ios::fixed);  //加上這一句也可以

結果:

3.828656

3.828656

3.828656

3.83

3.83

3.8d:\c++程式\try1\debug\try1.exe (程序 63548)已退出,**為 0

。要在除錯停止時自動關閉控制台,請啟用「工具」->「選項」->「除錯」->「除錯停止時自動關閉控制台」。

按任意鍵關閉此視窗. . .

結論:加上fixed後,經過嘗試,setpricision可以控制小數字數,但是setw卻不行。

總結:如果cout要控制小數點位數,那麼使用setprecision時要加上fixed;

fixed對setprecision都有效果,對setw沒有。

setw只對下乙個輸出值有效,而setprecision對後面的輸出都有效。

洛谷P5705 深基2 例7 數字反轉 題解

洛谷p5705 深基2.例7 數字反轉 題解 感想 我才一年沒動 啊,啥都忘記了啊,淦!最簡單的字串輸入輸出也忘了,從頭開始刷吧。題目 於洛谷,在這裡把幾種解題思路和 彙總一下。法一 字串輸入輸出並反轉 1.已知數字位數 include 萬能頭 using namespace std intmain...

洛谷 P3613 深基15 例2 寄包櫃

超市裡有 n n le10 5 個寄包櫃。每個寄包櫃格仔數量不一,第 iii 個寄包櫃有 a i a i le10 5 個格仔,不過我們並不知道各個 a i 的值。對於每個寄包櫃,格仔編號從 1 開始,一直到 a i 現在有 q q le10 5 次操作 已知超市裡共計不會超過 10 7 個寄包格仔...

洛谷P5266 深基17 例6 學籍管理

你可以選擇用map掃瞄,或者stack佇列,但我認為那些太高大上了,所以寫了乙個struct 結構體,給新手看的 include 標頭檔案,沒個說 include using namespace std struct node 鄙人的思考方法,結構體 node a 100005 int n int ...