輸入正整數a,b,c,輸出a/b的小數形式,精確到小數點後c位。a,b<=1000000,c<=100.
輸入包含多組資料,結束標記為a=b=c=0.
#include <iostream> #include <iomanip> #include <sstream> int main() { int a, b, c; std::string result; std::stringstream ss; // 迴圈讀取輸入,直到a=b=c=0 while (true) { std::cin >> a >> b >> c; if (a == 0 && b == 0 && c == 0) { break; // 結束標記 } // 轉換為double進行除法運算 double divResult = static_cast<double>(a) / b; // 設定輸出流的小數點精度 ss << std::fixed << std::setprecision(c) << divResult; // 獲取格式化後的字串 result = ss.str(); // 清除stringstream中的內容,以便下次使用 ss.clear(); ss.str(""); // 輸出結果,並去掉末尾可能出現的0和小數點 size_t dotPos = result.find('.'); if (dotPos != std::string::npos) { while (result.back() == '0') { result.pop_back(); } if (result.back() == '.') { result.pop_back(); } } std::cout << result << std::endl; } return 0; }
1.std::string result;
是C++程式碼的一行,它宣告瞭一個名為 result
的變數,該變數的型別是 std::string
。這裡,std::string
是C++標準庫中的一個類,用於表示和操作字串。
具體解釋如下:
std::
:這是C++標準庫的名稱空間。C++標準庫中的許多類和函式都定義在這個名稱空間中。使用std::
字首可以確保我們使用的是標準庫中的string
類,而不是某個使用者自定義的同名類。string
:這是C++標準庫中定義的一個類,用於表示字串。它可以儲存一系列字元,並提供了一系列操作這些字元的方法,比如連線、比較、查詢子串等。result
:這是我們為std::string
型別變數所取的名稱。我們可以使用這個名稱來引用這個變數,比如給它賦值、獲取它的長度、修改它的內容等。
宣告瞭這個變數之後,你就可以使用它來儲存和操作字串了。例如:
std::string result; | |
result = "Hello, World!"; // 給 result 賦值 | |
std::cout << result; // 輸出 result 的內容,即 "Hello, World!" |
在這段程式碼中,我們首先宣告瞭一個 std::string
型別的變數 result
,然後給它賦了一個值 "Hello, World!"
,最後使用 std::cout
輸出了這個變數的內容。
std::fixed表示使用定點表示法(即包括小數點)
2.在C++的I/O流中,std::fixed
是一個流操縱器(stream manipulator),用於控制浮點數的輸出格式。當你使用std::fixed
時,它告訴輸出流以固定的小數點表示法來格式化浮點數,而不是使用科學計數法。
具體來說,固定小數點表示法意味著浮點數總是以小數點形式輸出,無論其大小。即使浮點數的值非常大或非常小,也不會被轉換為科學計數法形式(如1.23e+04
)。相反,它會按照你設定的精度來輸出指定數量的小數位
3.result
應該是一個已經定義並初始化為 std::string
型別的物件。back()
是 std::string
類的一個成員函式,用於返回對最後一個字元的引用
4.esult = ss.str();
這行程式碼的作用是獲取std::stringstream
物件ss
中當前的內容,並將其轉換為一個std::string
型別的字串,然後將這個字串賦值給變數result
。
5.本來是用devC++來編譯的然後出現了“back”未宣告的問題,查詢了文心一言
然後又換了VS來編譯成功了。。。。。
嗯 先這樣 晚安zz!