之前有了解过回文输出,不过具体算法没印象了
#include<stdio.h>
int print_2(int n,char c){ //反向输出字母
if(n==1)
printf("%c",c);
else
{
print_2(n-1,c+1);
printf("%c",c);
}
}
int print_1(int n,char c){ //正向输出字母
printf("%c",c);
if(n!=1)
print_1(n-1,c+1);
}
int space(int r){
int j;
for(j=r;j>=0;j--){
printf(" ");
}
}
int main(){
int x,n,j,i;
printf("请输入行数(1-26):");
scanf("%d",&x);
if(x==1)printf("A");
for(n=3,i=x;i>1;n+=2,i--){
if(x==i){space(x+i+1);printf("A\n");}//打印第一行
space(x+i);//对齐并准备输出下一行字符
print_1(n/2,'A');//正向输出字符
print_2(n/2+1,'A');//反向输出字符,舍去第一个字符
printf("\n");
}
}