[置顶] 关于EOF的探索

标签: EOF
7人阅读 评论(0) 收藏 举报
分类:

.EOF介绍

例子

 

HDU2010水仙花数

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 227624    Accepted Submission(s): 64523

Problem Description

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
水仙花数是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3
现在要求输出所有在mn范围内的水仙花数。

 

 

Input

输入数据有多组,每组占一行,包括两个整数mn100<=m<=n<=999)。

 

 

Output

对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。

 

 

Sample Input

100 120

300 380

 

 

Sample Output

no

370 371

 

代码:

 

#include<stdio.h>
void print(int array[],int k);
int main(){
    int m,n;
    while(scanf("%d %d",&m,&n)!=EOF){                          //错误的!=0
    	int array[1000];
		int k=0;
		for(int i=m;i<=n;i++){
    		if((i/100)*(i/100)*(i/100)+(i/10%10)*(i/10%10)*(i/10%10)+(i%10)*(i%10)*(i%10)==i) {
				array[k]=i;
				k++;
			}
		}
		print(array,k);	
    }
    return 0;
}

void print(int array[],int k){
	if(k==0){
	printf("no\n");
	return;
    }
	for(int i=0;i<k;i++){
		printf("%d",array[i]);
		if(i<k-1)printf(" ");
		else printf("\n");
	}
}

 

 

 

当我使用!=0时提示超出输出限制,而使用标准的!=EOF就对了。

 

EOF

1.EOF结束的意思

EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。通常在文本的最后存在此字符表示资料结束。(百度百科

 

解析这句话的意思,这个“无更多资料可读取”是指像是scanf()之类的输入,并不是指程序结束。

 

代码:

 

#include<stdio.h>
int main(){
	int n;
	int k=scanf("%d");
	printf("%d",k);
	for(int i=0;i<10;i++)printf("%d\n",i); 
	return 0;
	
}

 

 

 

键入Ctrl+Z后,输出scanf的值和0到9。

这里我们看出,程序并没有结束。

 

2.EOF如何打出来

Windows下为组合键Ctrl+ZUnix/Linux下为组合键Ctrl+D如上图效果

 

3.EOF的值:-1

所以,hdu2010中使用 !=0就不对了,而使用 !=EOF(可以打! = - 1)正确ac

 

 

 

.EOF详解

为什么我们要使用EOF

 

就拿HDU2010那道题来说,我们输入要计算的范围mn,输了几组后,我们不想输了要怎么办?

输入数字或是字符都不行,因为这样scanf()的值都大于等于0,没什么用。scanf()解读见关于scanf的探索

 

那么我们就规定EOF这个负值,使它结束while循环。当你在编译器软件上键入Ctrl+Z后,scanf()读取后等于-1EOF,循环条件不成立跳出来ok

 

这里,引申一下,见HDU2008

代码:

 

#include<stdio.h>  
int main(){  
    int n;  
    while(scanf("%d",&n)!=EOF){  
        if(n==0)break;  
        int f=0,l=0,z=0;  
        while(n--){  
            float x;  
            scanf("%f",&x);  
            if(x<0)f++;  
            else if(x>0)z++;  
            else l++;  
        }  
        printf("%d %d %d\n",f,l,z);  
    }  
    return 0;  
}

我们输入EOF不是一个定式,为的只是结束while()循环,只要你能跳出来不输也行。

 

 

代码:

 

#include<stdio.h> int main(){ int n; while(1){     scanf("%d",&n);
        if(n==0)break; int f=0,l=0,z=0; while(n--){ float x; scanf("%f",&x); if(x<0)f++; else if(x>0)z++; else l++; } printf("%d %d %d\n",f,l,z); } return 0; }


这里用if(n==0) break; 跳出循环ok


转载请注明出处:https://mp.csdn.net/postedit/79979121
查看评论

*关于EOF--用户自定义的终止符*

想必大家都可能见过EOF这个用法,但是不知道你是否注意过细节呢? 下面我们通过一个脚本menu来测试一下吧~ #!/bin/bash printf "Do you want to see th...
  • zhuying_linux
  • zhuying_linux
  • 2012-02-06 17:22:37
  • 3100

[读书笔记] 深入探索C++对象模型-第一章《关于对象》

最新在看深入探索C++对象模型(Inside C++ object model),看的同时针对一些之前没有留意或者理解不深的内容整理一下读书笔记,方便之后复习,也希望可以帮助到有同样疑惑的人。 下面是...
  • beyongwang
  • beyongwang
  • 2016-08-21 21:14:18
  • 877

数据库探索之旅——数据库管理系统

该文章简要介绍了数据库管理系统(DBMS)的一些主要功能,以及 SQL Server、MySQL、Oracle 这三个主流的数据库管理系统的部分特点...
  • qq_34966814
  • qq_34966814
  • 2017-10-04 20:33:13
  • 576

关于BOF和 EOF

浏览RecordSet中的记录需要两步:1.定位当前的记录,RecordSet打开的第一个记录为当前记录;2.用Field对象获得当前记录的各个数据列。     RecordSet对象可用下列5种方法...
  • CYL_happygirl
  • CYL_happygirl
  • 2013-08-13 10:45:22
  • 1317

关于TabLayout的indicator宽度的一次探索

本文的微信公众号链接:关于TabLayout的indicator宽度的一次探索 关于TabLayout,做过android开发的都知道,在android开发中应用特别广泛。这里来简单记录一下前...
  • H_Gao
  • H_Gao
  • 2018-04-02 09:06:27
  • 178

关于c语言中EOF用法的理解

作者:zhangxinlin 转载请注明,原文链接:http://blog.csdn.net/zhang429350061/article/details/8760636 首先看一下EOF...
  • zhang429350061
  • zhang429350061
  • 2013-04-05 12:46:47
  • 3292

《惊人的假说-灵魂的科学探索》读书笔记(1)

本书作者克里克独辟躁径,坚持一个数理科学家朴素的唯物主义思想,大胆地提出了一个基于“还原论”的“惊人的假说”。他认为“人的精神活动完全由神经细胞、胶质细胞的行为和构成及影响它们的原子、离子和分子的性质...
  • lijiuyangzilsc
  • lijiuyangzilsc
  • 2015-10-16 16:42:05
  • 1575

C++对象模型(3)

 多态是一种威力强大的设计机制,允许你继承一个抽象的public接口之后,封装相关的类型,需要付出的代价就是额外的间接性--不论是在内存的获得,或是在类的决断上,C++通过class的pointer和...
  • cyp0207
  • cyp0207
  • 2007-11-15 10:27:00
  • 289

python数据探索

第三章 数据探索3.1 数据质量分析 脏数据包括:缺失值;异常值;不一致的值;重复数据及含有特殊符号的数据; 1.缺失值处理 统计缺失率,缺失数 2.异常值处理 (1)简单统计量分析 (2...
  • Anne999
  • Anne999
  • 2017-04-05 15:22:47
  • 1079

Python起步之用Python结合统计学知识进行数据探索分析

本文用Python统计模拟的方法,介绍四种常用的统计分布,包括离散分布:二项分布和泊松分布,以及连续分布:指数分布和正态分布,最后查看人群的身高和体重数据所符合的分布# 导入相关模块import pa...
  • m0_37338590
  • m0_37338590
  • 2017-09-17 16:39:39
  • 209
    个人资料
    等级:
    访问量: 99
    积分: 36
    排名: 192万+
    文章分类
    文章存档