C语言错题总结

Posted franksimon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言错题总结相关的知识,希望对你有一定的参考价值。

01:合法的字符常量

常见错误:

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

带转义字符的:

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

    转义字符

    意义

    ASCII码值(十进制)

    a

    响铃(BEL)

    007

    

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

    008

    f

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

    012

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

    010

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

    013

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

    009

    v

    垂直制表(VT)

    011

    \

    代表一个反斜线字符‘‘‘

    092

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

    039

    "

    代表一个双引号字符

    034

    ?

      

    代表一个问号

      

    063

      

    空字符(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\101ddressxaf";
        printf("%d
    ",strlen(c));//15个
        char c[]="\name\101ddressxaf";
        printf("%d
    ",strlen(c));//13个
    }

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

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

    06:格式限制输出符号

  • int main()
    {
        printf("%12.5f
    ",123.1234567);//%12共占12个坑。.5保留小数点后五个有效数字,多的舍去
        printf("%12.8d
    ",12345);//%12共占12个坑。.8保留小数点后8个有效数字,不够的补0
        printf("%12.8s
    ","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"

以上是关于C语言错题总结的主要内容,如果未能解决你的问题,请参考以下文章

C语言错题总结

C语言错题总结

C语言转义字符基础总结

错题总结Java

001C语言选择题错题总结

关于C语言部分错题