1.格式化输出函数
printf()
printf("格式控制字符串",输出的参数列表);
(1)格式控制字符串:
普通字符
原样输出
占位符
用参数列表对应的数值 替换
(2)字符形式
整型 %d -- 转换为 有符号 十进制形式 输出
%u -- 转换为 无符号 十进制形式 输出
%x -- 转换为 十六进制形式 输出
%X -- 转换为 十六进制形式 输出 输出结果中字符 都是大写形式
%o -- 转换为 八进制形式 输出
浮点型
%f -- 转换为 小数形式输出,默认保留 6位 小数
%e -- 转换为 科学计数法形式 输出,指数部分 会显示 正负号 如果是一位数 则会补个0
%g -- 以一种 更简洁的方式输出 ,不会将多余0输出
字符型
%c -- 转换为 数值 对应 字符形式 输出
%s -- 以字符串的形式(一串字符)输出
辅助控制符:
#
%#x //将十六进制的前缀 0x 输出
%#o //将八进制的前缀 0 输出
m //数字
输出的数据宽度
m < 数据实际宽度 --- 以实际宽度为准
m > 数据实际宽度 --- 输出结果 默认右对齐 ,前面补空格
也可以补0
-m 左对齐 不能补0
.n n表示一个数字
%.nf //表示保留n位小数
%.ng //保留结果中的 n位 数字
%.ns //保留前n个字符
%ld l 表示 匹配 long int 类型
ll 表示 匹配 long long int 类型
h 表示 half 一半
hh 表示 一半的一半
%Lf //输出 long double类型的数据
注意:
1. 占位符 与 参数 一一对应
参数个数 多余 占位符 ,编译报警,但并不影响运行结果
参数个数 少于 占位符 ,编译报警,多的占位符对应输出 随机值
eg:
printf("hello world!\n");
printf("a = %c\n",a);
printf("a = %d b = %f\n",a,b);
2.格式化输入
scanf的格式:
scanf("格式控制字符串",地址列表);
格式控制字符串:
普通字符
原样输入
占位符
将 键盘输入的数据 转换为 占位符 指定格式
整型
%d -- 转换为 有符号 十进制形式 输出
%u -- 转换为 无符号 十进制形式 输出
%x -- 转换为 十六进制形式 输出
%X -- 转换为 十六进制形式 输出 输出结果中字符 都是大写形式
%o -- 转换为 八进制形式 输出
浮点型
%f -- 转换为 小数形式输出,默认保留 6位 小数
%e -- 转换为 科学计数法形式 输出,指数部分 会显示 正负号 如果是一位数 则会补个0
%g -- 以一种 更简洁的方式输出 ,不会将多余0输出
字符型
%c -- 转换为 数值 对应 字符形式 输出 --- 键盘输入的 都可以被当作字符 %c 都能识别
%s -- 以字符串的形式(一串字符)输出
辅助控制符:
m //指定输入宽度
//浮点数中 小数点 也算一列宽度
.n //输入时,不能指定 精度
%lf //表示 给doule类型变量中输入数据
%f //float类型的变量中输入数据
%Lf //匹配 long double 类型变量
%d //默认是匹配 int类型变量
%ld //long int 类型
%lld //long long int 类型
注意:
1.scanf 读取(匹配)结束的条件
a.空白符
回车
Tab
空格
b.遇到 非法字符
c.达到了指定的输入宽度
2.注意 ,scanf后面,是 地址值