分化小数
输入正整数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!