第3章 C语言的输出函数putchar与printf (一)

文档视频讲解链接地址

  1. 腾讯课堂链接 : 18_输入与输出_字符输出putchar函数
  2. 腾讯课堂链接 : 19_输入与输出_格式输出printf函数1
  3. 腾讯课堂链接 : 20_输入与输出_格式输出printf函数2

第03章 输入与输出

I/O : input /output

3.1 字符输出putchar

  1. 输入与输出

    • C语言无I/O语句,I/O操作由函数实现
    • 需要包含头文件:
    #include <stdio.h>
    
  2. 字符输出函数

    • 格式: putchar( c )
    • 参数: c为字符常量、变量或表达式
    • 功能:把字符c输出到显示器上
    • 返值:正常,为显示的代码值;
  3. 实例 18

    • 源程序
    01-cbase\18-putchar.c
    
    • 源代码
    #include <stdio.h> 
    int main(int argc, char const *argv[])
    {
       int a1 = 65 ; // ascii 'A'
       int a2 = 'A'; // ascii 65
       int b1 = 10 ; // '\n'
       int b2 = '\n' ; // 10 
       putchar(a1);  // A
       putchar(a2);  // A
       putchar(b1);  // 换行 
       putchar(b2);  // 换行  
       putchar(a1+1); // B
       putchar(65+1); // B
       putchar('B'+' ') ; // 大写转小写 + ' '   输出: b
       putchar('b'-' ') ; // 小写转大写 - ' '   输出: B
       return 0;
    }
    
    • 运行结果:
    AA
    
    BBbB
    

3.2 格式输出printf

  1. 格式输出函数printf

    • 格式:printf(“格式控制串”,输出表)
    • 功能:按指定格式向显示器输出数据
    • 返值:正常,返回输出字节数;出错,返回EOF(-1)
    • 输出表:要输出的数据(可以没有,多个时以“,”分隔)
      • 格式控制串:包含两种信息
        • 格式说明:%[修饰符]格式字符 ,用于指定输出格式
        • 普通字符:原样输出
    • 格式字符如下:
      01-c-46
  2. 实例 19

    • 使用printf函数输出以上表格的内容。
    • 源程序
    01-cbase\19-printf.c
    
    • 源代码
    #include <stdio.h> 
    
    
    int main(int argc, char const *argv[])
    {
       printf("hello world\n");// 输出表没有, 直接输出格式字符串
       int x=10,y=20,z=30;
       printf("x=%d\n",x) ;  // 输出表有1个 
       printf("x=%d,y=%d,z=%d\n",x,y,z) ;  // 输出表有多个, 用逗号隔开, 普通字符原样输出
    
       int a = 571 ; 
       printf("a=%d\n",a); // 带符号的十进制整数, 表示a以整数的形式输出
       printf("a=%i\n",a); // 带符号的十进制整数, 表示a以整数的形式输出
       printf("a=%x\n",a); // 无符号的十六进制整数, 表示a以整数的形式输出
       printf("a=%X\n",a); // 无符号的十六进制整数, 表示a以整数的形式输出
       printf("a=%u\n",a); // 无符号的十进制整数, 表示a以整数的形式输出
       printf("a=%o\n",a); // 无符号的八进制整数, 表示a以整数的形式输出
       a = 'Y'; 
       printf("a=%c\n",a); // 输出一个字符, 表示a以字符的形式输出 , 等价于 putchar 
       printf("a=%s\n","goodbye"); // 输出一个字符串, 表示a以字符串的形式输出  
    
       float c = 567.789; 
       printf("c=%e\n",c);         // 指数形式浮点小数, 小写的e
       printf("c=%E\n",c);         // 指数形式浮点小数, 大写的E
       printf("c=%f\n",c);         // 小说形式浮点小数
       printf("c=%g\n",c);         // e和f中较短一种
    
       printf("&c=%p\n",&c) ;      // &c 是变量的地址 , 输出地址要使用%p , 以地址形式输出 
       printf("%%\n",&c) ;         // 使用%% 输出百分号本省 
    
       return 0;
    }
    
    
    • 运行结果
    hello world
    x=10
    x=10,y=20,z=30
    a=571
    a=571
    a=23b
    a=23B
    a=571
    a=1073
    a=Y
    a=goodbye
    c=5.677890e+002
    c=5.677890E+002
    c=567.789001
    c=567.789
    &c=000000000061FE0C
    %
    

