C语言:直接打印和通用两种解法

解法一:直接打印

int main(){
    char ch;
    scanf("%c",&ch);
    printf("  %c  \n",ch);
    printf(" %c%c%c \n",ch,ch,ch);
    printf("%c%c%c%c%c\n",ch,ch,ch,ch,ch);
    printf(" %c%c%c \n",ch,ch,ch);
    printf("  %c  \n",ch);
    return 0;
}

解法二:通用方法,输入打印的符号ch和行数num

int main(){
    char ch;    //打印的符号
    int num = 5; //对角线数目
    int i,j1,j2; //j为行数
    scanf("%c",&ch);
    
    //upper打印上半角
    for( i=0; i< (num-1)/2; i++){
        j2 = i*2+1;      //符号数
        j1 = (num-j2)/2; //空格数
        while( j1-->0 ) 
            printf(" ");
        while( j2-->0 )
            printf("%c",ch);
        printf("\n");
    }
    
    //middle打印中间行
    j2 = num;
    while( j2-->0 )
        printf("%c",ch);
    printf("\n");
  
    //lower下半角
    for( i= (num-1)/2+1; i< num; i++ ){
        j1 = i-(num-1)/2; //空格数
        j2 = num-j1*2;    //符号数
        while( j1-->0 ) 
            printf(" ");
        while( j2-->0 )
            printf("%c",ch);
        printf("\n");
    }
    
    //end
    return 0;
}