OJ为OnlineJudge的缩写,是很多大学都有的自动评测程序的网站。一般根据题目要求,待测程序需要读入一些数据,如果程序的输出数据和标准答案的输出数据相同,就算通过。由于自动输入数据和用户键盘输入数据有着很大区别,所以做OJ题首先要学会的就是OJ输入数据的处理。

EOF

EOF (end of file) 是C语言标准函数库中表示文件结束符。

在这之前,首先得介绍一下EOF这个字符常量。EOF的值一般也可以表示为-1,表示将文本文件读完了。

scanf()函数的返回值

scanf()函数是有返回值的,其返回值是int类型,表示成功读入变量的数量。 而且scanf()函数读入时如果某个变量读入错误,比如数据类型不对,那么scanf()就会停止读入,我们来看一个小例子:

#include

int main()

{

int x, y, z;

printf("%d", scanf("%d,%d,%d", &x, &y, &z));

return 0;

}

而此时,如果用户输入5,a,8,那么程序会输出1,因为第一个数字5成功赋值给了变量x,但是a不是整型,读入失败,所以scanf()函数读入停止,返回值为1。

介绍了这些基础知识,于是我们就可以写出OJ的输入语句了:

#include

int main()

{

int n;

while(scanf("%d", &n) != EOF)

{

.....

}

return 0;

}

通过这个循环,我们的程序会一直读入数据,直到将文本全部读完。省略号内就可以放置我们写好的算法程序。在这里,scanf()内输入的变量不是只能有一个,根据题目要求,可以输入多个。

cin 指令的返回值

cin指令是有返回值的,其返回值为是否成功读入所有数据。

一样的,我们也可写出OJ的输入方式了。

#include

using namespace std;

int main()

{

int n;

while( cin >> n )

{

......

}

return 0;

}

同理,通过循环,会不断读入数据,直到读完。

关于测试程序时的输入方式

输入方式和一般程序差不多,运行了之后就可以输入,输入完毕按一下回车。不同的是,需要停止时可以按下Ctrl+Z,系统就会向程序发送EOF,循环就会停止,就可以让程序停下来了。

一个便捷的方式:freopen()重定向输入

很多时候,输入的数据有很多,而我们又难以一次性让程序完美运行,更多时候需要做很多次修改,这时候我们自然不希望一遍又一遍输入测试数据。于是我们就可以使用freopen()函数进行重定向输入。

在一般的OJ题目中就包含了Sample Input,我们可以直接复制过来,放在一个指定的文本文件中储存。保存为txt文件。然后复制下这个txt文件的路径(假设我们把这个文件放在桌面上,命名为test.txt),于是在程序中,我们就可以在主函数下加上这么一行:

freopen("C:\\Users\\Administrator\\Desktop\\test.txt", "r", stdin);

这个函数里的第一个参数就是我们文件的路径和名称,后面的不用改动,直接抄下来就成。之所以用双斜杠,是因为单斜杠容易变成转义字符,双斜杠也的确是转义字符里的反斜杠的表示方式。

这样,程序的输入就由用户键盘输入重定向为从指定文本内读入,运行之后我们就直接能看到结果,不需要再输入了。

好了,这样就可以愉(艰)快(苦)地写OJ题了,祝各位武运昌隆。。。

2017/03/08 Sunny

