C 练习实例9
题目:要求输出国际象棋棋盘。
程序分析:国际象棋棋盘由64个黑白相间的格子组成,分为8行*8列。用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
如果出现乱码情况请参考本博客【C 练习实例7】的解决方法。
实例
// Created by www.runoob.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;
}
以上实例输出结果为:
C 语言经典100例
红途
471***417@qq.com
参考方案:
#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; }红途
471***417@qq.com
苏伟苏伟
642***051@qq.com
参考地址
在 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; }苏伟苏伟
642***051@qq.com
参考地址
Zayn
267***5830@qq.com
想法:不玩行数和列数的数字游戏,在我的眼中从每行来看只有两种状态不断在切换:
第一行:先白后黑,后白,。。。交替,这个容易实现
第二行:先黑后白,后黑,。。。交替,这个也容易实现
第三行:其实就是第一行的状态重复
列状态的切换简单,行状态专门用一个数组来存储,只有两种状态(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; }Zayn
267***5830@qq.com
小智
222***1705@qq.com
参考方法:
#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"); } }小智
222***1705@qq.com
新一代的痛苦
309***5052@qq.com
参考方法:
#include<stdio.h> int main(void) { for(int i=1;i<9;i++) { if(i%2==0) { printf("■□■□■□■□\n"); }else{ printf("□■□■□■□■\n"); } } }新一代的痛苦
309***5052@qq.com
大宅院里的三表哥
gul***r@outlook.com
Linux环境下可以尝试使用字符'█'(utf-8:9608)替代例程中使用的字符(IBM437:219):
#include <stdio.h> #define LEN 8 int main() { char *blocks[] = {"██", " "}; // utf-8字符:9608,32 int i, j; for(i=0; i<LEN; i++) // 行循环 { for(j=0; j<LEN; j++) // 列循环 printf("%s", blocks[(i+j)%2]); putchar('\n'); } return 0; }程序在终端中的执行结果相较理想。
大宅院里的三表哥
gul***r@outlook.com