printf()&scanf()
printf()函数
转换说明 | 输出 |
---|---|
%a | 浮点数、十六进制数和p计数法(c99/c11) |
%A | 浮点数、十六进制数和p计数法(c99/c11) |
%c | 单个字符 |
%d | 有符号十进制整数 |
%e | 浮点数,e计数法 |
%E | 浮点数,e计数法 |
%f | 浮点数,十进制计数法 |
%g | 根据值的不同,自动选择%f或%e %e格式用于指数小于-4或者大于或等于精度时 |
%G | 根据值的不同,自动选择%f或%e %e格式用于指数小于-4或者大于或等于精度时 |
%i | 有符号十进制整数(与%d相同) |
%o | 无符号八进制整数 |
%p | 指针 |
%s | 字符串 |
%u | 无符号十进制整数 |
%x | 无符号十六进制整数,使用十六进制数of |
%X | 无符号十六进制整数,使用十六进制数OF |
%% | 打印一个百分号 |
print()函数的格式
print(格式字符串,待打印项1,待打印项2,.....)
printf()的转换说明修饰符
printf()中的标记
标记 | 含义 |
---|---|
- | 待打印项左对齐 |
+ | 有符号值若为正,则在值前面显示加号;若为负,则在值前面显示负号 |
空格 | 有符号值若为正,则在值前面显示前导空格(不显示如何符号);若为负,则在值前面显示负号+标记并覆盖空格 |
# | 把结果转换为另一种形式。 如果是%o格式,则以0开始; 如果是%x或%X格式,则以0x或0X开始; 对于所有的浮点格式,#保证了即使后面没有任何数字,也打印一个小数点字符。 对于%g和%G格式,#防止结果后面的0被删除 |
0 | 对于数值格式,用前导0代替空格填充字段宽度。对于整数格式,如果出现-标记或指定精度,则忽略该标记 |
#include <stdio.h>
#define pi 3.1415
int main()
{
printf("*%f*\n",pi);
printf("*%e*\n",pi);
printf("*%4.2f*\n",pi);
printf("*%3.1f*\n",pi);
printf("*%10.3f*\n",pi);
printf("*%10.3E*\n",pi);
printf("*%+4.2f*\n",pi);
printf("*%010.2f*\n",pi);
}
修饰符 | 含义 |
---|---|
数字 | 最小字段宽度 如果该字段不能容纳待打印的数字或字符串,系统会使用更宽的字段 |
数字 | 精度 对于%e、%E和%f转换,表示小数点右边数字的位数 对于%g和%G转换,表示有效数字最大位数 对于%s转换,表示待打印字符的最大数量 对于整型转换,表示待打印数字的最小位数 如有必要,使用前导0来达到这个位数 只使用.表示其后跟随一个0,所以%.f和%.0f相同 |
h | 和整型转换说明一起使用,表示short int 或 unsigned short int 类型的值 |
hh | 和整型转换说明一起使用,表示signed char 或 unsigned char 类型的值 |
j | 和整型转换说明一起使用,表示intmax_t 或 uintmax_t 类型的值 |
l | 和整型转换说明一起使用,表示long int或 unsigned long int 类型的值 |
ll | 和整型转换说明一起使用,表示long long int 或 unsigned long long类型的值 |
L | 和浮点转换说明一起使用,表示long double类型的值 |
t | 和整型转换说明一起使用,表示ptrdiff_t类型的值 ptrdiff_t是两个指针差值的类型 |
z | 和整型转换说明一起使用,表示size_t类型的值 size_t是sizeof返回的类型 |
scanf()
·如果用scanf()读取基本变量类型的值,在变量名前加上一个&
如果用scanf()把字符串读入字符数组中,不要使用&。
#include <stdio.h>
int main()
{
int a;
float b;
char s[10];
scanf("%d",&a);
scanf("%f",&b);
scanf("%s",s);
printf("%d %.2f %s",a,b,s);
}
如果输入格式串中有空格 则输入值时要用空格分开
(其他字符一样 如逗号)
#include <stdio.h>
int main()
{
int a;
float b;
char s[10];
scanf("%d %f %s",&a,&b,s);
printf("%d %.2f %s",a,b,s);
}
转换说明-修饰符与printf的一样