引子
假设我们用C++来输出一段自我介绍
#include <bits/stdc++.h>
using namespace std;
int main(){
int age=18;
string ID="March_14th"; //可修改数据
cout<<"我的优快云 ID是"<<ID<<",目前"<<age<<"岁。";
return 0;
}
但是这样就会导致程序的可读性变差,因为变量和文本混在一起。
那么,C++中有没有一种输出方式,可以在保证运行的同时也保证可读性?答案是当然的,它就是今天的主角:格式化输出函数printf();
格式化输入printf()
printf`函数的一般调用格式为 printf("<格式化字符串>", <参量表>),其中的格式化字符串为实际输出的内容,参量表为其中出现的变量等。当然<参量表>也可以没有
printf("Hello,Word");
上述代码的结果为 Hello,Word ,<参量表>的值为零。
当然,在实战中这样的输出不为多,多数的输出中式带有参量的,如
int age=18;
printf("我%d岁了",age);
中就输出了整型变量 age。
转换说明符
大家一定有注意到,输出参量的部分写作了"%d",因为"%d"为转换说明符,转换说明符与参数表是一一对应的。
格式控制字符 | 输出数据类型 | 备注 |
%d | int整型变量 | |
%lld | long long变量 | |
%f | 浮点数变量 | |
%.Xf | 精确值浮点数 | X为精确到第X位 |
%lf | 长浮点数变量 | |
%e | 浮点数变量 | 科学计数法 |
%g | 浮点数变量 | 删去末尾的0 |
%c | char字符 | |
%s | string字符串 | |
%p | 指针 | |
%u | 无符号十进制整数 | |
%x | 十六进制整数 | |
%o | 八进制整数 | |
%% | 输出“%” |
可以使用标志来修改输出格式,下面是常用的标志
标志 | 作用 |
- | 左对齐输出,不够补空格 |
+ | 右对齐输出,强制输出正数 |
空格 | 若符号+,则显示空格,-则显示"-" |
# | 对o x在输出时加前缀o或0x; 对e g f 有小数时输出小数点 |
* | 数字前面补零,指定宽度 |
格式化输入
格式化输出有了,格式化输入也不能没有。
格式化输入scanf函数的一般调用格式为 scanf("<格式转换说明符>", <参量表>),返回值是读取的参量数。下面是一个示例:
int age;
scanf("%d",&age);
要注意的是,每个读取参量数前都要加上引用符 &
尾声
我们重用C++来输出一段自我介绍
#include <bits/stdc++.h>
using namespace std;
int main(){
int age=18;
string ID="March_14th";
printf("我的优快云 ID是%s,目前%d岁。",ID,age)
return 0;
}