按照国际象棋的棋盘格局画棋盘,BLACK从最后一行开始遍历,White从第一行开始遍历,输出按照K->Q->R->B->N->P的顺序输出即可
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
char map[40][40];
int main()
{
int i, j;
for(i = 0;i < 17;i++){
scanf("%s", map[i]);
}
printf("White: ");
bool flag = false;//国王只有一个,找到就直接去找Q
for(i = 15;i >= 1;i-=2){
if(flag) break;
for(j =2;j <= 30; j += 4){
if(map[i][j] == 'K'){
printf("K");
printf("%c%d", 'a'+j/4, 8-i/2);
}
}
}
for(i = 15;i >= 1;i-=2){
for(j = 2;j <= 30;j+=4){
if(map[i][j] =='Q'){
printf(",Q");
printf("%c%d", 'a'+j/4,8-i/2);
}
}
}
for(i = 15;i >= 1;i-=2){
for(j = 2;j <= 30;j+=4){
if(map[i][j] == 'R'){
printf(",R");
printf("%c%d",'a'+j/4,8-i/2);
}
}
}
for(i = 15;i >=1;i-=2){
for(j = 2;j <= 30;j+=4){
if(map[i][j] == 'B'){
printf(",B");
printf("%c%d",'a'+j/4, 8-i/2);
}
}
}
for(i = 15;i>=1;i-=2){
for(j = 2;j <= 30;j+=4){
if(map[i][j] == 'N'){
printf(",N");
printf("%c%d", 'a'+j/4,8-i/2);
}
}
}
for(i = 15;i >=1;i-=2){
for(j =2;j <= 30;j+=4){
if(map[i][j] =='P'){
printf(",%c%d",'a'+j/4,8-i/2);
}
}
}
cout << endl;//换行,开始统计BLACK
printf("Black: ");
flag = false;
for(i = 1;i <=15;i+=2){
if(flag)
break;
for(j = 2;j <=30;j+=4){
if(map[i][j]=='k'){
printf("K%c%d",'a'+j/4,8-i/2);
flag = true;
}
}
}
for(i = 1;i <=15;i+=2){
for(j = 2;j <=30;j+=4){
if(map[i][j] == 'q'){
printf(",Q%c%d",'a'+j/4,8-i/2);
}
}
}
for(i = 1;i <=15;i+=2){
for(j = 2;j <=30;j+=4){
if(map[i][j] == 'r'){
printf(",R%c%d",'a'+j/4,8-i/2);
}
}
}
for(i = 1;i <=15;i+=2){
for(j = 2;j <=30;j+=4){
if(map[i][j] == 'b'){
printf(",B%c%d",'a'+j/4,8-i/2);
}
}
}
for(i = 1;i <=15;i+=2){
for(j = 2;j <=30;j+=4){
if(map[i][j] == 'n'){
printf(",N%c%d",'a'+j/4,8-i/2);
}
}
}
for(i = 1;i <=15;i+=2){
for(j = 2;j <=30;j+=4){
if(map[i][j] == 'p'){
printf(",%c%d",'a'+j/4,8-i/2);
}
}
}
return 0;
}