• while(scanf("%d",&n)!=EOF)


    “测试输入包含若干测试实例。当N为0时,输入结束,该实例不被处理。”

    这句话 是最早我对ACM的印象 以前也没见过这种输入要求 做第一道题的时候就卡住了 上网看别人的代码 都有一句 while(scanf("%d",&n)!=EOF)

    "scanf 函数还能放while里啊... EOF是什么玩意儿呢..."

    上网找答案吧 也没人可问...

    有人说 EOF等于-1 其实就是scanf函数的返回值 不等于-1时 继续进行循环

    有人说 EOF是处理到文件结束 不用EOF也可以

    ....

    很多天后终于把这个弄明白了

    scanf的返回值由后面的参数决定

    scanf("%d%d", &a, &b);

    如果a和b都被成功读入,那么scanf的返回值就是2

    如果只有a被成功读入,返回值为1

    如果a和b都未被成功读入,返回值为0

    如果遇到错误或遇到end of file,返回值为EOF。

    且返回值为int型.

    验证:

            sign=scanf("%d %d",&a,&b); 
            printf("%d %d ",a,b); 
            printf("%d ",sign);

    但是输入“a X”的时候 输出的sign为0

    什么时候输出EOF? 在stdio.h中 宏定义为-1

    按照说明,scanf函数只有在第一个参数为NULL(空指针)的情况下,才可能返回EOF,否则,返回成功格式化并赋值的参数个数(>=0)。

    End Of File,在电脑的术语缩写通常为 EOF,在作业系统决定资料源无更多的资料可读取。

     当时这个程序就是这么写的:

    while(scanf("%d",&n)!=EOF)

     {

       if(n==0)

      {

          break;

       }

     }

     

    终于把那道题给A了... ... 

     

    后来看别人的代码 又这么写了

    while(scanf("%d",&n)&&n!=0)

     

    后来

    whlie(scanf("%d",&n)&&n)

     

    再后来

    while(scanf("%d",&n),n)

    ... ...

    也许用C语言 用scanf函数 这么写是最简单的吧

  • 相关阅读:
    php的基础知识(三)
    php的基础知识(二)
    css的基础用法(下)
    css的基础用法(上)
    Conceptual blockbusting--chap7 Kinds of blockbusters
    Conceptual blockbusting--chap6 Alternate thinking languages
    Conceptual blockbusting--chap5 Intellectual and Expressive blocks
    Conceptual blockbusting--chap4 Cultural and Environmental blocks
    Conceptual blockbusting
    Conceptual blockbusting- chap2 perceptual blocks
  • 原文地址:https://www.cnblogs.com/zhoumin6012/p/9875501.html
Copyright © 2020-2023  润新知