【C语言】Oj题目常见问题-如何处理文件尾
C语言Oj题目常见问题-处理文件尾
样例
刷oj的时候有时候会碰到如下的题目,明明写对了,但仍然过不了
1003 - A + B Problem
时间限制:1秒 内存限制:128兆
题目描述
计算 A + B.
输入
每行将包含两个整数A和B。直到文件结尾。
输出
每一行输出A+B的值。
样例输入
1 1
样例输出
2
提示
简单加法,注意处理文件尾。
关于处理文件尾
该题过不了的原因可能就在于提示的文字:“注意处理文件尾”
文件尾是什么可以简单的用字符串的末尾的'\0'来类比。
字符串在例遍的过程中需要标志来提示结束。
文件在例遍的过程也要标志(文件尾)来提示结束。
到oj里面意思其实是输入的样例不止一行,而有无数行,直到遇到文件尾就结束程序。
解决方法
就用while把主程序包围起来,一直输入一直运行
直到遇到文件尾输入EOF就退出while循环结束程序。而普通程序运行一次a+b就退出。
这个就能一直计算a+b。
#include<stdio.h>
int main(){
int a,b;
while(scanf("%d %d",&a,&b)!=EOF){ //输入循环
printf("%d + %d = %d\n",a,b,a+b);//主程序
}
//while(~scanf("%d %d",&a,&b))也可以
return 0;
}
至于如何输入文件尾手动结束
一般这是oj后台处理了,后台判断文件它本身就是文件格式,就和字符串不需要你说明它在哪停下一样
类比while(str[i]!='\0')例遍如此。
而手动停止呢则输入^Z即可。