布告,布告!
应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。
那废话不多说,我们来说要求的图形
AAAAA
ABBBA
ABCBA
ABBBA
AAAAA
就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。
输入格式:
一行,一个整数,即图形的层数
输出格式:
如上述图形
输入样例:
3
输出样例:
AAAAA
ABBBA
ABCBA
ABBBA
AAAAA
思路:
把图形分成几个正方形外圈,一个square就是一个外圈然后用递归直到n的值变为2或1时终止,其中n视为正方形的边长,所以每经过一次square函数,边长变短2,n的值减小2.
#include <stdio.h>
void square(char a[][100],int n,int f)
{
int i,j;
if(f==0) a[f][f]='A';
for(i=f+1;i<f+n;i++)//第一排
a[f][i]=a[f][f];
for(j=f+1;j<f+n;j++)//第n竖
a[j][f+n-1]=a[f][f];
for(i=n+f-2;i>=f;i--)//第n排
a[f+n-1][i]=a[f][f];
for(j=f+n-2;j>f;j--)//第一竖
a[j][f]=a[f][f];
if(n==1||n==0) return;
else
{
a[f+1][f+1]=a[f][f]+1;
square(a,n-2,f+1);
}
}
int main()
{
int m,n,i,j,f=0;
char a[100][100];
scanf ("%d",&m);
n=2*m-1;
square(a,n,f);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%c",a[i][j]);
printf("\n");
}
}