------Java培训、Android培训、iOS培训、.Net培训--------
一、printf函数介绍
printf函数是一个标准库函数,能够以精确的格式输出程序运算的结果
1.格式字符串
是由格式字符(包括:转换说明符,标志,域宽,精度)和普通字符组成,转换说明符和百分号一起使用,用来说明输出数据的数据类型,标志,长度和精度
2.输出项列表
可以是常量,变量和表达式,也可以没有输出项,这些输出项必须与格式控制字符串在类型和数量上严格一致,否则结果将不可预测,当有多个输出项时,各个输出项之间用逗号分隔
3.格式控制说明符使用说明
a. % :表示格式说明的起始符号,不可缺少
b. - :有-表示左对齐输出(右侧补空格),如省略则表示右对齐输出(左侧补空格)
c. 0 :有0表示指定空位填0,如省略表示指定空位补填
d. m,n: m指域宽,即对应的输出项在输出设备上所占的字符数,N指精度,用于说明输出的实型数的小数位数,对数值型的来说,未指定n时,隐含的精度位n=6
e. l或h : l对整型指long型,对实型指double型; h用于将整型的格式字符修正位short型
4.例子
float a = 123.322;
1) printf("a = %f",a); //默认小数位显示6位,因此打印结果位a = 123.322000
2) printf("a = %.2f",a); //指定显示小数点后两位,因此打印结果位 a = 123.32
5.部分用法
%d 输出一个十进制的整数
%f 输出一个实数类型的数据(不能输出整型数据)
%m.nf 表示总的位数,n表示小数点后的位数
%c 输出一个字符
%s 输出一个字符串
%o 把一个数以八进制的形式输出
%x 把一个数以十六进制的形式输出
%p 输出某一个变量的地址
6.注意:
printf(”%-5.2fhh“,23.2);//打印结果为23.2 hh
7.%f输出精度的问题
float pi = 3.1415926f;
//默认输出6位小数
printf("a = %f\n");//结果四舍五入了:a = 3.141593
//打印7位小数
printf("a = %.7f",a); // a = 3.1415925
注意:%f打印出来后,精度小数点后6位,有效数字是7位
二、printf使用注意事项
1. %md问题
printf("a=%3d",12);//结果a= 12,而不是a=12,用空格补齐
注意:
1) m>0 从左侧补齐,m<0从右侧补齐
2) 如果数字的位数大于位宽,则按照实际的位数输出
如printf("%3d",1234);//结果1234
2. %0md使用时注意
1)%0md表示不足位数用0补齐
如printf("%04d",12);//0012
3. printf("\\");//打印一个\
4. printf("%%");//打印一个%
三、scanf函数的介绍及使用
scanf函数是阻塞式函数,包含在标准输入输出头文件”stdio.h“中,用于接收键盘输入的内容
格式:scanf("格式控制字符串",输入项地址列表)
1.格式控制字符串:
由格式控制符和普通字符组成,格式控制符和百分号一起使用,用来说明输入数据的数据类型(格式字符)
2.输入项地址列表
c语言中,一个变量的地址可以通过地址运算符&得到
3.常见的格式字符
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
i 输入有符号或者无符号十进制、八进制、十六进制整数
u 输入无符号十进制整数
f、e或E、g或G 输入小数形式或指数形式的浮点数
c 输入字符
s 输入字符串
d 输入十进制整数
四、scanf使用注意事项
1.scanf中不能用%m.nf这种控制格式
scanf("%3.2f",&a);//报错
2.scanf中可以用%mf
scanf("%3f",&a);//输入1233
printf("%.0f",a);//输出结果位123,指接受了前三位
3. 如果在输入单个值时,输入了多个空格、回车、Tab都会被系统忽略。例如在输入值23前输入多个空格、Tab、回车时都会被忽略,最终输入23后再回车才结束输入
4. scanf函数遇到回车的时候,会结束执行
5. scanf("%d%d",&a,&b);//要求在键盘输入时用空格或者回车、Tab隔开
6. scanf("%d%d",&a,&b);//如果此时通过键盘输入了23,34
name打印时printf("%d%d",a,b);结果是23,0(假设b之前的值是0)
正确的做法scanf("%d,%d",&a,&b);这样就可以输入23,34了
7.混合输入scanf("%d%c%d",&a,&ch,&b);//如果此时通过键盘输入了23 b 34
printf("%d%c%d",a,b);结果是23 0(假设b之前的值是0)
8. * 号的使用:忽略一个输入
scanf("%d%*d%d",&a,&b);//此时输入项只有两个也不会有警告,输入1 2 3后,printf打印结果是:1 3
9.scanf中不要使用\n,如果一不小心使用了,可以在输入值后,随意输入内容再按空格键,或者输入值后直接输入\n再按空格键
五、.scanf函数运行原理
当用户输入内容后,用户输入的内容会被放入输入缓存区,然后scanf函数会根据格式控制字符串从输入缓冲区依次读取想要的内容
1)如果从缓冲区中取到的内容和我们要求的格式一致,则把值存放到变量中,
2)如果不一致,则不修改变量的值
3) 如果输入缓存区中还有内容,则scanf不会提示再次输入