patest吧 关注:1,492贴子:1,702
  • 6回复贴,共1

PAT 乙级 算是笔记

取消只看楼主收藏回复

太痛苦了。


IP属地:山东1楼2020-05-20 14:48回复
    scanf("%d",&n);
    "%d",&n
    狗屎"%d,&n"


    IP属地:山东2楼2020-05-20 14:50
    回复
      getchar 与 scanf 与 gets
      要注意不同的函数是否接受空格符、是否舍弃最后的回车符的问题!
      读取字符时:
      scanf() 以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);
      getchar() 以Enter结束输入,也不会舍弃最后的回车符;
      读取字符串时:
      scanf() 以Space、Enter、Tab结束一次输入,不会舍弃回车符。
      gets() 以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!
      所以有时才要加一个 getchar用以吸收回车符。


      IP属地:山东3楼2020-05-20 14:52
      回复
        条件运算符。
        x ? a : b; x,a,b均为表达式。
        判断x,为真则执行冒号左边的表达式。
        ex:利用这个判断大小,求最大最小值。
        s[n].score<min?(min=s[n].score,i=n):(void)1;
        s[n].score>max?(max=s[n].score,j=n):(void)1;
        切记,不能为空(编译错误)。 为空需要在冒号后加上 (void)1 。


        IP属地:山东4楼2020-05-20 19:22
        收起回复
          又是 scanf 。 吸收回车符。
          在scanf函数中%c之前输入一个空格符(或者换成\n)---scanf(" %c"),或者在每次scanf之前清空键盘缓冲区(fflush()函数)。同样可达到gechar吸收回车符的目的。
          这涉及到scanf输入字符串的匹配问题,如果格式字符串中有一个空格,则输入时会跳过相应位置开始出现的所有空格字符(包括空格、换行符,制表符等等)所以在%c之前加一个空格,表示对输入的字符,跳过开始处出现的所有空格(包括空格、换行符、制表符等),如果不加,则由于回车、换行也是一个字符,所以也会对其进行处理。
          如果scanf输入的不是字符,那么分隔符为回车,空格、tab键时,两个数据之间的分隔符只是起区别两个数据的作用,把分隔好的两个数据分别赋值到各自定义好的变量或数组中去,两个数据之间的分隔符被从缓冲区读出但是不起任何作用,当然最后一个'\n '会被留在缓冲区内,除非用getchar();或scanf("%c",&c);把它读出来。
          回车是一定要有的,不管getchar还是scanf只要是通过缓冲区输入数据的函数都是等待回车键'\n '出现才进入缓冲区的。
          ex:在输入两个整型数据时,两个数据之间无论是回车还是若干空格都被scanf当做分隔符.。scanf读到分隔符(回车或空格)时,把第一个整型数据送到变量a中,缓冲区中留下分隔符和下面的整型数据,这时scanf再读当然先读分隔符,但是要求输入的是整型数据(%d),所以分隔符被忽略。如果这时要求输入字符%c(不是字符串%s),那么分隔符将以一个字节的形式送到字符变量里。


          IP属地:山东5楼2020-05-21 15:46
          回复
            printf("%d%c",i,--k?' ':'\0');
            条件运算符。根据题目对输出的要求,巧妙进行字符空格输出。


            IP属地:山东6楼2020-05-22 12:33
            收起回复
              C和C++ 一些区别。要慢慢向C++转。得等看完书做完Q才行吧。
              命名空间。
              #include
              using namespace std;
              输入输出。
              scanf 和 printf 变为 cin cout “<<”和“>>”
              类(Class)
              C++相比于C,有了面向对象的内容,也有了类、继承、多态、封装等概念。
              C语言中,字符常量被当作整数,而C++语言中不是,字符常量就当作字符。这虽然很小,但却是重要的一点。
              C++语言中增加了bool基本类型。bool类型只包含两个值,true或false。
              C++中增加了string类型的变量,我们可以用“string a”来定义一个字符串变量了。
              C语言中用结构体定义变量时,“struct 结构体名 变量名”,在C++中“struct”可以省略。
              C语言命名限制在31个有效字符,C++语言中没有限制,但太长了使用不方便。
              C语言中main()函数也能被调用,这不是好方法。在C++语言中main()被禁止调用。


              IP属地:山东7楼2020-05-22 12:48
              回复