GESP一级 - 第三章 - 第1节 - 标准输入输出

C++标准输入输出

1. 初识C++程序结构

1.1 main()函数

示例1: 一个简单的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    cout << "你好,世界!" << endl;
    return 0;
}

示例2: 带有返回值的main()函数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    cout << "这个程序返回0。" << endl;
    return 0;
}

示例3: 带有命令行参数的main()函数

cpp 复制代码
#include <iostream>
using namespace std;

int main(int argc, char* argv[]) {
    cout << "命令行参数的数量: " << argc << endl;
    return 0;
}

示例4: 在main()函数中调用其他函数

cpp 复制代码
#include <iostream>
using namespace std;

void printMessage() {
    cout << "这是来自另一个函数的消息。" << endl;
}

int main() {
    cout << "调用另一个函数..." << endl;
    printMessage();
    return 0;
}

示例5: 在main()函数中使用条件语句

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x = 10;
    if (x > 5) {
        cout << "x大于5。" << endl;
    } else {
        cout << "x不大于5。" << endl;
    }
    return 0;
}

示例6: 在main()函数中使用循环语句

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 5; i++) {
        cout << "第" << i << "次迭代" << endl;
    }
    return 0;
}

1.2 头文件、代码主体

示例1: 包含单个头文件的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    cout << "这个程序包含了iostream头文件。" << endl;
    return 0;
}

示例2: 包含多个头文件的C++程序

cpp 复制代码
#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main() {
    cout << "这个程序包含了多个头文件。" << endl;
    string message = "你好,世界!";
    double result = sqrt(16);
    cout << message << endl;
    cout << "16的平方根: " << result << endl;
    return 0;
}

示例3: 使用自定义头文件的C++程序

cpp 复制代码
#include <iostream>
#include "myheader.h"
using namespace std;

int main() {
    cout << "这个程序使用了自定义头文件。" << endl;
    printCustomMessage();
    return 0;
}
cpp 复制代码
// myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H

void printCustomMessage();

#endif
cpp 复制代码
// myheader.cpp
#include <iostream>
#include "myheader.h"
using namespace std;

void printCustomMessage() {
    cout << "这是来自自定义头文件的消息。" << endl;
}

示例4: 使用命名空间的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

namespace myNamespace {
    void printMessage() {
        cout << "这是来自myNamespace的消息。" << endl;
    }
}

int main() {
    myNamespace::printMessage();
    return 0;
}

示例5: 使用条件编译指令的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

#define DEBUG

int main() {
    #ifdef DEBUG
        cout << "调试模式已激活。" << endl;
    #else
        cout << "调试模式未激活。" << endl;
    #endif
    return 0;
}

示例6: 使用内联函数的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

inline int square(int x) {
    return x * x;
}

int main() {
    int result = square(5);
    cout << "5的平方: " << result << endl;
    return 0;
}

1.3 注释的使用

示例1: 使用单行注释的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    // 这是一个单行注释
    cout << "你好,世界!" << endl;
    return 0;
}

示例2: 使用多行注释的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    /*
     这是一个
     多行注释
    */
    cout << "你好,世界!" << endl;
    return 0;
}

示例3: 使用注释解释变量的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int age = 25;  // 声明并初始化一个整型变量'age'
    double height = 1.75;  // 声明并初始化一个双精度浮点型变量'height'

    cout << "年龄: " << age << endl;
    cout << "身高: " << height << " 米" << endl;

    return 0;
}

示例4: 使用注释解释函数的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

// 计算一个数的平方的函数
int square(int x) {
    return x * x;
}

int main() {
    int result = square(5);
    cout << "5的平方: " << result << endl;
    return 0;
}

示例5: 使用注释临时禁用代码的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    cout << "这行代码会被执行。" << endl;
    // cout << "这行代码被注释掉了,不会被执行。" << endl;
    return 0;
}

示例6: 使用注释提供代码概述的C++程序

cpp 复制代码
#include <iostream>
using namespace std;

/*
 这个程序演示了如何使用注释来提供代码概述。
 它包含一个main()函数,该函数输出一条欢迎消息。
*/

int main() {
    cout << "欢迎使用这个C++程序!" << endl;
    return 0;
}

2. 变量与数据类型

2.1 整型、浮点型变量

示例1: 整型变量的声明与使用

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int age = 25;
    cout << "年龄: " << age << endl;
    return 0;
}

示例2: 浮点型变量的声明与使用

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    double price = 9.99;
    cout << "价格: " << price << endl;
    return 0;
}

示例3: 整型和浮点型变量的转换

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x = 10;
    double y = x;  // 隐式转换
    cout << "x = " << x << endl;
    cout << "y = " << y << endl;
    return 0;
}

