printf()函数的功能:向终端输出若干个任意指定类型的数据;
格式:printf(“格式控制”,参数列表);即由两部分组成:格式控制字符串与参数列表;
常用的格式字符
格式字符 | 说明 | 示例 | 样例 |
d,i | 十进制整数 | int a=567;printf("%d",a); | 567 |
x,X | 十六进制无符号整数 | int a=255;printf("%x",a); | ff |
o | 八进制无符号整数 | int a=65;printf("%o",a); | 101 |
u | 不带符号十进制整数 | int a=567;printf("%u",a); | 567 |
c | 单一字符 | char a=65;printf("%c",a); | A |
s | 字符串 | printf("%s","ABC"); | ABC |
e,E | 指数形式浮点小数 | float a=567.789;printf("%e",a); | 5.677890e+02 |
f | 小数形式浮点小数 | float a=567.789;printf("%f",a); | 567.789000 |
g | e和f中较短一种 | float a=567.789;printf("%g",a); | 567.789 |
%% | 百分号本身 | printf("%%"); | % |
数据类型修饰符(在%与格式字符之间插入)
修饰符 | 功能 |
m | 输出数据域宽,数据长度<m,左补空格,否则按实际输出 |
.n | 对实数,指定小数点后位数(四舍五入) |
对字符串,指定实际输出位数 | |
- | 输出数据在域内左对齐(缺省右对齐) |
+ | 指定在有符号数的正数前显示正号(+) |
0 | 输出数值时,指定左面不使用的空位置自动填0 |
# | 在八进制和十六进制数前显示前导0、0x |
l(L小写) | 在d,o,x,u前,指定输出精度为long型 |
在e,f,g前,指定输出精度为double型 |
scanf()函数功能:等待用户从键盘上输入数据,然后按格式控制的要求对数据进行转换后送到相应的变量地址中去。
scanf()格式:scanf("格式控制”,地址表列);注意常规变量前面加&,数组名前不用加;
scanf()函数在输入过程中如何去除垃圾输入的方法:一般不采用特殊控制手段,scanf输入默认从开始一直读取到默认分隔符,系统默认分隔符有三种:空格(‘ ’)、换行(‘\n’)、制表键(tab);
①针对字符串中存在较多空格,造成输入字符“截断”情况,可以采用以下格式:
scanf("%[^\n]",chen shao an); →系统就会从开始一直读取到第一个换行符,中间的空格也全部读入;
②针对字符输入,与前面数值输入存在垃圾字符的情况,采用以下方式:
scanf("%d%*c%c",&a,&ch); →利用中间的赋值抑制符,将输入的垃圾字符清除掉;
若a与ch的输入是两个scanf分开进行,则在两者中间插入一个getchar(),将垃圾字符清掉;
格式控制字符与printf()相同:d/o/x/c/s/f/e;
数据类型修饰符(在%与格式字符之间插入):
字符 | 说明 |
l(L小写) | 用于输入长整型数据(%ld、%lo、%lx)以及double型数据(%lf、%le) |
h | 用于输入短整型数据(可用%hd、%ho、%hx) |
m | 域宽,指定输入数据所占宽度(列数) |
* | 表示本输入项在读入后不赋给相应的变量(赋值抑制符) |