大家都知道
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输出字符串还有那些“黑科技”,大家可以在评论区与我讨论哦。
网友评论