示例4: 整型变量的溢出

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x = 2147483647;  // int型变量的最大值
    x = x + 1;  // 溢出
    cout << "x = " << x << endl;
    return 0;
}

示例5: 浮点型变量的精度损失

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    double x = 1.0 / 3.0;
    cout << "x = " << x << endl;  // 输出结果可能与预期不同
    return 0;
}

示例6: 使用不同进制表示整数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int decimalNum = 10;  // 十进制
    int octalNum = 012;  // 八进制
    int hexNum = 0xA;  // 十六进制
    cout << "十进制: " << decimalNum << endl;
    cout << "八进制: " << octalNum << endl;
    cout << "十六进制: " << hexNum << endl;
    return 0;
}

2.2 char、string类型

示例1: 字符变量的声明与使用

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    char grade = 'A';
    cout << "成绩: " << grade << endl;
    return 0;
}

示例2: 字符串变量的声明与使用

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string message = "你好,世界!";
    cout << "消息: " << message << endl;
    return 0;
}

示例3: 字符变量的ASCII码值

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    char ch = 'A';
    int asciiValue = ch;
    cout << "字符 '" << ch << "' 的ASCII码值: " << asciiValue << endl;
    return 0;
}

示例4: 字符串的连接

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string firstName = "John";
    string lastName = "Doe";
    string fullName = firstName + " " + lastName;
    cout << "全名: " << fullName << endl;
    return 0;
}

示例5: 字符串的长度

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string message = "Hello, World!";
    int length = message.length();
    cout << "消息长度: " << length << endl;
    return 0;
}

示例6: 字符串的访问与修改

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string message = "Hello";
    cout << "第一个字符: " << message[0] << endl;
    message[0] = 'J';
    cout << "修改后的消息: " << message << endl;
    return 0;
}

2.3 变量的声明与初始化

示例1: 变量的声明

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x;  // 声明整型变量x
    double y;  // 声明双精度浮点型变量y
    char ch;  // 声明字符型变量ch
    string str;  // 声明字符串变量str
    return 0;
}

示例2: 变量的初始化

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x = 10;  // 声明并初始化整型变量x
    double y = 3.14;  // 声明并初始化双精度浮点型变量y
    char ch = 'A';  // 声明并初始化字符型变量ch
    string str = "Hello";  // 声明并初始化字符串变量str
    return 0;
}

示例3: 多个变量的声明与初始化

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int a = 1, b = 2, c = 3;  // 同时声明并初始化多个整型变量
    double x = 1.0, y = 2.0, z = 3.0;  // 同时声明并初始化多个双精度浮点型变量
    return 0;
}

示例4: 变量的默认初始化

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x;  // 默认初始化为随机值
    double y;  // 默认初始化为随机值
    char ch;  // 默认初始化为随机值
    string str;  // 默认初始化为空字符串
    cout << "x = " << x << endl;
    cout << "y = " << y << endl;
    cout << "ch = " << ch << endl;
    cout << "str = " << str << endl;
    return 0;
}

示例5: 变量的作用域

cpp 复制代码
#include <iostream>
using namespace std;

int x = 10;  // 全局变量

int main() {
    int x = 20;  // 局部变量
    cout << "局部变量x = " << x << endl;
    cout << "全局变量x = " << ::x << endl;  // 使用`::`访问全局变量
    return 0;
}

示例6: 变量的生命周期

cpp 复制代码
#include <iostream>
using namespace std;

void func() {
    int x = 10;  // 局部变量,只在func()函数内部有效
    cout << "在func()内部,x = " << x << endl;
}

int main() {
    func();
    // cout << "在main()内部,x = " << x << endl;  // 错误,x在此处不可访问
    return 0;
}

3. cout输出

3.1 输出整数、小数

示例1: 输出整数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x = 10;
    cout << "x = " << x << endl;
    return 0;
}

示例2: 输出小数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    double y = 3.14;
    cout << "y = " << y << endl;
    return 0;
}

示例3: 输出表达式的值

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int a = 5, b = 3;
    cout << "a + b = " << a + b << endl;
    cout << "a - b = " << a - b << endl;
    cout << "a * b = " << a * b << endl;
    cout << "a / b = " << a / b << endl;
    return0;
}

示例4: 输出不同进制的整数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int decimalNum = 10;
    int octalNum = 012;
    int hexNum = 0xA;
    cout << "十进制: " << decimalNum << endl;
    cout << "八进制: " << oct << octalNum << endl;
    cout << "十六进制: " << hex << hexNum << endl;
    return 0;
}

示例5: 输出布尔值

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    bool flag1 = true;
    bool flag2 = false;
    cout << "flag1 = " << flag1 << endl;
    cout << "flag2 = " << flag2 << endl;
    cout << "5 > 3 = " << (5 > 3) << endl;
    cout << "5 < 3 = " << (5 < 3) << endl;
    return 0;
}

