今天看啥  ›  专栏  ›  信息学小屋

520,521,522

信息学小屋  · 简书  ·  · 2020-05-22 11:34

大家都知道
520代表着“我爱你”、
521仍然代表着“我爱你”,

但是,
有多少人知道,
522代表着“一生一世”呢?

一段程序,
讲述了一个故事,
告诉它522,
它回答你1314。

有趣的程序在这👇:

#include <bits/stdc++.h>
using namespace std;

int main () {
    int LOVE;
    scanf ("%x", &LOVE);
    printf ("%d\n", LOVE);
    return 0;
}

5月22日,又称“黑客情人节”。
16进制下的522,转化成10进制时,

我们惊喜地发现,结果恰好是1314,一个有非常美好寓意的数字。
由于10进制和16进制的转化在计算机领域尤为常见,5月22日也因此得名。

上文有趣的程序中,我们巧妙的运用了scanf和printf函数中的不同参数来实现进制间的转化。
那么,输入输出函数之间还有什么“骚操作”呢?
今天,我来向大家介绍一下printf在输出字符串几种不同的输出格式。

1、printf ("%s", str);
原样输出字符串。

2、printf ("%Ns", str);
输出指定长度的字符串,超长不截,不足右对齐。
其中,N为指定的长度。

3、printf ("%-Ns", str);
类似2,区别在于不足时左对齐。

4、printf ("%.N", str);
输出指定长度的字符串,超长截断,不足不补。
其中,N为指定的长度。

5、printf ("%M.N", str);
输出指定长度的字符串,超长截断,不足不补,右对齐。
其中,N为指定长度,M为输出的总长度。

6、printf ("%-M.N", str);
类似5,区别为左对齐。

测试程序如下:

#include <bits/stdc++.h>
using namespace std;

char str[] = "hello, world!";

int main () {
    printf ("%s END\n", str);
    printf ("%6s END\n", str);
    printf ("%20s END\n", str);
    printf ("%-6s END\n", str);
    printf ("%-20s END\n", str);
    printf ("%.6s END\n", str);
    printf ("%.20s END\n", str);
    printf ("%20.6s END\n", str);
    printf ("%-20.6s END\n", str);
    return 0;
}

大家可以自行实验,这里先附上程序运行截图:

运行截图

关于printf输出字符串还有那些“黑科技”,大家可以在评论区与我讨论哦。




原文地址:访问原文地址
快照地址: 访问文章快照