c语言oj数据通过,OJ输入数据的处理相关推荐

  1. C语言程序入门设计OJ练习题11 浙江大学——程序入门设计

    C语言程序入门设计 OJ GPS数据处理 题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NME ...

  2. C语言程序入门设计OJ练习题7 浙江大学——程序入门设计-翁恺

    C语言程序入门设计 OJ #浙江大学--程序入门设计-翁恺 7.高精度小数 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1 ...

  3. 杭电oj1620题c语言答案,杭电oj部分水题 c语言源代码.doc

    杭电oj部分水题 c语言源代码 殿剐忱酪短祭幂曝沈脸蛀蓑挞姻扶宠秤蓄幌榆矾巨旷于渍弯史影得熄孟椒菊葫彦籍蛛绊趣庙捣载睹答赊索添垛蝎伙生瞎回悟辅篇狱辗歧病氯急迸怜煽跋屋凡逻甲确烧迟卞姻郸被康少辊蒂刽厂礁 ...

  4. c语言程序设计数据输入的,1.2 C语言的发展与特点免费阅读_C语言程序设计教程免费全文_百度阅读...

    3.2 数据的输入/输出 结构化程序设计过程中,确定输入数据是重要的步骤之一,在程序中如何实现数据的输入呢?C语言中数据及字符的输入.输出是由函数语句完成的,下面将介绍从标准输入设备--键盘上输入数据 ...

  5. C语言以数据块的形式读写文件

    C语言以数据块的形式读写文件 fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread 函数:相应地写入函数为 f ...

  6. c语言数据输入方式scanf,【C语言】-数据输入-scanf( )和getchar( )

    格式化输入函数scanf( ) scanf( )功能: 按照指定的格式读入键盘上输入的若干个任意类型的数据,存入到argument参数所指向的内存单元,函数返回值为读入并赋给argument的数据个数 ...

  7. C语言运行时实现换行输入数据

    c语言 实现在运行程序输入数据时候换行输入 scanf("%d,%d\n",&a,&b); scanf("%d",&d); 只需要两个s ...

  8. Go语言的数据科学和机器学习:实现高效、准确和可靠的数据处理和预测

    作者:禅与计算机程序设计艺术 1.简介 数据科学和机器学习简介 数据科学(Data Science)是指利用数据提升业务决策能力的一门学科.它涵盖三个重要领域:数据获取.数据预处理.数据分析及数据挖掘 ...

  9. R语言进行数据聚合统计(Aggregating transforms)计算滑动窗口统计值(Window Statistics):使用R原生方法、data.table、dplyr等方案、计算滑动分组统计

    R语言进行数据聚合统计(Aggregating transforms)计算滑动窗口统计值(Window Statistics):使用R原生方法.data.table.dplyr等方案.计算滑动分组统计 ...

最新文章

  1. 高性能计时器Timer的设计(时间轮和时间堆两种方式)
  2. python将图片转换为灰度图
  3. 剑指offer之题解目录(全)
  4. 最小二乘法以及RANSAC(随机采样一致性)思想及实现
  5. LeetCode 1178. 猜字谜(状态压缩+枚举二进制子集+哈希)
  6. CSS中加号、星号及其他符号的作用
  7. 安装Ubuntu时的硬盘分区方案
  8. 学生每日计划表_学霸宅家都干什么?浙大学生近700份居家作息计划表泄露秘密...
  9. 第二十八篇 闭包函数
  10. nuxt项目dist上传服务器,nuxt.js构建的项目,打包后如何部署到服务器?
  11. 瞎聊深度学习——词性标注(jieba词性标注实战:jieba.posseg)
  12. Therefore, hence, so, then, thus
  13. win10多任务处理快捷键
  14. 电信客户流失数据分析(一)
  15. app混合开发之微信分享设置
  16. 【宅男福利】百度云下载不限速软件,电脑和看视频无广告软件
  17. 杰理之VM 概述【篇】
  18. Xmanager5 Passive 图形界面安装oracle,无法使用鼠标
  19. 【SqlServer系列】表连接
  20. 看不懂matlab工具箱,matlab /simulink 各个工具箱的简单介绍 入门请看

热门文章

  1. ae运动模糊怎么调整_ae运动模糊怎么用?为什么我打开开关后没什么效果,看不出来。有没有什么视屏可以看看?...
  2. Asterisk AGI 详解
  3. 基于python实现的聊天室(客户端:一)窗口设置
  4. css自适应单位布局vm,vh
  5. Linux-操作系统
  6. 在SQL中删除重复记录(多种方法) [转]
  7. android弹出对话框
  8. 哔哩大学计算机学院:初识常量变量学习笔记
  9. 【Nessus安装、使用】
  10. 我们真的需要一部《数据安全法》