示例6: 输出变量的地址

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x = 10;
    cout << "变量x的地址: " << &x << endl;
    double y = 3.14;
    cout << "变量y的地址: " << &y << endl;
    return 0;
}

3.2 输出字符、字符串

示例1: 输出字符

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    char ch = 'A';
    cout << "ch = " << ch << endl;
    return 0;
}

示例2: 输出字符串

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello, World!";
    cout << "str = " << str << endl;
    return 0;
}

示例3: 输出字符串常量

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    cout << "Hello, C++!" << endl;
    return 0;
}

示例4: 输出转义字符

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    cout << "Hello\tWorld!" << endl;
    cout << "Hello\nWorld!" << endl;
    cout << "Hello\\World!" << endl;
    cout << "Hello\"World!" << endl;
    return 0;
}

示例5: 输出字符串的一部分

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello, World!";
    cout << "str的前5个字符: " << str.substr(0, 5) << endl;
    cout << "str的最后6个字符: " << str.substr(str.length() - 6) << endl;
    return 0;
}

示例6: 输出字符的ASCII码值

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    char ch = 'A';
    cout << "字符 '" << ch << "' 的ASCII码值: " << (int)ch << endl;
    return 0;
}

3.3 格式化输出

示例1: 控制输出宽度

cpp 复制代码
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    int x = 10;
    cout << "x = " << setw(5) << x << endl;
    cout << "x = " << setw(5) << setfill('0') << x << endl;
    return 0;
}

示例2: 控制输出精度

cpp 复制代码
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    double x = 3.1415926;
    cout << "x = " << setprecision(4) << x << endl;
    cout << "x = " << fixed << setprecision(2) << x << endl;
    return 0;
}

示例3: 左对齐和右对齐

cpp 复制代码
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    cout << left << setw(10) << "Name" << setw(10) << "Age" << endl;
    cout << left << setw(10) << "Alice" << setw(10) << 25 << endl;
    cout << left << setw(10) << "Bob" << setw(10) << 30 << endl;
    return 0;
}

示例4: 输出布尔值为"true"或"false"

cpp 复制代码
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    bool flag1 = true;
    bool flag2 = false;
    cout << boolalpha;
    cout << "flag1 = " << flag1 << endl;
    cout << "flag2 = " << flag2 << endl;
    return 0;
}

示例5: 输出八进制和十六进制数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x = 100;
    cout << "十进制: " << dec << x << endl;
    cout << "八进制: " << oct << x << endl;
    cout << "十六进制: " << hex << x << endl;
    return 0;
}

示例6: 输出正负号

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x = 10;
    int y = -10;
    cout << showpos;
    cout << "x = " << x << endl;
    cout << "y = " << y << endl;
    return 0;
}

4. cin输入

4.1 输入整数、小数

示例1: 输入整数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x;
    cout << "请输入一个整数: ";
    cin >> x;
    cout << "你输入的整数是: " << x << endl;
    return 0;
}

示例2: 输入小数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    double x;
    cout << "请输入一个小数: ";
    cin >> x;
    cout << "你输入的小数是: " << x << endl;
    return 0;
}

示例3: 同时输入多个整数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int a, b, c;
    cout << "请输入三个整数,用空格分隔: ";
    cin >> a >> b >> c;
    cout << "你输入的三个整数是: " << a << " " << b << " " << c << endl;
    return 0;
}

示例4: 同时输入多个小数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    double x, y, z;
    cout << "请输入三个小数,用空格分隔: ";
    cin >> x >> y >> z;
    cout << "你输入的三个小数是: " << x << " " << y << " " << z << endl;
    return 0;
}

示例5: 输入整数和小数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int a;
    double x;
    cout << "请输入一个整数和一个小数,用空格分隔: ";
    cin >> a >> x;
    cout << "你输入的整数是: " << a << endl;
    cout << "你输入的小数是: " << x << endl;
    return 0;
}

示例6: 输入表达式的值

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int a, b;
    char op;
    cout << "请输入一个表达式(如: 1 + 2): ";
    cin >> a >> op >> b;
    if (op == '+') {
        cout << a << " + " << b << " = " << a + b << endl;
    } else if (op == '-') {
        cout << a << " - " << b << " = " << a - b << endl;
    } else if (op == '*') {
        cout << a << " * " << b << " = " << a * b << endl;
    } else if (op == '/') {
        cout << a << " / " << b << " = " << a / b << endl;
    } else {
        cout << "不支持的运算符: " << op << endl;
    }
    return 0;
}

4.2 输入字符、字符串

示例1: 输入字符

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    char ch;
    cout << "请输入一个字符: ";
    cin >> ch;
    cout << "你输入的字符是: " << ch << endl;
    return 0;
}

