备忘-IO 模板
- 不少网络笔试不像 LeetCode 帮你完成 I/O,需要手动完成
- 如果没有 ACM 经验,很可能会在这上面浪费不少时间
- 这里总结了几种常见的 IO 模板,分别提供了 C/C++ 和 Python(TODO) 代码
Index
C
int a, b;
while (scanf("%d %d", &a, &b) != EOF) {
}
copy
C++
int a, b;
while (cin >> a >> b) {
}
copy
C
int a, b;
while (scanf("%d %d", &a, &b) != EOF && (a != 0 && b != 0)) {
}
while (scanf("%d %d", &a, &b) != EOF && (a || b)) {
}
int n;
while (scanf("%d", &n) != EOF && n != 0) {
}
copy
C++
int a, b;
while (cin >> a >> b) {
if (a == 0 && b == 0)
break;
}
int n;
while (cin >> n && n != 0) {
}
copy
C
int n;
scanf("%d", &n);
int a, b;
for (int i = 0; i < n; i++) {
scanf("%d %d", &a, &b);
}
copy
C++
int n;
cin >> n;
int a, b;
while(n--) {
cin >> a >> b;
}
copy
Python3
n = int(input())
for _ in range(n):
copy
指示有 N 组输入,并以某个特殊输入退出
C/C++
int n;
while (cin >> n && n != 0) {
int a, b;
for (int i = 0; i < n; i++) {
cin >> a >> b;
}
}
copy
输入是一整行(包括空格)
用 char[] 接收(C/C++)
const int MAXN = 1000;
char buff[MAXN];
gets(buff);
puts(buff);
cin.getline(buff, MAXN);
cin.getline(buff, MAXN, '\n');
copy
用 string 接收(C++)
string s;
getline(cin, s);
getline(cin, s, '\n');
copy
输入是多行(包括空格)
C++
int n;
cin >> n;
cin.get();
while (n--) {
string s;
getline(cin, s);
}
copy
从文件读取
C
FILE *cfin = fopen("in.txt", "r");
FILE *cfout = fopen("out.txt", "w");
int a, b;
while (fscanf(cfin, "%d %d", &a, &b) != EOF) {
fprintf(cfout, "%d\n", a + b);
}
fclose(cfin);
fclose(cfout);
copy
C++
ifstream fin("in.txt");
ofstream fout("out.txt");
int a, b;
while (fin >> a >> b) {
fout << a + b << endl;
}
fin.close();
fout.close();
copy