printf

printf转换说明

转换说明 输出
%a,%A: 浮点数,十六进制数与p记数法(P记数法)

%c: 单个字符

%d: 有符号十进制整数

%e,%E: 浮点数,e记数法(E记数法)

%f: 浮点数,十进制记数法

%g,%G: 自动选择%e(%E),%f。%e(%E)格式用于指数小于-4或者大于等于精度时

%i: 与%d相同

%o: 无符号八进制整数

%p: 指针

%s: 字符串

%u: 无符号十进制整数

%x,%X: 无符号十六进制整数,适用十六进制数0f(0F)

%%: 打印一个%

%i和%d的相同之处可以追溯到C语言的历史。最初,%d用于打印有符号十进制整数,而%i用于打印无符号或有符号的十进制整数。然而,从实际应用角度来看,很少需要打印无符号十进制整数。因此,在实践中,%d逐渐成为打印无符号和有符号十进制整数的通用转换说明符,而%i则被视为%d的一个别名。

printf修饰符

修饰符 含义
标记: 共+,-,空格,#,0五种,可以一起使用或者不使用

数字: 最小字段宽度超出的话系统会自动使用更大的宽度

.数字: 精度

h,hh,j,l,ll,L,t,z: 和转换说明一起使用

*: 抑制字符

printf中*用法

int main ()
{
    int a,b;
    int n=256;
    double w=242.5;
    scanf(“%d”,&a);
    printf(“n=%d\n”,a,n);
    scanf(“%d %d”,&a,&b);
    printf(“w=%
.*lf\n”,a,b,w);
    return 0;
}

输入

6//意思宽度为6

输出

n=空3格256

输入

8 3//意思宽度为8,保留三位小数

输出

w=空一格242.500

printf中的标记

标记 含义
-: 左对齐,从左侧开始打印

+: 用于有符号值显示符号,例“%+6.2f”

空格: 有符号为正则不显示符号,为负则显示处负号

#: 把结果转换为另一种形式。如%o则以0开始,%x,%X从0x,0X开始,对于所有浮点格式,#保证了即使后面没有任何数字,也打印一个小数点字符。对于%g,%G格式,防止后面的0被删除

0: 对于数值格式,用前导0代替空格填补字段宽度。对于整数格式,如果出现-标记或者指定精度,则忽略该标记

printf多种打印方式

1

    printf(“1”);
    printf(“23\n”);    

2

   printf(“1
   23\n”);

3

   printf(“1”
   “23\n”);

scanf

scanf的转换说明

转换说明 含义

%c: 把输入解释成字符

%d,%i: 把输入解释成有符号十进制整数

%e,%E,%f,%F,%g,%G,%a,%A: 把输入解释成浮点数

%o: 把输入解释成有符号八进制整数

%p: 把输入解释成指针

%s: 把输入解释成字符串

%u: 把输入解释成无符号十进制整数

%X,%x: 把输入解释成有符号十六进制整数

scanf中修饰符

修饰符 含义
*: 抑制字符

数字: 最大字段宽度,例如%5s

hh,ll,h,l,L: 类型读取,例如%hd

z,j,t: j表示intmax_t或者uintmax_t类型,z表示sizeof返回类型,t表示两个指针差值的类型

scanf中抑制字符使用

#include<stdio.h>
int main ()
{
    int n;
    scanf(“%*d %*d %d”,&n);
    printf(“%d\n”,n);
    return 0;
}

输入

6 7 8

输出

8

常用scanf输入扩展

1.接受空格

    char ch[100];
    scanf(“%[^\n]”,ch);
    puts(ch);

2.scanf输入格式要对应

    int a,b,c;
    scanf(“%d %d %d”,&a,&b,&c);

3.限定宽度

   int a,b,c;
   scanf(“%4d%4d%4d”,&a,&b,&c);
   printf(“%d %d %d\n”,a,b,c);

4.屏蔽数据类型

%*d屏蔽数字,%*c屏蔽字符 
    char arr[100]; 
   scanf(“%*d%s”,arr);//先输数字再输字符 
   printf(“%s”,arr);

5.精确屏蔽

    char ch[100];
    scanf(“%[1-9]”,ch);//先输数字1-9再输其他,屏蔽其他
    scanf(“%[^1-9]”,ch);//先输其他再输数字,屏蔽数字1-9
    puts(ch);

6.屏蔽一个区间内的

    char ch;
    scanf(“%*[a-zA-Z]%s”,ch);//先输字母再输其他,屏蔽前面的字母
    puts(ch);
    printf(“%c\n”,ch);