题解 | #叠筐#
叠筐
http://www.nowcoder.com/practice/2d6505bf0d38479c9bff66e10fe39a5c
#include <iostream>
#include <cstdio>
using namespace std;
char matrix[80][80];//缓冲数组
int main(){
int n;
char a,b;
bool firstCase = true; // 首个筐叠前不空行
while(scanf("%d %c %c",&n,&a,&b) != EOF){ //循环读取输入值
// 空行
if(firstCase == true){
firstCase = false;
}else{
printf("\n");
}
// 数组赋值
for(int i = 0;i<=n/2;i++){ //i行、i列、j行、j列围成的圈值相同
int j = n-1-i;
//当前圈为哪个字符
char c;
if((n/2-i)%2 == 0){
c = a;
}else{
c = b;
}
//当前圈赋值
for(int k = i;k<=j;k++){
matrix[i][k] = c;
matrix[k][i] = c;
matrix[j][k] = c;
matrix[k][j] = c;
}
}
// 修改最外筐的角
if(n!=1){ // n等于1修改后为空(n为奇数)
matrix[0][0] = ' ';
matrix[0][n-1] = ' ';
matrix[n-1][0] = ' ';
matrix[n-1][n-1] = ' ';
}
// 输出数组
for(int i =0;i<n;i++){
for(int j=0;j<n;j++){
printf("%c",matrix[i][j]);
}
printf("\n");
}
}
return 0;
}