C++格式化输入输出【练习版】

一、引言

在 C++ 编程中,准确地进行输入输出操作是构建功能强大且用户友好程序的关键。格式化输入输出允许我们以特定的格式展示数据,确保数据的可读性和准确性。本文将深入探讨 C++ 的格式化输入输出,通过丰富的练习例题和详细的答案解析,帮助读者更好地掌握这一重要技能。

二、C++ 格式化输入输出基础

(一)coutcin简介
cout是 C++ 中的标准输出流,用于向屏幕输出数据。cin是标准输入流,用于从键盘接收数据。

(二)简单的格式化输出示例

cpp

Copy

int num = 42;
std::cout << "The number is: " << num << std::endl;

(三)简单的格式化输入示例

cpp

Copy

int inputNum;
std::cout << "Enter a number: ";
std::cin >> inputNum;
std::cout << "You entered: " << inputNum << std::endl;

三、格式化操纵符

(一)设置输出宽度setw
使用setw操纵符可以设置输出字段的宽度。

cpp

Copy

int a = 10;
std::cout << "Value with setw(5): " << std::setw(5) << a << std::endl;

(二)设置精度setprecision
用于设置浮点数的输出精度。

cpp

Copy

double b = 3.1415926;
std::cout << "Value with setprecision(3): " << std::setprecision(3) << b << std::endl;

四、练习例题

(一)例题 1:输出格式化的个人信息
要求:输入姓名、年龄和身高(保留两位小数),然后以特定格式输出个人信息。

cpp

Copy

#include <iostream>
#include <iomanip>

int main() {
    std::string name;
    int age;
    double height;

    std::cout << "Enter your name: ";
    std::cin >> name;

    std::cout << "Enter your age: ";
    std::cin >> age;

    std::cout << "Enter your height: ";
    std::cin >> height;

    std::cout << "Name: " << name << std::endl;
    std::cout << "Age: " << age << std::endl;
    std::cout << "Height: " << std::fixed << std::setprecision(2) << height << std::endl;

    return 0;
}

(二)例题 2:输出表格形式的数据
要求:输入若干个整数,然后以表格形式输出这些整数,每行输出五个整数,每个整数占五个字符宽度。

cpp

Copy

#include <iostream>
#include <iomanip>

int main() {
    int num;
    int count = 0;
    std::cout << "Enter integers (enter 0 to stop): ";
    while (std::cin >> num && num!= 0) {
        std::cout << std::setw(5) << num;
        count++;
        if (count % 5 == 0) {
            std::cout << std::endl;
        }
    }

    return 0;
}

(三)例题 3:进制转换输出
要求:输入一个整数,分别以十进制、八进制和十六进制输出该整数。

cpp

Copy

#include <iostream>
#include <iomanip>

int main() {
    int number;
    std::cout << "Enter an integer: ";
    std::cin >> number;

    std::cout << "Decimal: " << std::dec << number << std::endl;
    std::cout << "Octal: " << std::oct << number << std::endl;
    std::cout << "Hexadecimal: " << std::hex << number << std::endl;

    return 0;
}

五、答案解析

(一)例题 1 答案解析
通过cin分别获取用户输入的姓名、年龄和身高。然后使用cout输出个人信息,对于身高使用std::fixedstd::setprecision(2)来确保输出保留两位小数。

(二)例题 2 答案解析
使用一个循环不断接收用户输入的整数,使用std::setw(5)设置输出宽度为五个字符。通过计数变量count来控制每行输出五个整数后换行。

(三)例题 3 答案解析
首先接收用户输入的整数。然后分别使用std::decstd::octstd::hex操纵符来以十进制、八进制和十六进制输出该整数。

六、总结

C++ 的格式化输入输出为我们提供了强大的工具来控制数据的显示方式。通过练习不同类型的例题,我们可以更好地掌握各种格式化操纵符的使用方法,从而编写出更加清晰、易读的程序。在实际编程中,根据不同的需求灵活运用格式化输入输出,可以大大提高程序的质量和用户体验。

### C++ 中的格式化输入输出方法 #### 使用 `iostream` 库进行基本输入输出操作 在 C++ 中,标准库提供了 `iostream` 来处理输入和输出。对于输出,可以使用 `std::cout` 对象;对于输入,则可以使用 `std::cin` 对象。 ```cpp #include <iostream> int main() { int number; std::cout << "Enter an integer: "; std::cin >> number; std::cout << "You entered: " << number << std::endl; } ``` 这段代码展示了如何读取并打印整数[^2]。 #### 处理错误信息 当遇到初始化或其他类型的错误时,可以通过流对象来报告这些情况: ```cpp if (!socket.connect(endpoint)) { std::cout << "> Connect initialization error: " << ec.message() << std::endl; } ``` 这里展示了一个连接失败后的错误消息输出例子[^1]。 #### 格式控制符的应用 为了更好地控制输出格式,C++ 提供了一系列操纵器(manipulators),比如设置宽度、精度等属性。这使得程序能够更灵活地调整数据呈现方式。 ```cpp #include <iomanip> #include <iostream> double pi = 3.14159; // 设置浮点数显示的小数位数为两位 std::cout << std::fixed << std::setprecision(2); std::cout << "Pi rounded to two decimal places is " << pi << '\n'; ``` 此片段说明了如何利用 `<iomanip>` 头文件中的函数精确指定数值的表现形式。 #### 字符串长度与大小计算 考虑到不同本的标准可能返回不同类型的结果,在编写兼容性强的代码时需要注意这一点。例如,获取字符串长度应考虑 `%zd` 这样的格式说明符以适应现代编译环境的要求。 ```c size_t length = strlen(str); // 获取字符串的实际字节数 printf("String has %zu characters\n", (size_t)length); ``` 上述示例强调了根据具体上下文选择合适的数据类型的重要性[^3]。 #### 文件 I/O 操作 除了屏幕上的交互外,还可以通过文件流来进行磁盘存取工作。创建或打开现有文件后即可执行相应的写入/读取动作。 ```cpp #include <fstream> std::ofstream outFile("example.txt"); outFile << "Writing this line into file."; outFile.close(); ``` 以上介绍了几种常见的 C++ 输入输出技术及其应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ysjt | 深

谢谢你!你的支持是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值