C语言错题总结

01:合法的字符常量

常见错误:

01:‘ab’//只能放一个字符
02:‘\482//八进制没有8
03:‘\xaf’//这是正确的的

带转义字符的:

  • t \r \n都是转义字符,空格就是单纯的空格,输入时可以输入空格
  • \t 的意思是 横向跳到下一制表符位置
  • \r 的意思是 回车
  • \n 的意思是回车换行
  • 所有的转义字符和所对应的意义:

    转义字符

    意义

    ASCII码值(十进制)

    \a

    响铃(BEL)

    007

    \b

    退格(BS) ,将当前位置移到前一列

    008

    \f

    换页(FF),将当前位置移到下页开头

    012

    \n

    换行(LF) ,将当前位置移到下一行开头

    010

    \r

    回车(CR) ,将当前位置移到本行开头

    013

    \t

    水平制表(HT) (跳到下一个TAB位置)

    009

    \v

    垂直制表(VT)

    011

    \\

    代表一个反斜线字符''\'

    092

    \'

    代表一个单引号(撇号)字符

    039

    \"

    代表一个双引号字符

    034

    \?

      

    代表一个问号

      

    063

      

    \0

    空字符(NULL)

    000

    \ooo

    1到3位八进制数所代表的任意字符

    三位八进制

    \xhh

    1到2位十六进制所代表的任意字符

    二位十六进制

     

    02:合法的浮点型常量

  • 1 e-3//错误
    2 1.5e+2.4//错误,科学计数法后次方不能为小数
    3 3.14e+2//正确
    4 3.14e2//正确
    5 3.14e+2L//正确,加L说明其类型

    03:运算优先级问题

  •  main()     
    { 
        int x=5,y;
        y=x++*x++;
        y=--y*--y;
        printf("%d",y);
    }
    //!        ~            ++      --     +    -     *            &          sizeof二级
    //否定   按位否定   自加     自减  正   负   间接寻址  取地址     求大小
    //乘除余三加减四

    更多优先级

    04:字符串长度问题

  •  main()     
    { 
        int x=-10,y=-3;
        char c[]="\\name\\\101ddress\b\xaf";
        printf("%d\n",strlen(c));//15个
        char c[]="\\name\\\101ddress\0\b\xaf";
        printf("%d\n",strlen(c));//13个
    }

    05:scanf()与gets()与getchar()

  •     int main()
        {
            char ch1, ch2;
            scanf("%c", &ch1);
            ch2 = getchar();
    
            printf("%d %d\n", ch1, ch2);
            return 0;
        }
        //scanf("%c")与getchar();一样,遇到回车结束,不会清除缓冲区
    int main()
    {
        char str1[20], str2[20];
        gets(str1);
        printf("%s\n",str1);   
        gets(str2);
        printf("%s\n",str2);
        return 0;
    }
    //get()函数会清除缓冲区,可以接受空格,只认回车
    int main()
    {
        char str1[20], str2[20];
        scanf("%s",str1);
        printf("%s\n",str1);   
        scanf("%s",str2);
        printf("%s\n",str2);
        return 0;
    }
    //scanf("%s")遇见空格,先等着,等到回车结束,但是分割的时候会以空格进行分割

    06:格式限制输出符号

  • int main()
    {
        printf("%12.5f\n",123.1234567);//%12共占12个坑。.5保留小数点后五个有效数字,多的舍去
        printf("%12.8d\n",12345);//%12共占12个坑。.8保留小数点后8个有效数字,不够的补0
        printf("%12.8s\n","abcdefghij");//%12共占12个坑。.8保留小数点后8个有效字符,不够的补‘ ’,多的舍去
        return 0;
    }

    1.转换说明符
    %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)
    %c 字符
    %d 有符号十进制整数
    %f 浮点数(包括float和doulbe)
    %e(%E) 浮点数指数输出[e-(E-)记数法]  // 
    %g(%G) 浮点数不显无意义的零"0"
    %i 有符号十进制整数(与%d相同)
    %u 无符号十进制整数
    %o 八进制整数 e.g. 0123
    %x(%X) 十六进制整数0f(0F) e.g. 0x1234
    %p 指针
    %s 字符串
    %% "%"

    2.标志
    左对齐:"-" e.g. "%-20s"
    右对齐:"+" e.g. "%+20s"
    空格:若符号为正,则显示空格,负则显示"-" e.g. "% 6.2f"

猜你喜欢

转载自www.cnblogs.com/franksimon/p/12670344.html
今日推荐