一. 格式化输出 printf
占位符:
%d 十进制整数打印 int
%lld 十进制整数打印 long long int
%f 浮点数打印 包括double和float
%c 字符打印
%s 字符串打印
1.1 限制宽度
printf() 允许限定占位符的最小宽度
#include <stdio.h>
int main()
{
int number;
number = 10;
printf("%4d", number);//输出结果是“ 10”;
}
上面示例中,%4d 表示这个占位符的宽度至少为4位。如果不满4位,对应的值的前面会添加空格。
输出的值默认是右对齐,即输出内容前面会有空格;
如果希望改成左对齐,在输出内容后面添加空格,可以在占位符的% 的后面插入一个- 号。
例如:
#include <stdio.h>
int main()
{
int number;
number = 10;
printf("%-4d", number);//输出结果是“10 ”;
}
有的时候我们在限定占位符宽度的时候,会想用0补位,而不是用上文的空格补位,那么我们需要在4d前加上一个0,如下文:
#include <stdio.h>
int main()
{
int number;
number = 10;
printf("%04d", number);//输出结果是“0010”;
}
下面讨论对小数的宽度控制。
#include <stdio.h>
int main()
{
printf("%12f\n", 123.45);// 输出 " 123.450000"
return 0;
}
上面示例中, %12f 表示输出的浮点数最少要占据12位。由于小数的默认显示精度是小数点后6位,所以123.45 输出结果的头部会添加2个空格。
小数点也占一位。
1.2 打印显示正负号
默认情况下, printf() 不对正数显示 + 号,只对负数显示 - 号。如果想让正数也输出+ 号,可
以在占位符的% 后面加一个+ 。如下文:
#include <stdio.h>
int main()
{
int number;
number = 10;
printf("%d\n", number);//输出结果是“10”;
printf("%+d\n", number);//输出结果是“+10”;
}
上面示例中, %+d 可以确保输出的数值,总是带有正负号。
1.3 限定小数位数
输出小数时,有时希望限定小数的位数。举例来说,希望小数点后面只保留三位,占位符可以写成%.3f 。
#include <stdio.h>
int main()
{
double number;
number = 10.3123124;
printf("%.3f\n", number);//输出结果是“10.312”;
printf("%.4f", number);//输出结果是“10.3123”;
}
这种写法可以与限定宽度占位符,结合使用。
#include <stdio.h>
int main()
{
printf("%6.2f\n", 0.5);// 输出为 " 0.50"
return 0;
}
%6.2f 表示输出字符串最小宽度为6,小数位数为2。所以,输出字符串的头部有两个
空格。
1.4 输出部分字符串
%s 占位符用来输出字符串,默认是全部输出。如果只想输出开头的部分,可以用 %.[m]s 指定输出的长度,其中[m] 代表一个数字,表示所要输出的长度。
注意空格也算一个字符。
#include <stdio.h>
int main()
{
printf("%.7s\n", "hello world");// 输出 "hello w"
return 0;
}
二.格式化输入 scanf
scanf的占位符和printf相似,但有一定的不同。
%d 整数
%f float
%lf double(重点,浮点数输入需要区分double和float)
%s 字符串
scanf("%d",&a);
变量前面必须加上& 运算符(指针变量除外),因为scanf() 传递的不是值,而是地址,
即将变量i 的地址指向用户输入的值。
三.字符输入函数getchar()
getchar( )功能是输入一个字符。
一般调用格式:ch=getchar( );//空格也会被读取;
四.字符输出函数putchar()
putchar( )可以输出一个字符;
一般的调用格式:putchar(ch);
由于getchar()和putchar()的输入输出只能是一个字符,所以想要读取和输出字符串需要通过循环来实现。