C语言经典例题100道

程序【9】

题目:要求输出国际象棋棋盘。

程序分析:国际象棋棋盘由64个黑白相间的格子组成,分为8行*8列。用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格

对于这题来讲,还是老思路,我们要先分析题目,了解国际象棋棋盘的规律,在脑子里构造出一个程序框图,最后根据程序框图,一点一点的敲出代码。

首先,我们先拿出一张国际象棋的棋盘来看:

首先呢,从这张国际象棋的棋盘中,我们不难看出,该棋盘是一个8x8的正方形棋盘,这样的话,我们就可以用i变量表示行数,用j变量表示列数,来打印出整个棋盘的轮廓。当然,变量i,j可以随意变换,根据自己的习惯和喜爱。

其次,当我们把整个棋盘的轮廓构思成功后,我们再看棋盘里的黑色小框和白色小框,因为我们用到了行数和列数变量,所以,在这里,我给棋盘最左上角的白色小框一个坐标,行数为1列数为1(1,1),然后后面小框依次排序,这样我们就可以很轻松的看出,白色小框的行数和列数的和是偶数这一规律。判断一个数是不是偶数,就很简单了,只要让其对2取模的值为0,就说明这个数是偶数,在程序中也就是((i+j)%2)==0;

综上所述,我们就可以根据思维一点一点的编写自己想要的程序。

注意事项:

在编写这种1图案程序的时候,我们要首先了解,在c语言里,白色框框和黑色框框的Ascll值是多少,因为不同的代码页所对应元素的Ascll值都是不一样的,所以,我们要明确好自己所用的代码页,了解所对应的Ascll值,如果混淆就会出现下面这种中文乱码的情况:

灰常让人无语!!!所以,我们要提前了解好这些知识。

友情提示:要是想知道,中文乱码的原因和调整的方法,请参考尘泪bit的博客-输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

这里给大家一个Ascll表供大家参考:

根据查阅我们可以了解到,在

936 GBK 编码下的白色格子(两个字符必须一起使用)是161,246

437 OEM 编码下的白色格子(字符可以单个显示)是219,219

最后,我们话不多说,直接上代码!!!

437 OEM:

#include<stdio.h>
 
int main()
{
    int i,j;
    for(i=1;i<=8;i++)
    {
        for(j=1;j<=8;j++)
            if((i+j)%2==0)
                printf("%c%c",219,219);
            else printf("  ");
        printf("\n");
    }
    return 0;
}

 

 936 GBK:

 

#include<stdio.h>
//要求输出国际象棋棋盘。
int main()
{
    int i = 0;//声明定义国际象棋的行
    int j = 0;//声明定义国际象棋的列
    for (i = 1; i <= 8; i++){
        for (j = 1; j <= 8; j++) {
            if ((i + j) % 2 == 0)//白色格子对应的行列之和都为偶数
                //让能完全除以2的时候,将会打印白色格子
            {
            //printf("%c%c", 219, 219);  //437 OEM 编码下的白色格子(字符可以单个显示)
            printf("%c%c", 161, 246); //936 GBK 编码下的白色格子(两个字符必须一起使用)
        }
            else {
            printf("  ");//此时打印黑色格子
            
            }
        }
printf("\n");
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值