一、題目
【題目描述】
同學們弄來了不多於26種花,每種花有多盆。爲使有限的鮮花擺放得更美觀,同學們決定把花擺成順時針正方形圖案。現在告訴你正方形的邊長N(每盆花的直徑爲一個單位長,1<=N<=1000),編程輸出花所排成的順時針旋轉正方形圖案(同大寫字母代表花)。提醒,每個字母前有一個空格。
【輸入】一個整數N
【輸出】輸出一個邊長爲N的順時針正方形圖案,該圖形由大寫字母組成,圖形第一行第一個字符從A開始,依次爲B,C,D,E……Z,A……
二、代碼
#include<stdio.h>
const int N0=300;
char a[N0][N0]={0};
char b[27]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
struct node{
int row,col;
}dir[4]={{0,1},{1,0},{0,-1},{-1,0}};
int main(){
int n,i,j,d=0;
int row,col,row1,col1;
scanf("%d",&n);
row=1;
col=1;
d=0;
for(i=0;i<n*n;i++){
a[row][col]=b[i%26];
row1=row+dir[d].row;
col1=col+dir[d].col;
if(row1>n||col1>n||row1<1||col1<1||a[row1][col1]!=0){
d=(d+1)%4;
row1=row+dir[d].row;
col1=col+dir[d].col;
}
row=row1;
col=col1;
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%c ",a[i][j]);
}
printf("\n");
}
}