按照题目来就可以了,注意九个小块的分组。
#include <iostream>
#include <string>
using namespace std;
struct ttt{
string str[4];
}t[4][4];
int main(){
std::ios::sync_with_stdio(false);
int i,j,k,q,flag=1,a,b;
for(i=1;i<=3;i++){
for(j=0;j<3;j++){
for(k=1;k<=3;k++)cin>>t[i][k].str[j];
}
}
cin>>a>>b;a%=3;b%=3;if(a==0)a=3;if(b==0)b=3;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(t[a][b].str[i][j]=='.'){
flag=0;
t[a][b].str[i][j]='!';
}
}
}
for(i=1;i<=3;i++){
for(j=0;j<3;j++){
for(k=1;k<=3;k++){
for(q=0;q<3;q++){
if(t[i][k].str[j][q]=='.'){
if(flag==0)cout<<'.';
else cout<<'!';
}else cout<<t[i][k].str[j][q];
}
if(k<3)cout<<" ";
}
cout<<endl;
}
cout<<endl;
}
}