Fantasy-JXF
  • Introduction
  • 机器学习
    • 机器学习基础
    • 机器学习实践
    • 机器学习算法
    • 集成学习
  • 深度学习
    • 深度学习基础
    • 深度学习实践
    • CNN
    • RNN
    • 优化算法
    • 序列建模
    • 《深度学习》整理
    • 术语表
  • 自然语言处理
    • NLP发展趋势
    • 自然语言处理基础
    • 句嵌入
    • 词向量
    • 多模态
    • 视觉问答(VQA)综述
    • 深度查询理解
      • 综述
  • 计算机视觉
    • 基本模型
  • 数学
    • 概率论
    • 微积分的本质
    • 深度学习的核心
  • 算法
    • 字符串
    • 数据结构
    • 数据结构Advanced
    • 双指针
    • 动态规划
    • 区间问题
    • 排列组合
    • 数学问题
    • 洗牌/采样/随机数
    • 大数运算
    • 海量数据处理
    • IO模板
    • 必备算法
    • LeetCode
    • 剑指Offer
    • 面试真题
  • 编程
    • C++基础
    • C++面向对象
    • C++左值与右值
    • Python基础
  • 笔试面经
    • 360
    • iHandy
    • 作业帮
    • 字节跳动
    • 小米
    • 度小满
    • 快手
    • 招行
    • 搜狐畅游
    • 滴滴
    • 爱奇艺
    • 百度
    • 百度2
    • 百度3
    • 百词斩
    • 腾讯
    • 迅雷
    • 顺丰
    • 旷视
    • 爱笔
    • 魔门塔
    • 搜狐
由 GitBook 提供支持
在本页
  • Index
  • 输入不说明有多少个 Input,以 EOF 为结束标志
  • C
  • C++
  • 输入不说明有多少个 Input,以某个特殊输入为结束标志
  • C
  • C++
  • 指示有 N 个 Input
  • C
  • C++
  • Python3
  • 指示有 N 组输入,并以某个特殊输入退出
  • C/C++
  • 输入是一整行(包括空格)
  • 用 char[] 接收(C/C++)
  • 用 string 接收(C++)
  • 输入是多行(包括空格)
  • C++
  • 从文件读取
  • C
  • C++

这有帮助吗?

  1. 算法

IO模板

上一页海量数据处理下一页必备算法

最后更新于6年前

这有帮助吗?

  • 不少网络笔试不像 LeetCode 帮你完成 I/O,需要手动完成

  • 如果没有 ACM 经验,很可能会在这上面浪费不少时间

  • 这里总结了几种常见的 IO 模板,分别提供了 C/C++ 和 Python(TODO) 代码

Index

输入不说明有多少个 Input,以 EOF 为结束标志

C

int a, b;
// scanf 返回值为变量的个数,如果没有返回 -1,EOF 是一个预定义的常量 -1
while (scanf("%d %d", &a, &b) != EOF) {  
    // ...
}

C++

int a, b;
while (cin >> a >> b) {
    // ...
}

输入不说明有多少个 Input,以某个特殊输入为结束标志

C

// 示例 1
int a, b;
while (scanf("%d %d", &a, &b) != EOF && (a != 0 && b != 0)) {
    // ...
}

// 或者
while (scanf("%d %d", &a, &b) != EOF && (a || b)) {
    // ...
}

// 示例 2
int n;
while (scanf("%d", &n) != EOF && n != 0) {
    // ...
}

C++

// 示例 1
int a, b;
while (cin >> a >> b) {
    if (a == 0 && b == 0)
        break;
    // ...
}

// 示例 2
int n;
while (cin >> n && n != 0) {
    // ...
}

指示有 N 个 Input

C

int n;
scanf("%d", &n);

int a, b;
for (int i = 0; i < n; i++) {
    scanf("%d %d", &a, &b);
    // ...
}

C++

int n;
cin >> n;

int a, b;
while(n--) {
    cin >> a >> b;
}

Python3

n = int(input())
for _ in range(n):
    # ...

指示有 N 组输入,并以某个特殊输入退出

C/C++

int n;
while (cin >> n && n != 0) {
    int a, b;
    for (int i = 0; i < n; i++) {
        cin >> a >> b;
        // ...
    }
}

输入是一整行(包括空格)

用 char[] 接收(C/C++)

const int MAXN = 1000;
char buff[MAXN];

// C
gets(buff);
puts(buff); // 输出

// C++
cin.getline(buff, MAXN);  // 第三个参数默认是 '\n'
cin.getline(buff, MAXN, '\n');

用 string 接收(C++)

string s;
getline(cin, s);          // 第三个参数默认是 '\n'
getline(cin, s, '\n');

输入是多行(包括空格)

C++

int n;
cin >> n;
cin.get();  // 否则,n 也会计入下面的 getline(),导致少一组数据

while (n--) {
    string s;
    getline(cin, s);
}

从文件读取

C

FILE *cfin = fopen("in.txt", "r");
FILE *cfout = fopen("out.txt", "w");

int a, b;
// 注意要传入文件指针
while (fscanf(cfin, "%d %d", &a, &b) != EOF) { // 类似的,把 scanf 替换成 fscanf
    fprintf(cfout, "%d\n", a + b);             // 把 printf 替换为 fprintf
}

fclose(cfin);
fclose(cfout);

C++

ifstream fin("in.txt");
ofstream fout("out.txt");

int a, b;
while (fin >> a >> b) {
    fout << a + b << endl;
}

fin.close();
fout.close();
输入不说明有多少个 Input,以 EOF 为结束标志
C
C++
输入不说明有多少个 Input,以某个特殊输入为结束标志
C
C++
指示有 N 个 Input
C
C++
Python3
指示有 N 组输入,并以某个特殊输入退出
C/C++
输入是一整行(包括空格)
用 char[] 接收(C/C++)
用 string 接收(C++)
输入是多行(包括空格)
C++
从文件读取
C
C++