题目描述
把一个个大小差一圈的筐叠上去,是的从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
输入:
输入是一个个三元组,分别是:外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符。
输出:
输出叠在一起的筐图案,中心花色与外框花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应该有一行间隔。
样例输入:
11 B A
5 @ W
样例输出:
AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
AAAAAAAAA
@@@
@WWW@
@W@W@
@WWW@
@@@
代码:
#include <stdio.h>
#include <stdlib.h>
char matrix[80][80];
int main(){
int size;
char x;
char y;
int lt,rb;
int flag;
int firstcase = 1;
while(scanf("%d %c %c",&size,&x,&y) != EOF){
lt = 0;
rb = size-1;
flag = size;
if(flag/2%2==0) flag = 1;
else flag = 0;
if(firstcase == 1){
firstcase = 0;
}else{
printf("\n");
}
for(int i = 0;i<=size/2;i++){
for(int j = lt;j<size-i;j++){
if(flag%2 == 0){
matrix[lt][j] = y;
matrix[j][lt] = y;
matrix[rb][j] = y;
matrix[j][rb] = y;
}
else{
matrix[lt][j] = x;
matrix[j][lt] = x;
matrix[rb][j] = x;
matrix[j][rb] = x;
}
}
lt++;
rb--;
flag++;
}
matrix[0][0] = ' ';
matrix[0][size-1] = ' ';
matrix[size-1][0] = ' ';
matrix[size-1][size-1] = ' ';
for(int i = 0;i<size;i++){
for(int j = 0;j<size;j++){
printf("%c",matrix[i][j]);
}
printf("\n");
}
}
return 0;
}
测试:
[img]https://vkceyugu.cdn.bspapp.com/VKCEYUGU-df9040b6-66ef-461b-92a5-f74c4e71766f/ae331033-3db4-4238-a14c-0d686627731c.png[/img]