• 关于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:重点不同处:

    这世界上有一种鸟是没有脚的,它只能够一直的飞呀飞呀,飞累了就在风里面睡觉,这种鸟一辈子只能下地一次,那一次就是它死亡的时候。
  • 相关阅读:
    未来简史之数据主义(Dataism)
    10分钟看懂《人类简史》和《未来简史》
    SignalR来做实时Web聊天
    .Net Core应用搭建的分布式邮件系统设计
    AspNetCore-MVC实战系列(四)之结尾
    AspNetCore-MVC实战系列(三)之个人中心
    AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码
    AspNetCore
    爱留图
    .NetCore上传多文件的几种示例
  • 原文地址:https://www.cnblogs.com/xuyinghui/p/4485789.html
Copyright © 2020-2023  润新知