题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
tips:
176的16进制是B0,219的16进制是DB,0xB0DB是"佰"字的内码,所以输出的就是"佰"了。
主要原因是文件信息的代码页不同,我们所使用的操作系统中文状态下的代码页,要显示扩展的ASCII码需要在437 OEM-美国这个下面显示。
具体修改控制台的默认代码页步骤如下:
- 1.点击运行界面左上角标题栏图标【c:\】,选择默认值一项
- 2.修改默认代码页,936(ANSI/OEM-简体中文GBK)为437 OEM-美国
- 3、关闭后重新运行一下即可
代码实现:
/*输出特殊图案,请在c环境中运行,看一看,Very Beautiful!*/
#include <stdio.h>
int main() {
char a = 176, b = 219;
printf("%c%c%c%c%c\n", b, a, a, a, b);
printf("%c%c%c%c%c\n", a, b, a, b, a);
printf("%c%c%c%c%c\n", a, a, b, a, a);
printf("%c%c%c%c%c\n", a, b, a, b, a);
printf("%c%c%c%c%c\n", b, a, a, a, b);
return 0;
}
如无法修改可参考下列代码:
/*输出特殊图案,请在c环境中运行,看一看,Very Beautiful!*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(void)
{
int i, j;
SetConsoleOutputCP(437);
char a = 176, b = 219;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (i == j || (i + j + 1) == 5)
printf("%c", b);
else
printf("%c%c", a, a);
}
printf("\n");
}
}
实现结果:
(本人觉得very ugly!)
可参考:修改 cmd 控制台默认代码页编码的几种方法【GBK、UTF-8】_「已注销」的博客-CSDN博客_注册表修改了cmd的编码方式
本文介绍了如何在C环境中通过指定字符内码输出特定图案,并讲解了由于代码页不同导致的显示问题。通过修改控制台的默认代码页从936(GBK)更改为437(OEM-美国),可以正确显示扩展ASCII码。提供了两种代码实现,一种是直接修改控制台代码页,另一种是通过预设代码页进行输出。虽然作者认为图案‘VeryUgly!’,但该过程对于理解字符编码和控制台显示机制有一定帮助。



567

被折叠的 条评论
为什么被折叠?



