輸出正方形旋轉擺花

一、題目

【題目描述】
同學們弄來了不多於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");
	}
}

三、輸出結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章