郁闷了很久的两道模拟题终于过去了,听学哥学姐们说了题意,才明白原来一直以来都是把坐标弄错了。悲催啊。
坐标和数学上的X,Y坐标一样,而和平时的坐标不一样。
2996注意一下,白棋的输出顺序是不同行的先输出行数小的,同行的列数小的先输出。
黑棋的输出顺序是不同行的先输出行数大的,同行的列数小的先输出。
2993:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int map[8][8];
int main()
{
int n,i,j;
char str1[100],str2[100];
gets(str1);
gets(str2);
memset(map,0,sizeof(map));
n=strlen(str1);
for(i=0;i<n;i++)
{
if(str1[i]>='0'&&str1[i]<='9')
{
if(str1[i-2]!=',')
{
map[str1[i]-'1'][str1[i-1]-'a']=str1[i-2];
}
else
map[str1[i]-'1'][str1[i-1]-'a']='P';
}
}
n=strlen(str2);
for(i=0;i<n;i++)
{
if(str2[i]>='0'&&str2[i]<='9')
{
if(str2[i-2]!=',')
{
map[str2[i]-'1'][str2[i-1]-'a']=str2[i-2]+'a'-'A';
}
else
map[str2[i]-'1'][str2[i-1]-'a']='p';
}
}
printf("+---+---+---+---+---+---+---+---+\n");
for(i=7;i>=0;i--)
{
printf("|");
for(j=0;j<8;j++)
{
if((j+i)%2==1)
{
printf(".");
if(map[i][j])printf("%c",map[i][j]);
else printf(".");
printf(".");
}
else
{
printf(":");
if(map[i][j])printf("%c",map[i][j]);
else printf(":");
printf(":");
}
printf("|");
}
printf("\n+---+---+---+---+---+---+---+---+\n");
}
}
2996:
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int map[100][100];
int shunb[10]={'K','Q','R','B','N','P'};
int shunw[10]={'k','q','r','b','n','p'};
int main()
{
int i,j;
char str[100];
char a,b,c,d;
gets(str);
memset(map,0,sizeof(map));
for(i=7;i>=0;i--)
{
getchar();
for(j=0;j<=7;j++)
{
scanf("%c%c%c%c",&a,&b,&c,&d);
map[i][j]=b;
}
getchar();
gets(str);
}
int leap=0;
printf("White: ");
int k;
for(k=0;k<6;k++)
{
for(i=0;i<=7;i++)
{
for(j=0;j<=7;j++)
{
if(map[i][j]==shunb[k])
{
if(leap)
printf(",");
if(shunb[k]!='P')
printf("%c",shunb[k]);
printf("%c%c",'a'+j,i+'0'+1);
leap++;
}
}
}
}
printf("\n");
leap=0;
printf("Black: ");
for(k=0;k<6;k++)
{
for(i=7;i>=0;i--)
{
for(j=0;j<=7;j++)
{
if(map[i][j]==shunw[k])
{
if(leap)
printf(",");
if(shunb[k]!='P')
printf("%c",shunb[k]);
printf("%c%c",'a'+j,1+i+'0');
leap++;
}
}
}
}
printf("\n");
return 0;
}