输出正方形旋转摆花

这里写目录标题

  • 一、题目
  • 二、代码
  • 三、输出结果

一、题目

【题目描述】
同学们弄来了不多于26种花,每种花有多盆。为使有限的鲜花摆放得更美观,同学们决定把花摆成顺时针正方形图案。现在告诉你正方形的边长N(每盆花的直径为一个单位长,1<=N<=1000),编程输出花所排成的顺时针旋转正方形图案(同大写字母代表花)。提醒,每个字母前有一个空格。
【输入】一个整数N
【输出】输出一个边长为N的顺时针正方形图案,该图形由大写字母组成,图形第一行第一个字符从A开始,依次为B,C,D,E……Z,A……

二、代码

#include
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");
	}
}

三、输出结果

输出正方形旋转摆花_第1张图片

你可能感兴趣的:(C/C++,算法题整理,算法,c算法)