文件IO介绍

信奥赛(信息学奥林匹克大赛)要来啦,这里强调一些重点:

在信息学竞赛的机试中(如CSP-J/S复赛),通常都要求通过文件进行输入输出数据的读写(如下图所示),很多同学平时未进行相关的练习,不熟悉复赛的竞赛规则,导致很多同学在复赛的时候得0分。

通过文件读写时,我们代码的基础结构如下:

#include<bits/stdc++.h> // 这是万能头文件,在信息学竞赛中很有用,也可以单独使用cstdio头文件以使用freopen方法
using namespace std;
int main() {
    // 接下来这两行代码的作用是将输入输出重定向到文件输入输出
    // 在竞赛中,in文件一般对应输入文件,对应stdin,注意是"r"(读)
    freopen("sum.in", "r", stdin);
    // 在竞赛中,out文件一般对应输出文件,对应stdout,注意是"w"(写)
    freopen("sum.out", "w", stdout);
    // 接下来使用cin, cout、scanf、printf等进行读写即可


    // 这两行fclose可以不写,但是一般建议写上。
    fclose(stdin);
    fclose(stdout);

    return 0;  // 这个必须是return 0; 否则可能会得0分。
}

注意freopen的第一个参数需要修改成题目要求的输入输出文件名称。

以CSP-J2022复赛第一题乘方为例,你的代码应该写成:

#include<bits/stdc++.h> // 这是万能头文件,在信息学竞赛中很有用
using namespace std;
int main() {
    // 注意这两行代码
    freopen("pow.in", "r", stdin);
    freopen("pow.out", "w", stdout);
    int a, b;
    long long s = 1;
    cin >> a >> b;
    // 特判
    if (a == 1) {
        cout << "1";
        return 0;
    }
    // 循环模拟乘方运算
    for (int i = 1; i <= b; i++) {
        s *= a;
        // 如果s超过10^9输出-1,否则输出结果
        if (s > 1000000000) {
            cout << "-1";
            return 0;
        }
    }
    cout << s;
    // 这两行fclose可以不写,但是一般建议写上。
    fclose(stdin);
    fclose(stdout);
    return 0;
}

在信息学竞赛中,输入输出的文件名请看考试时的题目说明里面的信息。

希望大家在信奥赛中能拿到好成绩!

 PS:别看标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值