【C语言】Oj题目常见问题-如何处理文件尾

C语言Oj题目常见问题-处理文件尾

样例

刷oj的时候有时候会碰到如下的题目,明明写对了,但仍然过不了

1003 - A + B Problem

时间限制:1秒 内存限制:128兆

  • 题目描述

    计算 A + B.

  • 输入

    每行将包含两个整数AB。直到文件结尾。

  • 输出

    每一行输出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即可。

posted @ 2020-09-29 11:22  404name  阅读(33)  评论(0编辑  收藏  举报