分化小數

ZDhr發表於2024-03-09

輸入正整數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 型別變數所取的名稱。我們可以使用這個名稱來引用這個變數,比如給它賦值、獲取它的長度、修改它的內容等。

宣告瞭這個變數之後,你就可以使用它來儲存和操作字串了。例如:

cpp複製程式碼
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!

相關文章