程序【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;
}