示例2: 输入字符串

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    cout << "请输入一个字符串: ";
    cin >> str;
    cout << "你输入的字符串是: " << str << endl;
    return 0;
}

示例3: 输入一行字符串

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string line;
    cout << "请输入一行字符串: ";
    getline(cin, line);
    cout << "你输入的字符串是: " << line << endl;
    return 0;
}

示例4: 同时输入多个字符串

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string str1, str2, str3;
    cout << "请输入三个字符串,用空格分隔: ";
    cin >> str1 >> str2 >> str3;
    cout << "你输入的三个字符串是: " << str1 << " " << str2 << " " << str3 << endl;
    return 0;
}

示例5: 输入字符和字符串

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    char ch;
    string str;
    cout << "请输入一个字符和一个字符串,用空格分隔: ";
    cin >> ch >> str;
    cout << "你输入的字符是: " << ch << endl;
    cout << "你输入的字符串是: " << str << endl;
    return 0;
}

示例6: 输入指定长度的字符串

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    char str[10];
    cout << "请输入一个最多9个字符的字符串: ";
    cin.getline(str, 10);
    cout << "你输入的字符串是: " << str << endl;
    return 0;
}

4.3 多组数据的输入

示例1: 输入多组整数,直到输入0为止

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x;
    cout << "请输入多个整数,以0结束: " << endl;
    while (cin >> x && x != 0) {
        cout << "你输入的整数是: " << x << endl;
    }
    return 0;
}

示例2: 输入多组整数,直到文件末尾

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x;
    cout << "请输入多个整数,以文件末尾结束: " << endl;
    while (cin >> x) {
        cout << "你输入的整数是: " << x << endl;
    }
    return 0;
}

示例3: 输入多组整数,每组占一行

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int x, y;
    cout << "请输入多组整数,每组占一行,以0 0结束: " << endl;
    while (cin >> x >> y && (x != 0 || y != 0)) {
        cout << "你输入的两个整数是: " << x << " " << y << endl;
    }
    return 0;
}

示例4: 输入多组字符串,直到输入"end"为止

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    cout << "请输入多个字符串,以"end"结束: " << endl;
    while (cin >> str && str != "end") {
        cout << "你输入的字符串是: " << str << endl;
    }
    return 0;
}

示例5: 输入多组字符串,每组占一行

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string line;
    cout << "请输入多组字符串,每组占一行,以空行结束: " << endl;
    while (getline(cin, line) && line != "") {
        cout << "你输入的字符串是: " << line << endl;
    }
    return 0;
}

示例6: 输入指定组数的整数

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int n;
    cout << "请输入要输入的整数的组数: ";
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int x;
        cout << "请输入第" << i << "组整数: ";
        cin >> x;
        cout << "你输入的第" << i << "组整数是: " << x << endl;
    }
    return 0;
}
相关推荐
小芒果_0114 天前
P11229 [CSP-J 2024] 小木棍
c++·算法·信息学奥赛
邓校长的编程课堂1 个月前
学习少儿编程能帮助英语数学学习吗?一门学科的多重力量
学习·少儿编程·英语学习·信息学奥赛·数学学习·跨学科学习·编程学习优势
邓校长的编程课堂1 个月前
如何让信息学奥赛学习“边玩边学”?——趣味编程让枯燥学习变得有趣
少儿编程·编程工具·信息学奥赛·趣味编程·游戏化学习·边玩边学·学习动力
zaiyang遇见1 个月前
【第2章 开始学习C++】C++语句
开发语言·算法·c++11·c/c++·信息学奥赛·c++primer+plus
邓校长的编程课堂2 个月前
在Visual Studio中使用CMakeLists.txt集成EasyX库的详细指南
visual studio·少儿编程·easyx·信息学奥赛·图形化编程·趣味编程
邓校长的编程课堂2 个月前
学Python再学C++是走弯路?
开发语言·c++·python·青少年编程·少儿编程·信息学奥赛·编程教育
zaiyang遇见2 个月前
【第2章 开始学习C++】进入C++
c++·算法·c/c++·信息学奥赛·程序设计竞赛·c+++primer+plus
邓校长的编程课堂2 个月前
信息学奥赛:青少年编程的高光舞台,通向未来科技的敲门砖
青少年编程·信息学奥赛·noi竞赛·奥赛保送·信息学竞赛培训·编程教育·编程竞赛刷题
ya888g6 个月前
信息学奥赛初赛天天练-20-完善程序-vector数组参数引用传递、二分中值与二分边界应用的深度解析
数据结构·c++·算法·csp-j·信息学奥赛·初赛
ya888g6 个月前
信息学奥赛初赛天天练-15-阅读程序-深入解析二进制原码、反码、补码,位运算技巧,以及lowbit的神奇应用
二进制·位运算·信息学奥赛·原码·反码·补码