格式化输入输出(12)

为进入独立解决问题的复合结构程序设计,还需要掌握格式化输入输出的技巧。

 

C语言的格式化输入输出

1、printf  和 scanf (包含头文件 stdio.h)

语法:这两个函数的实参(括号内)包括两个部分:格式控制字符串 + 输出(输入)项,其中输出(输入)项可以有多个或者没有,需要与前面的格式控制字符串进行对应。格式控制字符串的标识是一对双引号 "......"  (字符串),它由三种成分组成:格式控制字符(%开头)、转义字符(\开头),其他普通字符,格式控制字符与输出(输入)项应该个数相同、类型相同、顺序相同;转义字符则按照转义字符的特定含义来输出(输入),普通字符则按原样输出(输入)。

注意,此处的输出是在程序运行的控制台窗口显示,输入则是通过键盘完成输入。

 双引号中sum=都是普通字符,原样输出;

%d(int) 与后面的输出项sum对应(个数、类型、顺序)输出的时候用sum的值去代替%d的地方;

\n 是转义字符,不再是普通的n,而是一个换行符。

格式化输入函数scanf的语法与printf类似:

       scanf(   “格式控制串”,  地址项 )

注意点:

1、printf的输出项变成了输入项(地址项),所谓的地址项就是在变量的前面加"&" 

2、printf的输出项可以是普通变量、常量、表达式、函数调用等,而scanf函数的输入项只能是变量的地址(还是数组地址等)

3、在printf函数中经常用普通字符和转义字符来实现对输出格式的控制,但scanf函数则很少用到普通字符和转义字符,如果一定要用,规则就是得 “照原样输入”,有一个特殊的符号 “," ,在scanf函数中可能经常使用,来实现多个输入项的分割。当然也必须得按原样输入的规则。

看代码:

在VS2012中报安全检测的错误,解决方案,直接定义宏_CRT_SECURE_NO_WARNINGS

1、scanf格式控制字符串,两个 %d 与后面的输入项a,b对应,中间没有空格。 则输入的时候利用空格、换行、TAB进行分割(输入a后空格,输入b);也可以是逗号 ”%d,%d",那么需要用逗号分割。

 2、scanf("%d   %d",&a,&b);两个%d之间多个空格在输入的时候不需要输入多个空格,一个空格或者换行、TAB就可以;

3、printf函数中有三个%d,分别与 a 、b 、a+b三个输出项对应,输出的时候会用它们的值来代替,如上图的3、4、7; 空格、+、= 都是普通字符,原样输出;\n 则是转义字符,换行。

格式化输出输入

格式控制字符:

 1、%d  %i 在printf输出没有区别,scanf则略有区别,%d用于十进制,%i则可以完成八进制、十六进制的输入(自动匹配)

 2、十六进制八进制只能实现无符号整数的输入输出,十六进制可以大小字母"x",八进制只能是小写的字母"o" :

 3、无符号的u输出负数会是很大的值,因为它把符号位也看成了数值:

 4、%s可以对字符串进行输入输出,由于没有字符串变量,scanf没办法完成输入(后面字符数组、字符指针可以完成输入);

5、float类型用%f,double类型用%lf  (long的第一个字母),输入double的时候一定要%lf,输出double用%f 基本上没有错误(其实就是类型转换了),%f  %lf 默认输出6位小数(不包括小数点)

控制输出输入位数的 m  n  +  -

在整型、字符类型输出的时候,可以在格式控制字符中可以带+、-、m来控制输出输入,浮点数类型则还可以跟n,语法:  % (+/-) m.n  格式控制字符

整数的输入出:

scanf用%5d限制输入,输入123456截断成12345,不够的话没有影响;printf输出 %15d,输出内容不够15位补空格, 省略或者+在左边(前面)补空格,负号则在右边(后面)补空格

多个输入则有可能影响后面:

前面不超过指定位数,不会对后面的输入有影响:

 字符类型的输入输出、八进制十六进制的输入输出可以参考以上

浮点数的输入输出:

 至于printf中%15.2f的小数部分,则是表示,保留多少位小数

 

1、在正常输入情况下,保留2位小数输出会进行四舍五入;

2、在截断输入情况下,不会进行四舍五入;

3、浮点数是有精度的,输入 3.8,输出的时候是3.79999995,正好证明了这点。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值