zoukankan      html  css  js  c++  java
  • 关于EOF:

     请先看下面一段程序:

     1 #include"stdio.h"
     2 
     3 int main()
     4 {
     5     char a[3],t;
     6     int i,j;
     7     while(scanf("%s",a)!=EOF)
     8     {
     9       for(i=0;i<3;i++)
    10         for(j=1;j<3;j++)
    11         if(a[j]<a[i])
    12         {
    13           t=a[i];
    14           a[i]=a[j];
    15           a[j]=t;
    16         }
    17         printf("%c %c %c
    ",a[0],a[1],a[2]);
    18     }
    19     return 0;
    20 }

    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命令试一试。

    1 float a,b=02 main()
    3 {
    4   for(;scanf("%f",&a)!=-1;)
    5  b+=a;
    6 printf("$%.2f",b/12);
    7 }

    3:重点不同处:

    这世界上有一种鸟是没有脚的,它只能够一直的飞呀飞呀,飞累了就在风里面睡觉,这种鸟一辈子只能下地一次,那一次就是它死亡的时候。
  • 相关阅读:
    Linux内核RPC请求过程
    二分图
    Java实现 蓝桥杯 算法提高 合并石子
    Java实现 蓝桥杯 算法提高 合并石子
    Java实现 蓝桥杯 算法提高 摩尔斯电码
    Java实现 蓝桥杯 算法提高 摩尔斯电码
    Java实现 蓝桥杯 算法提高 文本加密
    Java实现 蓝桥杯 算法提高 文本加密
    Java蓝桥杯 算法提高 九宫格
    Java蓝桥杯 算法提高 九宫格
  • 原文地址:https://www.cnblogs.com/xuyinghui/p/4485789.html
Copyright © 2011-2022 走看看