C语言输出国际象棋棋盘乱码问题

源程序:
 
#include <stdio.h>
int main()
{
    int i,j;
    for(i=0;i<8;i++)
    {  
        for(j=0;j<8;j++)
           if((i+j)%2==0) printf("%c%c",219,219);
        else printf("  ");   //注意是2个空格
          printf("\n");
    }
    return 0;
}

输出的是乱码。为什么呢?

主要原因是文件信息的代码页不同,我们所使用的操作系统中文状态下的代码页,要显示扩展的ASCII码需要在437 OEM-美国这个下面显示,这样就可以显示出你所希望的。具体修改控制台的默认代码页步骤如下:

方法一:
 
1.在开始的运行中输入cmd
2.在cmd的标题栏上点击右键,选择默认值一项
3.修改默认代码页,936(ANSI/OEM-简体中文GBK)为437 OEM-美国
接下来就可以运行你的程序了,记得运行完修改过来。

方法二:

#include <stdio.h>
#include <windows.h>
int main()
{
    int i,j;
    SetConsoleOutputCP(437);//设置代码页 这里已经涉及到控制台编程了,可以先跳过这里 
    for(i=0;i<8;i++)
    {
       for(j=0;j<8;j++)
           if((i+j)%2==0)  printf("%c%c",219,219);
       else
           printf("  ");  //特别是这里要注意 因为上面打出来的是两个半实心,所以这里配//对两个空格 
    printf("\n");
    }


题目:打印楼梯,同时在楼梯上方打印两个笑脸。
 
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2.程序源代码:

#include <stdio.h>
#include <windows.h>
int main()
{
int i,j;
SetConsoleOutputCP(437);
printf("\1\1\n");
        for(i=1;i<11;i++)
        {
    for(j=1;j<=i;j++)
printf("%c%c",219,219);
            printf("\n");
        }
    
return 0;
}
永不止步步 发表于02-09 09:17 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363741个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号