• 依旧是输入输出(存字符矩阵,空格,换行)


    PAT倒福的题就因为输入输出……第一个样例过了,后面的根本就是存储错误?

    今天主要针对怎样输入字符矩阵、字符串、空格换行进行叙述。

    scanf是格式化输入,printf是格式化输出。 cin是输入流,cout是输出流。效率稍低,但书写简便。cin的实时性较差,因为它使用了缓冲区,一般情况下满了才刷新的。

    对于字符:cin的输入忽略空格和回车。scanf("%c",&i)等价于i = getchar(),换行符和回车都会被读入。

    一、对于输入字符串矩阵来说,一般会用到二重循环,对于回车符的吸收问题,理论上讲getchar()可以使用,但不知道为什么,做题的时候会多吸收字符,这里推荐使用另外一种方法:

        

      具体原因还不知道,只是知道可以这么用。
      cin只是吸收单个字符,不会吸收回车或者空格,但如果每行的字符是连续输入,则建议是使用getline(cin,数组名)或是cin.getline(数组名);
      但由于是流输入,效率会差;号要考虑缓冲区是否已满的情况,会用到cin.ignore();
    二、输入有空格的字符:
      scanf("%c ",&c);或是cin>>c;
      cin虽然方便但效率差,建议使用scanf;

    对于一般数据的输入,没有太大问题,有问题继续添加。下面是其他人遇到的问题,目前我还没遇到。

    笔试的时候经常遇到突然string s;cin>>s;

    有的时候编译会错误,不知道为什么。

     {

    ………………………………………………………………………………………………………………………………

    今天在练习枚举类型的时候,也遇到这样一个问题。

    enum weekday{Monday,Tuesday} day;

    cin>>day;//报错

    scanf("%d",&day);//正常

    周纯洁的书上也都是用scanf;看样子scanf和printf不能随便丢弃啊。毕竟是标准输入输出流,没有缓存区

    scanf是格式化输入,printf是格式化输出。 
    cin是输入流,cout是输出流。效率稍低,但书写简便。 
     
    格式化输出效率比较高,但是写代码麻烦。 
     
    流输出操作效率稍低,但书写简便。 
     
    cout之所以效率低,正如一楼所说,是先把要输出的东西存入缓冲区,再输出,导致效率降低。 
     
    缓冲区比较抽象,举个例子吧: 
     
    曾经就遇到过这样的情况(类似的), 
    int i; 
    cout<<'a'; 
    cin>>i; 
    cout<<'b'; 
    运行结果什么都没看到输出,输入一个整型比如3再按回车后ab同时显示出来了。 
    但是这样的情况并不是经常发生,是在一些比较大型的工程中偶尔出现,原因是字符a先到了缓冲区,但是没输出,等输入了i,b进入 
    缓冲区后再一并输出的。 
    流输入也是差不多的。
    ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
    }

    对于scanf的具体用法:
    scanf 后面的参数,就是要 写变量的 地址。所以 int a,b; 就要 用 &a,&b 形式来调用 scanf.
    可是,如果是字符串,char s[10]; scanf("%s",s); 参数 s 就 不要 &. 因为 s 就是 地址形式。
    http://bbs.bccn.net/thread-236258-1-1.html 这里有非常详细的讲解。

    未完待续……
  • 相关阅读:
    jquery deferred对象
    一张图道尽Javascript的原型继承
    Reflection
    vim操作
    转载:HTTP调试工具:Fiddler的使用方法介绍
    转载:计算机网络面试题
    20120810
    new pad不能用usb充电的解决方法
    20120416
    Lua入门——环境安装
  • 原文地址:https://www.cnblogs.com/lyqf/p/8805106.html
Copyright © 2020-2023  润新知