printf函数 + scanf函数

3.1 printf函数

①printf函数显示格式串的内容,并可在该串中指定位置插入值。调用printf函数必须提供格式串,格式串后面的参数是需要在显示时插入到该串中的值。 eg

printf (格式串, 表达式1, 表达式2, ...);

显示的值可以是常量,变量,表达式,一次打印的值的个数没有限制。

②格式串包含普通字符和转换说明,转换说明表示打印过程中待填充的值的占位符。转换说明以 % 开头, % 后面的信息指定了从内部形式(二进制)转换为打印形式(字符)的方法;

③格式串中的转换说明要用待显示的值来替换,普通字符和在字符串中出现的那样显示;

④printf()四种用法  ------ 将变量内容输出到显示屏上

    (1)printf("字符串");

    (2)printf("输出控制符",输出参数);

    (3)printf("输出控制符1 输出控制符2 ...", 输出参数1, 输出参数2, ...);

    (4)printf("输出控制符 非输出控制符", 输出参数);

⑤转换说明可以用 %m.pX格式或者 %-m.pX格式。m, p 是整数, X是字母, 省略p时要连同小数点一起省略。

⑥转换说明中,m (最小字段宽度)指定了要显示的最少字符数量,字符数少于m则右对齐(值前面放置额外空格),在 m 前加上 - 为左对齐;

⑦转换说明中,p(精度)依赖于 X(转换说明符)

       d ---- 十进制整数。p指明待显示的数字的最少个数(必要时在数前加上额外的零),不是小                    数点后的位数,区别于%e, 省略p默认位数为1;

       e ---- 指数(科学计数法)形式的浮点数。p 指明小数点后数字个数,默认为6位,p为0则不                    显示小数点;

       f ---- 定点十进制浮点数。p 指明小数点后数字个数,默认为6位,p为0则不显示小数点;

      g ---- 指数形式或定点十进制形式的浮点数,形式选择根据数的大小决定;

⑧转义序列:eg. 警报符: \a                  产生一声鸣响

                            回退符: \b                 使光标从当前位置回退一个位置

                            换行符: \n                 使光标跳到下一行起始位置

                            水平制表符: \t           把光标移到下一个制表符的位置

                            \"                                 字符 " 标记字符串的开始与结束,它不能出现在没有使用                                                                 上述转义序列的字符串内。eg.

printf("\"Hello!\"")

输出结果为 "Hello!"

⑨不能在字符串中只放置单独一个字符 \ ,编译器会认为他是一个转义序列的开始。为了显示单独一个 \ ,需要在字符串中放置两个 \ ;   eg

printf("\\")

⑩printf函数在格式串中遇到两个连续的 % ,那么它将显示出一个 % ;

3.2  scanf函数

①scanf函数格式串也包括转换说明和普通字符,scanf函数和转换说明的用法和printf函数转换说明的用法本质上一样的;

②使用scanf函数时,必须检查转换说明的数量是否与输入变量的数量相匹配,并检查每个转换是否适合相对应的变量;

③记得把取地址符 & 放在每个变量的前面;

④调用scanf函数读数据有效但不理想,更多采用字符格式读取所有数据,然后再把它们转换成数值形式;

⑤scanf()用法  通过键盘将数据输入到变量中

     (1)scanf("输入控制符", 输入参数);

              功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数                             的值为地址的变量中;

    (2)scanf("非输入控制符 输入控制符", 输入参数);

              功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数                             的值为地址的变量中,非输入控制符必须原样输入;

⑥scanf函数本质上是一种“模式匹配”函数,试图把输入的字符串与转换说明相匹配。scanf函数从左边开始处理字符串中的信息。对于格式串中的每一个转换说明,scanf函数从输入的数据中定位适当类型的项,并在必要时跳过空格,在遇到不属于此项的字符时停止;读入数据成功,scanf函数则继续处理,读入数据失败,scanf函数不再查看格式串剩余部分;

⑦scanf函数中,%e, %f, %g是可以互换的,在用于浮点数时遵循相同规则;

⑧格式串中的普通字符:

      (1)空白字符:格式串中遇到一个或多个连续空白字符时,scanf函数从输入中重复读空白字                                   符直到遇到一个非空白字符为止,格式串中空白字符数量无关紧要,格式串                                     中的一个空白字符可以与输入中任意数量空白字符相匹配,包括零个格式串                                     中包含空白字符并不意味着输入中必须包含空白字符;

      (2)其他字符:格式串中有非空白字符时,scanf函数将把它与下一个输入字符进行比较。如                                  果两个字符相匹配,那么scanf函数会放弃输入字符而继续处理格式串。如果                                    两个字符不匹配,scanf函数会把不匹配的字符放回输入中,然后异常退出,                                    不会进一步处理格式串或者从输入中读取字符;

     eg.假设格式串是%d/%d,  输入为·5/·96则可读取,输入为·5·/·96在第二个空格时停止;

⑨printf函数和scanf函数易混淆的点:

        常见错误(1):printf函数调用时在变量前放置&;

        常见错误(2):除了转换说明,格式串常常不要包含字符,因为scanf函数在寻找数据时通                                       常会跳过空白字符;

        常见错误(3):printf函数通常以 \n 结尾, 但在scanf函数格式串末尾放置 \n 通常是一个坏                                     主意;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值