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);
}

C语言 格式化输入/输出_c语言

修饰符 含义
数字 最小字段宽度
如果该字段不能容纳待打印的数字或字符串,系统会使用更宽的字段
数字 精度
对于%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);
}

C语言 格式化输入/输出_十六进制_02

如果输入格式串中有空格 则输入值时要用空格分开
(其他字符一样 如逗号)

#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);
}

C语言 格式化输入/输出_字符串_03
C语言 格式化输入/输出_整型_04
转换说明-修饰符与printf的一样