3.3 格式输出printf 附加格式说明符

  1. 附加格式说明符(修饰符)

    01-c-47

  2. 实例 20
    使用printf函数输出以上附加格式表格的内容。

    • 源程序
    01-cbase\20-printf.c
    
    • 源代码
    #include <stdio.h>
    
    int main(int argc, char const *argv[])
    {
        // m 宽度
        int a = 567;
        printf("a=%d\n", a);            // 按照10进制输出整数
        printf("a=%8d\n", a);           // 按照10进制输出整数, 输出宽度8个位置,不够左补5个空格
        printf("a=%2d\n", a);           // 按照10进制输出整数, 输出宽度2个位置,超出设定的位置 , 按照实际输出
        printf("str=%8s\n", "goodbye"); // 输出一个字符串 , 输出宽度8个位置,不够左补1个空格
        printf("str=%4s\n", "goodbye"); // 输出一个字符串 , 输出宽度4个位置,超出设定的位置 , 按照实际输出
    
        // .n
        // 对于实数 , 保留小数点后面的位数
        float b = 456.789;
        printf("b=%f\n", b);    // 输出一个实数, 小数点后面保留6位
        printf("b=%.2f\n", b);  // 输出一个实数, 小数点后面保留2位, 四舍五入
        printf("b=%.0f\n", b);  // 输出一个实数, 小数点后面保留0位, 四舍五入
        printf("b=%8.2f\n", b); // 输出一个实数, 输出宽度8,小数点后面保留2位, 四舍五入, 不够左补2个空格
        printf("b=%4.2f\n", b); // 输出一个实数, 输出宽度8,小数点后面保留2位, 四舍五入, 超出设定的位置 , 按照实际输出
    
        // 对于字符串, 控制字符串输出的个数
        printf("b=%.3s\n", "goodbye");  // 输出一个字符串 , 字符串输出3个有效字符
        printf("b=%8.3s\n", "goodbye"); // 输出一个字符串 , 字符串输出3个有效字符 , 输出宽度8, 不够左补5个空格
        printf("b=%3.4s\n", "goodbye"); // 输出一个字符串 , 字符串输出4个有效字符 , 输出宽度3, 超出设定的位置 , 按照实际输出
    
        // #
        printf("a=%o\n", a);  // 按照8进制输出整数
        printf("a=%#o\n", a); // 按照8进制输出整数, 会在输出时加上0的前缀
        printf("a=%#x\n", a); // 按照8进制输出整数, 会在输出时加上0x的前缀
    
        // +
        printf("a=%+d\n", a); // 按照10进制输出整数, 带上符号位, 正数+ , 负数-
        a = -123;
        printf("a=%+d\n", a); // 按照10进制输出整数, 带上符号位, 正数+ , 负数-
    
        // - 默认右对齐, 可以使用-来实现左对齐
        printf("str=%8s\n", "goodbye");  // 右对齐, 左补1个空格
        printf("str=%-8s\n", "goodbye"); // 左对齐, 右补1个空格
        printf("a=%8d\n", a);            // 右对齐, 左补4个空格
        printf("a=%-8d\n", a);           // 左对齐, 右补4个空格
    
        // 0 左补0 , 不补空格 , 只限于右对齐的时候, 因为左对齐右补0会产生混乱
        // 0 不能和- 同时使用 
        //printf("str=%08s\n", "goodbye");  // 这种补0 没有意义  错误用法 
        printf("a=%08d\n", a);            // 右对齐, 左补4个空格
        //printf("a=%-08d\n", a);            // 没有意义  错误用法 
        
        printf("a=%ld\n",a) ; //  long  类型的数据 
        printf("b=%lf\n",b) ; //  double  类型的数据 
        return 0;
    }
    
    • 运行结果
    a=567
    a=     567
    a=567
    str= goodbye
    str=goodbye
    b=456.789001
    b=456.79
    b=457
    b=  456.79
    b=456.79
    b=goo
    b=goo
    b=     goo
    b=good
    a=1067
    a=01067
    a=0x237
    a=+567
    a=-123
    str= goodbye
    str=goodbye
    a=    -123
    a=-123
    a=-0000123
    a=-123
    b=456.789001
    
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值