一、printf
1、格式字符
%d:十进制有符号int型
%u:十进制无符号int型
%f:以小数形式(6位小数)输出float、double型
%e:以标准指数形式输出float、double型
%c:以字符形式输出单个字符
%hd:输出short 类型
2、格式修饰符
1、 printf("%10f",32.6784728);
域宽为10,而float输出6为小数,需要四舍五入,加上小数点和整数部分一共9位,故左边还需一个空格,即右对齐
如果左对齐,加负号:
printf("%-10f",32.6784728);
如果域宽小于原数,那么按照原数输出
2、printf("%m.nf",32.6784728);
//共输出m个字符,小数点后保留n位。
3、若想输出%,需要打 %%
二、scanf
1、如何分隔多个输入数据
空格、Tab或回车
达到输入位宽
#include<stdio.h>
int main()
{
int a,b;
scanf("%2d%2d",&a,&b);
printf("%d %d",a,b);
}
比如输入123456,因为确定了位宽,所以依然输出a=12,b=34
遇非法字符
#include<stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d %d",a,b);
}
比如输入12 3a,那么输出的是12,3。a为非法字符。若输入123a,那么a=123,b没有输入,为乱码。
2、格式字符
1、%f不能输入指定数据的精度
scanf("%7.2f",&a)//错误,不应该有.2
2、%lf表示输入double 注意:输出时float和double都用%f。
3、*:输入项在读入后不赋给相应的值
scanf("%2d%*2d%2d",&a,&b)
输入123456,那么其中的34赋给了*2d,a=12,b=56。
三、字符的输入与输出
1、转义字符
需要注意的是‘\102’(八进制)表示的是‘B’,‘\x42’(十六进制)表示的也是‘B’ 不存在‘\128’,因为字符一个字节最大占127
2、ACSII码表:
3、getchar()
getchar()是以行缓冲方式输入数据的,即用户在用getchar()从键盘输入字符时,程序并未直接读取用户输入,而是在用户按回车键以后将输入字符先放入到输入缓冲队列中,然后再从缓冲队列中读取字符。
getchar()可以读取回车。
4、scanf读取字符
为了避免用scanf函数以c格式符将前面用户输入的回车符作为有效字符读走。
可以在scanf(“%c”,&a)
前面加getchar()
也可以在%c前面加空格:scanf(“ %c”,&a)