程序【7】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
程序分析:字符共有256个。不同字符,图形不一样。
注意:!!!该程序非常特殊,它需要使用特殊的代码页 437 OEM-美国
而我们正常使用的代码页都是 936(ANSI/OEM-简体中文GBK)
在这里我要给读者一个特别提醒,不是代码错了,而是这个程序需要特殊的代码页,相信有很多人都像我一样,把这个代码来回改个十几次,最后受不了了,查了一下,发现代码压根没毛病,好气!!!emmmmm。。。
如果不更改,仍然使用936(ANSI/OEM-简体中文GBK)的代码页,就会出现中文乱码,很气
看看这啥东西呀,555~
具体呢是因为:
176的16进制是B0,219的16进制是DB,0xB0DB是"佰"字的内码,所以输出的就是"佰"了。主要原因是文件信息的代码页不同,我们所使用的操作系统中文状态下的代码页,要显示扩展的ASCII码需要在437 OEM-美国这个下面显示,这样就可以显示出你所希望的。
对于不同的编译器更改代码页的方式也不一样!!!
首先呢,VC6.0的解决方法是:
- 1.点击运行界面左上角标题栏图标【c:\】,选择默认值一项
- 2.修改默认代码页,936(ANSI/OEM-简体中文GBK)为437 OEM-美国
- 3、关闭后重新运行一下即可
然后是VS的解决方案:
小编只知道这么多,至于其他编译器,就像吃饭一样,汤换碗不换,只要找到可以进行修改代码页就可以了。自行摸索获得的成就感会更大!!!
最后呢,话不多说,直接上代码
#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;
}
得出来的图案也是非常有意思的: