请先看下面一段程序:

 #include"stdio.h"

 int main()
{
char a[],t;
int i,j;
while(scanf("%s",a)!=EOF)
{
for(i=;i<;i++)
for(j=;j<;j++)
if(a[j]<a[i])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
printf("%c %c %c\n",a[],a[],a[]);
}
return ;
}

1:对于以上的程序或许你没有疑问,只是实现对输入的数组进行ASCII排序,但是while(scanf("%s",a)!=EOF)在ACM比赛系统中的输入是个文件,文件就有EOF,EOF在读文件时就是结束,如果在本地(自己计算机上)测试,因为没有文件,所以没有结束,只能是关闭测试窗口才能结束。在自己的机器(称为本地机器)上做测试的话,写不写都是一样的,在ACM评测系统中必须得写。EOF是个常量,没有错啊,它指的就是输入结束,如果有文件输入的话,到结束的时候就是EOF,而ACM评测系统中的输入用例就是文件,所以要用EOF,它能自动停止,否则不能停止,会造成死循环。

C++中的cin>>m可以直接等同于在C中加上!=eof。它就自动就是结束了,从这个写法来看C++要比C写法简单。

2:能不能省略#incllude?

在C/GCC文件里应该可以省略头文件#include.但这次省略的时候却出现了编译错误,原因是在stdio.h中定义的“EOF”宏。“EOF”这个宏在编译的时候会转换成10-255以外的数字,包含poj在内的大多数运行环境都会把它转变成-1.如果省略了#include命令,就不能使用宏。因此把“EOF”转换成-1后,再删除#include命令试一试。

 float a,b=;
main()
{
for(;scanf("%f",&a)!=-;)
b+=a;
printf("$%.2f",b/);
}

3:重点不同处:

关于EOF:的更多相关文章

  1. linux下EOF写法梳理

    在平时的运维工作中,我们经常会碰到这样一个场景:执行脚本的时候,需要往一个文件里自动输入N行内容.如果是少数的几行内容,还可以用echo追加方式,但如果是很多行,那么单纯用echo追加的方式就显得愚蠢 ...

  2. php定界符<<<EOF讲解(转)

    Heredoc技术.可用来输出大段的html和javascript脚本 1.PHP定界符的作用就是按照原样,包括换行格式什么的,输出在其内部的东西: 2.在PHP定界符中的任何特殊字符都不需要转义:  ...

  3. while(cin.eof)出错 poj

    zoj遇到c++如何判定输入流结尾的问题,一不小心就超时了 楼下的代码可以通过zoj #include<iostream> using namespace std; int main(){ ...

  4. c++ eof()函数

    C++ eof()函数可以帮助我们用来判断文件是否为空,抑或是判断其是否读到文件结尾.在这里我们将会对其进行详细的介绍. C++编程语言中的很多功能在我们的实际应用中起着非常大的作用.比如在对文件文本 ...

  5. 【转】 解读EOF

    解读EOF 标签: fplinuxc语言filestream 2012-01-31 22:05 439人阅读 评论(0) 收藏 举报  分类: C.C++_程序设计(20)  我学习C语言的时候,遇到 ...

  6. Linux C 字符函数 getchar()、putchar() 与 EOF 详解

    首先给出<The_C_Programming_Language>这本书中的例子: #include <stdio.h> int main() { int c; c = getc ...

  7. Ext3文件系统mount选项和文件属性介绍

    mount选项 设置方式 ext3 mount选项可以通过多个方式进行设置:1)内核编译时: 内核menuconfig通过CONFIG_EXT3_DEFAULTS_TO_ORDERED编译控制选项,来 ...

  8. .NET 串口通信中断接收,包含0X1A(作为EOF)

    .NET串口通信中将`0X1A`当做EOF处理,.NET接收到EOF会触发一次接收中断,此时事件形参`SerialDataReceivedEventArgs`值为枚举 `Eof`,其他为`Chars` ...

  9. 常见的getchar 与EOF的问题

    代码中常有类似的如下的输入循环 char  c; while((c=getchar())!=EOF).... 如果输入 字符+换行时,循环的代码会执行两次,主要是换行键作为字符存到了缓存队列中,第一次 ...

  10. PHP eof的使用

    PHP eof的使用 也就是heredoc技术,来部分实现界面与代码的分离 <?php $name = '张三'; print <<<EOT <html> < ...

随机推荐

  1. centos7启动iptables时报Job for iptables.service failed because the control process exited with error cod

    centos7启动iptables时报Job for iptables.service failed because the control process exited with error cod ...

  2. LeetCode OJ 15. 3Sum

    题目 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...

  3. 如何使用JDBC删除一条记录

    //根据学生id删除操作    public void deleteOne(int id) {        Statement stmt=null;     //  发送SQL语句,返回执行结果   ...

  4. oracle理解和导入导出

    搞过sql server的程序员很难理解oracle的表空间.我在这里简单说一下吧, oracle中的表空间就相当于sql server中的实例,用户就相当于sql server中的库. 所以在ora ...

  5. 吴裕雄 oracle 管理数据表对象

  6. BN和滑动平均

    BN目的是使得每层训练的输出结果在同一分布下,实验证明不仅可以加速收敛速度,还可以提高准确度 因为如果想要计算所有图像的均值与方差,显然不太现实,所以每次计算每个batch的方差与均值,为了使得每个b ...

  7. 3G开发遇到的问题

    1.使用线程时,编译时要加上gcc xxx.c -o xxx -lpthread 2.分离字符串"abc,de,fgh" printf("%s",strtok ...

  8. prompt

    [prompt] prompt() 方法用于显示可提示用户进行输入的对话框. prompt(text,defaultText) 参数 描述 text 可选.要在对话框中显示的纯文本(而不是 HTML ...

  9. 【C++】Mandelbrot集绘制(生成ppm文件)

    曼德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形.曾被称为"上帝的指纹". 这个点集均出自公式:Zn+1=(Zn)^2+C.(此处Z.C均为复数)所有使得该公式无限迭代后的 ...

  10. java swing示例

    该范例主要是JFrame(框架)和Jpanel(画板),在Jpanel容器上添加控件,然后再把Jpanel放进JFrame的容器里面. FrameDemo.java import java.awt.D ...