C++前身:C语言的输入输出——printf和scanf的使用和转义字符

1.转义字符

    在C和C++中,有这样一类字符。它们都是由反斜杠/加字母组成,而且每一个都拥有特定功能。有的能输出换行,有的能控制输出的浮点数精度。它们就是转义字符

转义字符作用ASCII码值
\a表示响铃(BEL)007
\b表示退格(BS),将当前位置移到前一页008
\f表示换页(FF),将当前位置移到下页开头012
\n表示换行(LF),将当前位置移到下一行开头010
\r表示回车(CR),将当前位置移到本行开头013
\t表示水平制表(HT)(跳到下一个TAB位置)009
\v表示垂直制表(VT)011
\表示输出字符 \092
表示输出字符 ’039
"表示输出字符 "034
?表示输出字符 ?063
\0表示空字符(NULL),输出空格000
\ddd表示1到3位八进制数所代表的任意字符三位八进制
\xhh表示十六进制所代表的任意字符十六进制

    每一个转义字符的存在都是有它自己的意义的。这里我们先不要管其他的转义字符。只需要重点关注’\n’的作用是换行就可以了。
    注意:转义字符也是字符,也需要用’'括起来。

2.printf介绍

2.1.printf基本语法

    printf实际上就是print format的缩写。意为格式化输出。基本语法如下:

printf(“%占位符1输出内容%占位符2…%占位符n”,变量名1,变量名2,…变量名n);

    占位符,顾名思义,就是为后面的变量“占个位置”的符号。在输出的时候,占位符会依次匹配后面的变量输出。例如:
printf("I am %d years old.\nAnd I am %.2lf m high.",old,high);
    当old=16,high=1.6时的输出效果:

I am 16 years old.
And I am 1.60 m high.

2.2.占位符表

现在还不知道这些占位符的意义也别急。看看下面的占位符表吧。

占位符作用
%d代表整数类型int
%nd输出一个整数,如果不足n位,用空格补齐直到够n位
%0nd输出一个整数,如果不足n位,用0补齐直到够n位
%I64d代表超长整型long long
%lld代表超长整型long long
%f代表单精度类型float
%lf代表双精度类型double
%.nlf用于输出一个固定n位的浮点小数,四舍五入
%x.nlf用于输出一个宽度为x的固定n位的浮点小数
%c代表字符类型char
%e代表以科学计数法的形式输出一个数
%s代表字符串类型string
%p代表指针类型*
%zd代表变量大小sizeof()

    对于这些常用占位符,不懂的也没关系,后面会讲解。主要要记下%d,%lf,%.nlf,%c和%s就差不多了。

2.3.使用printf的注意事项

    使用printf和scanf均需要包含头文件cstdio

    在printf的字符串里,转义字符保持它原有的作用。比如\n会输出换行。

    超长整形占位符一般使用%lld。

2.4.输出控制小数精度程序示例

    还记得我们之前输出控制小数精度的方法吗?又是fixed又是set什么什么,太麻烦了。在这里我们就可以使用printf更简单地控制小数精度。比如将一个数保留两位小数输出可以这么写:

#include<iostream>
#include<cstdio>//需要使用printf
using namespace std;
int main(){
    double x;
    cin>>x;
    printf("%.2lf\n",x);//保留两位小数并输出换行
    return 0;
}

输入 3.459,输出3.46。

3.scanf介绍

3.1.scanf基本语法

    和printf一样,scanf也是scan format的缩写,直译为格式化扫描,也可以叫它格式化输入。基本语法如下:

scanf(“%占位符1 %占位符2…%占位符n”,&变量名1,&变量名2…&变量名n);

    和printf不同的是,scanf要在每个变量名前加上一个&取址符。目前先不要管为什么,后面会讲。

    一般来说,scanf的字符串里只有占位符。但有的时候也会添加其他字符提示输入,比如:
scanf("I am %d years old.And I am %lf m high.",&old,&high);

注意:要严格保证输入的数据与输入格式一致(空格除外)。不然数据不一定能读取到。多余的内容会自动忽略。

3.2.输出控制小数精度程序示例 完整版

scanf配合printf可以形成完整版的保留两位小数输出,如下:

#include<iostream>
#include<cstdio>//需要使用printf和scanf
//由于没有用到C++特性,所以可以不加命名空间
int main(){
    double x;
    scanf("Give a number %lf",&x);//格式化输入,前面的提示语可以省略成:scanf("%lf",&x);
    printf("%.2lf\n",x);//保留两位小数并输出换行
    return 0;
}

4.C语言风格和C++风格输入输出的区别

4.1.C语言风格和C++风格输入输出的区别

    C语言风格和C++风格输入最大的区别就是时间区别。特别是读入百万级的数据,如果说C语言的输入是大气层,那C++的输入就是地心层。所以当读入很多数据时,尽量使用scanf,这样才能保证在一秒内读完数据。

    C语言风格的输出和C++风格的输出最大的区别就是简便性。当你要实现类似这样的功能时:
格式化输出一个人的年龄,体重,身高,期末考成绩。
比如:

16,1.66m,50kg,98.

C++风格的输出就要这样写:
cout<<age<<","<<high<<"m,"<<weight<<"kg,"<<score<<"."<<endl;
而C语言风格的输出只要这样写:
printf("%d,%.2lfm,%dkg,%d.\n",age,high,weight,score);

    当然,无论是使用C语言风格还是C++风格的输入输出,都要依具体情况而定。如果输入的量级过大就使用scanf,否则使用cin。如果需要格式化字符串或者控制输出小数精度就使用printf,否则使用cout。

5.课后作业

数字反转 - 洛谷
上学迟到 - 洛谷

喜欢就订阅此专辑吧!

【蓝胖子编程教育简介】
蓝胖子编程教育,是一家面向青少年的编程教育平台。平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。

欢迎扫码关注蓝胖子编程教育
在这里插入图片描述

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值