XM的小窝


 

【C】码一下我也不知道怎么写出来的字母塔算法()

之前有了解过回文输出,不过具体算法没印象了 :鹿乃_???:

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

发表评论

电子邮件地址不会被公开。必填项已用 * 标注