C语言一次生成多组OJ数据 freopen

首先需要生成数据的函数,生成输入文件,一次生成50个 (可修改)

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int st[1005];
int main()
{
    int a,b;
    for(int i=1;i<=50;i++){
        char str[120]={"D:\\工作\\数据创建\\2019.11.6数据及标程\\题目1\\"};
        int len=strlen(str);
        int temp=i,cot=0;
        while(temp){
            st[++cot]=temp%10;
            temp/=10;
        }
        str[len++]='i';
        for(int k=cot;k>=1;k--)
            str[len++]=st[k]+'0';
        str[len++]='.';
        str[len++]='i';
        str[len++]='n';
        str[len]='\0';
        a=rand()%1000;
        b=rand()%1002;
        freopen(str,"w",stdout); //输出重定向,输出数据将保存在out.txt文件中
        cout<<a<<" "<<b<<endl;
        fclose(stdin);//关闭文件
        fclose(stdout);//关闭文件
    }
    return 0;
}

路径可以换

随后使用标程程序,读入数据后并将答案数据写入out文件

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
char in[1005],out[1005];
int st[1005];
int main()
{
    int a,b;
    for(int i=1;i<=50;i++)
    {
        char in[120];
        char out[120];
        int len1=0;
        int len2=0;
        int temp=i,cot=0;
        while(temp){
            st[++cot]=temp%10;
            temp/=10;
        }
        in[len1++]='i';out[len2++]='o';
        for(int k=cot;k>=1;k--){
            in[len1++]=st[k]+'0';
            out[len2++]=st[k]+'0';
        }
        in[len1++]='.';out[len2++]='.';
        in[len1++]='i';out[len2++]='o';
        in[len1++]='n';out[len2++]='u';
                        out[len2++]='t';
        in[len1++]='\0';out[len2++]='\0';
        freopen(in,"r",stdin); //输入重定向,输入数据将从in.txt文件中读取
        freopen(out,"w",stdout); //输出重定向,输出数据将保存在out.txt文件中
        while(~scanf("%d%d",&a,&b))
        {
            cout<<a+b<<endl;
        }
        fclose(stdin);//关闭文件
        fclose(stdout);//关闭文件
    }
    return 0;
}

生成图:

作为模板 ,方便以后使用

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务