关于OJ中的OI文件

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

为了让同学们更加从容地应对CSP-J/S的复赛,土豆编程OJ特更新了文件IO功能。

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

#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;
}

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

在土豆编程OJ中,输入输出的文件名请通过鼠标点击左上角的文件IO字样进行查看,如下图所示。

 

样题

还没找到样题哦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值