%md在printf语句和scanf语句中的区别

一、%md在printf语句

        输出的宽为m位(当我们所给的m值<原本输出的实际宽度,按照原来的宽度输出),也就是说printf语句最少输出宽度也是它原本的宽度,宽度只能大,不能小。

#include <stdio.h>
int main()
{
    int a = 1234;
    printf("1d在打印中表示 %1d\n",a);
    printf("2d在打印中表示 %2d\n",a);
    printf("3d在打印中表示 %3d\n",a);
    printf("4d在打印中表示 %4d\n",a);
    printf("5d在打印中表示 %5d\n",a);
    printf("6d在打印中表示 %6d\n",a);
    return 0;
}

        我们看图中进一步理解,我们给a赋值为1234,那么a的宽度为4,所以在printf输出的时候至少要输出4位。如图,我们令m=1,2,3时候,因为a最开始的宽度就是4,所以只要小于原本宽度的m值,一律默认为原本宽度4。当m=5时,我们要求输出的宽度为5,但是a只有四位1234,这时候就要用空格在前面补一位,保证宽度。

        其实我们不难发现,printf输出的宽度必须是在它原本宽度上增加或者不变。

当我们想用0来填补空格时候就可以在%和md中间加0,%0md,如图:

#include <stdio.h>
int main()
{
    int a = 1234;
    printf("%06d\n",a);
    return 0;
}

        在%和6d中间加了个0时候,前面自动补齐0;

%-md就是左对齐,右侧用空格填充,不会填0

二、%md在scanf语句

        %md表示读入的数为m位,超过m位,只读m位,不足m位则按实际位数读入。

#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%1d",&a);
    printf("%d\n",a);
    return 0;
}

        如图,我们输入了1234四位,但是我们只想读1位,所以我们令m=1,读1234的1位,也就是1。我们都是从左往右读,以此类推,m=2就是12,m=3就是123。

但是当我们读5位会是什么样的结果呢?我们看下图

#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%5d",&a);
    printf("%d\n",a);
    return 0;
}

我们可以发现,当m=5的时候,输出为1234,所以可以得出结论,当m大于我们实际输入的位数,按实际位数读入并输出。 (也就是说,我们的m就是我们想读到的实际输入位数的多少位,位数从左往右数,最左边是第一位,以此类推。)

不可以在scanf中写-

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

实习秋招必胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值