http://poj.org/problem?id=2993
模拟
#include<stdio.h>
#include<string.h>
#define Max 100
char map[17][34] = { "+---+---+---+---+---+---+---+---+",//初始化棋盘
"|...|:::|...|:::|...|:::|...|:::|",
"+---+---+---+---+---+---+---+---+",
"|:::|...|:::|...|:::|...|:::|...|",
"+---+---+---+---+---+---+---+---+",
"|...|:::|...|:::|...|:::|...|:::|",
"+---+---+---+---+---+---+---+---+",
"|:::|...|:::|...|:::|...|:::|...|",
"+---+---+---+---+---+---+---+---+",
"|...|:::|...|:::|...|:::|...|:::|",
"+---+---+---+---+---+---+---+---+",
"|:::|...|:::|...|:::|...|:::|...|",
"+---+---+---+---+---+---+---+---+",
"|...|:::|...|:::|...|:::|...|:::|",
"+---+---+---+---+---+---+---+---+",
"|:::|...|:::|...|:::|...|:::|...|",
"+---+---+---+---+---+---+---+---+" };
int find_r(char n)//找出棋子在棋盘上所对应的横坐标
{
int r = n -'0';
r = r*2-1;
return 16-r;
}
int find_c(char n)//找出棋子在棋盘上所对应的纵坐标
{
int c = n - 96;
return 4 * c - 2;
}
int main()
{
int i, j;
char str[Max], r, c;
gets(str);//White[]
for(i = 7; str[i] >= 'A' && str[i] <= 'Z'; i += 4)//处理白棋K, Q, R, B和N。
{
r = find_r(str[i + 2]);
c = find_c(str[i + 1]);
map[r][c] = str[i];
}
for(j = i; str[j] >= 'a' && str[j] <= 'z'; j += 3)//处理白棋的p。
{
r = find_r(str[j + 1]);
c = find_c(str[j]);
map[r][c] = 'P';
}
gets(str);//Black[]
for(i = 7; str[i] >= 'A' && str[i] <= 'Z'; i += 4)//处理黑棋K, Q, R, B和N。
{
r = find_r(str[i + 2]);
c = find_c(str[i + 1]);
map[r][c] = str[i] + 32;
}
for(j = i; str[j] >= 'a' && str[j] <= 'z'; j += 3)//处理黑棋的p。
{
r = find_r(str[j + 1]);
c = find_c(str[j]);
map[r][c] = 'p';
}
for(i = 0; i < 17; i ++)
{
for(j = 0; j < 33; j ++)
printf("%c",map[i][j]);
printf("\n");
}
return 0;
} </span>