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;
}