C 练习实例9
题目:要求输出国际象棋棋盘。
程序分析:国际象棋棋盘由64个黑白相间的格子组成,分为8行*8列。用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
如果出现乱码情况请参考本博客【C 练习实例7】的解决方法。
实例
// Created by www.facesoho.com on 15/11/9.
// Copyright © 2015年 小鸟启蒙. All rights reserved.
//
#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(" ");
printf("\n");
}
return 0;
}
以上实例输出结果为:


文人墨客
参考方法:
#include<stdio.h> int main(void) { for(int i=1;i<9;i++) { if(i%2==0) { printf("■□■□■□■□\n"); }else{ printf("□■□■□■□■\n"); } } }文人墨客
参考方法:
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(void) { SetConsoleOutputCP(437); int a=219; for(int i=0;i<8;i++) { for(int j=0;j<4;j++) { if(i%2==0) printf("%c ",a); else printf(" %c",a); } printf("\n"); } }文人墨客
想法:不玩行数和列数的数字游戏,在我的眼中从每行来看只有两种状态不断在切换:
第一行:先白后黑,后白,。。。交替,这个容易实现
第二行:先黑后白,后黑,。。。交替,这个也容易实现
第三行:其实就是第一行的状态重复
列状态的切换简单,行状态专门用一个数组来存储,只有两种状态(0,1)
参考代码:
#include<stdio.h> void f7(){ int i=0,j=0; //行输出只有两种状态,不断交替 int position[8]={1,0,1,0,1,0,1,0}; for(i=0;i<8;i++){ if(position[i]==1){ for(j=0;j<4;j++){ printf("%c%c",0xa8,0x80);//输出黑色方格,在黑色DOS窗口下是一个白色的方格 printf(" "); //输出2个空格,在黑色DOS窗口下像一个黑色方格 } }else{ for(j=0;j<4;j++){ printf(" "); printf("%c%c",0xa8,0x80); } } printf("\n"); } } int main(){ f7(); return 0; }文人墨客
在 VS2017 环境下生成棋盘:
#include<stdio.h> #include<stdlib.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",0xa8,0x80); } else { printf(" "); } } printf("\n"); } system("pause"); return 0; }文人墨客
参考方案:
#include<stdio.h> int main() { int i,j; for(i=0;i<8;i++){ if(i % 2){ printf("%c%c %c%c %c%c %c%c \n", 219, 219, 219, 219, 219, 219, 219, 219); }else{ printf(" %c%c %c%c %c%c %c%c\n", 219, 219, 219, 219, 219, 219, 219, 219); } } return 0; }