C语言----输出语句(进阶篇十四)

  。。。

  格式控制字符

    printf中的字符包括以下三种:

      (1)以%开头的格式控制字符

      (2)以 \ 开头的转义字符

      (3)普通字符

 

    程序1

      printf的细节

 

// 14-1输出语句printf细节

#include <stdio.h>

int main()
{
    long FmtLong = 99999999;   //长整型
    double FmtDouble = 88888888.88888888;   //双精度型
    int FmtInt1 = 3, FmtInt2 = 4;  //两个普通整型


    /*整数输出*/
    printf("输出整数:");
    printf("%d\n", 13);   //输出整数

    printf("输出整数:");
    printf("%i\n", -13);   //有符号整数

    printf("输出无符号整数:");
    printf("%u\n", +13);    //无符号整好

    printf("输出单个字符串:");
    printf("%c\n", 'X');    //输出单个字符

    printf("输出长整型:");
    printf("%ld\n", FmtLong);   //输出长整型

    printf("以16进制输出整数,没有正负数:");
    printf("%x\n", 13);        //以16进制输出整数,没有正负数

    printf("以8进制输出整数,没有正负数");
    printf("%o\n", 13);        //以8进制输出整数,没有正负数

    /*控制输出*/
    printf("控制宽度输出,左端补空格:");
    printf("%3d\n", 13);        //控制宽度输出

    printf("控制宽度输出:");
    printf("%2d\n", 1234);

    printf("控制宽度输出也适用于长整型:");
    printf("%2ld\n", FmtLong);  //长整型控制宽度


    printf("格式串后面的字符为普通字符");
    //格式串后面的字符为普通字符,普通字符原样输出,
    //如下面  "%2ld3\n"  里面的 3 会原样输出在最后一位,输出的结果是:999999993
    printf("%2ld3\n", FmtLong);


    /*浮点输出*/
    printf("\n");    //换行

    printf("输出浮点数:");
    printf("%f\n", 100.33);   //浮点数输出会精确到后六位 输出结果是:100.330000

    printf("以指数形式输出浮点数:");
    printf("%e\n", 100.33);      //以指数形式输出浮点数

    printf("以指数形式输出浮点数:");
    printf("%E\n", 100.33);      //以指数形式输出浮点数

    printf("由系统自己决定采用e还是采用f格式输出:");
    printf("%g\n", 100.33);   //系统自己决定采用e还是采用f的格式输出

    printf("输出长浮点型:");
    printf("%lf\n", FmtDouble);  //输出长浮点型  此函数有自动四舍五入的功能


    printf("控制有效位数,左端补空格:");
    //控制有效位数,左端补空格    
    //"%8.1fok\n"  8 代表总位数输出8位。 1 代表小数点后面有一位  ok 是原样输出
    printf("%8.1fok\n", 100.33);


    printf("控制有效位数,右端补空格:");
    printf("%-8.1fok\n", 100.33);      //控制有效位数,右端补空格


    /*特殊输出*/
    printf("输出一个换行:");
    printf("\n");        //输出一个换行

    printf("输出一个%号");
    printf("%%\n");        //输出一个%号


    /*字符串输出*/
    printf("用变量方式输出字符串:");
    printf("%s\n", "你若盛开,蝴蝶自来");  //用变量的方式输出字符串

    printf("原样输出字符串:");
    printf("不忘初心,方得始终,初心易守,始终难得\n");   //原样输出

    printf("混合输出:");
    printf("天在高又怎样,%s\n","踮起脚尖更接近阳光");       //混合输出

    
    /*综合输出*/
    printf("同时输出好几个数据:");
    printf("%d,%lf\n", FmtLong, FmtDouble);   //同时输出好几个数据

    printf("直接输出结果:");
    printf("%d\n", FmtInt1*FmtInt2);  //直接输出结果

    printf("%d*%d=%d\n", FmtInt1, FmtInt2, FmtInt1*FmtInt2);

}

 

    ※双引号中出现一个%,后面一定要跟随一个输出常量,变量或表达式。

    ※两个连续的%表示输出一个%

    ※一旦出现格式控制字符和转义字符,它们立即会寻找后面紧跟着的字符进行组合。但是它们前面的算普通字符。如:

      printf(“a,%c\n”,t);

    %c只能算一个字符,它会输出t中的字符。\n又算一个字符,它会输出回车。而前面的a,(逗号)只能算普通字符,会原样输出。

 

    ※在格式控制串中,格式说明与输出项从左到右在类型上必须一一对应匹配。如果不匹配,数据不能正确输出,这时系统并不报错。如:

      printf(“%d,%d”,i)

    因为只有一个参数,第二个%d会输出一个乱码。

 

    ※%m.nf指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格,超过m列,原样输出。

    ※%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。

    ※用f或lf格式打印浮点数时,系统会自动四舍五入。

    ※格式控制字符除了X,E,G外,其它字符必须用小写字母,如%d不能写成%D。

 

  转义字符

    原本字符常量只能是一个字符,但是因为有些字符看不见或是不好表达,所以特殊的字符常量可以是多个字符,它们以 \ 开头后面跟着其它字符,这也叫“转义字符”。

    下面是C语言中所有的转义字符:

      \n 回车换行

      \t 横向跳格(代表Tab键)

      \v 竖向跳格(打印机专用)

      \r 回车

      \f 换页(打印机专用)

      \b 退格(代表Backspace键)

      \\ 反斜杠字符 \

      \’ 单引号

      \” 双引号

      \ddd 以八进制形式代表的ASCII字符

      \xhh 以十六进制形式代表的ASCII字符

      \0 空值

 

    下面这行代码:

      printf(“%c”,’\x41’);

    会输出字符A

 

    注意:

      ※格式控制字符“%”只能在printf和scanf中使用,而转义字符“\”可以用在所有字符和字符串处理函数中。

      ※转义字符“\”会取后面所有符合条件的字符,并且只取一次,就失去作用,后面的都按普通字符输出。如:\x41n就会输出An

 

    程序2

      转义字符输出

// 14-2转义字符输出
#include <stdio.h>

 main()
{
     printf("没有转义字符:");
     printf("abc");            //没有转义字符
     printf("d");
     printf("\n");

     printf("回车:");
     printf("abc\r");        //回车 \r
     printf("d");
     printf("\n");

     printf("退格:");
     printf("abc\b");        //退格 \b
     printf("d");
     printf("\n");

     printf("竖向跳格只用作在打印机上,这里是乱码:");
     printf("abc\v");        //竖向跳格只用作在打印机上,这里是乱码\v\f
     printf("d");
     printf("\n");

     printf("引号和右斜杠只能用转义字符输出:");
     printf("\\\n");
     printf("\'\n");

     printf("空字符:\n");
     printf("\0\0\0");        //空字符什么也不做

     printf("用ASCII码输出:");
     printf("\101\n");        //用八进制输出ASCII码
     printf("\x42\n");        //用十六进制输出ASCII码

     printf("制表符演示:\n");
     printf("%d\t%d\t%d\t\n", 1, 2, 3);
     printf("%d\t%d\t%d\t\n", 100, 200, 300);
     printf("%d\t%d\t%d\t\n", 999, 10000, 4444);

     printf("-------------------------\n");
     printf("|%d\t|%d\t|%d\t|\n", 1, 2, 3);
     printf("|%d\t|%d\t|%d\t|\n", 100, 200, 300);
     printf("|%d\t|%d\t|%d\t|\n", 999, 10000, 4444);
     printf("-------------------------\n");

}

 

posted @ 2021-10-15 14:37  httpcc  阅读(688)  评论(0编辑  收藏  举报