I/O 模板

       有时候写代码,经常在学了很久之后,回头发现,对于某一具体程序语言居然会突然想不起来,输入该怎么写了,好尴尬,所以写这篇博文方便自己以后查找。也希望可以帮到其他人。

一、C语言

1、以EOF为结束标志

      scanf 返回值为变量的个数,如果没有返回 -1,

int a, b;
// EOF 是一个预定义的常量 -1
while (scanf("%d %d", &a, &b) != EOF) 
{
    // 需要的程序
}

2、有特殊结束条件的

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

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

3、多组输入

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

4、输入一行

const int MAXN = 1000;
char buff[MAXN];
gets(buff);
puts(buff); // 输出

5、从文件中读取

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

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

fclose(cfin);
fclose(cfout);

 

二、C++语言

1、以EOF为结束标志

      scanf 返回值为变量的个数,如果没有返回 -1,

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

2、有特殊结束条件的

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

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

3、多组输入

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

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

4、输入一行

#eg1
const int MAXN = 1000;
char buff[MAXN];
// C++
cin.getline(buff, MAXN); // 第三个参数默认是 '\n'
cin.getline(buff, MAXN, '\n');

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

5、读入多行

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

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

6、读入文件

ifstream fin("input.txt");
ofstream fout("output.txt");

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

fin.close();
fout.close();

 

三、Python语言

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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值