#include<stdio.h>
int main()
{
int i,j,k;
for(i=1;i<=6;i++) //行
{
for(k=1;k<=(6-(i-1));k++)// 左边空格打印
{
printf(" ");
}
for(k=13;13-k<6;k--) //右边空格打印
{
printf(" ");
}
for(k=7-(i-1);k<=7+(i-1);k++)//*打印
{
putchar('*');
}
printf("\n");
}
for(i=7;i<=13;i++)
{
for(k=1;k<=i-7;k++) //左边空格输出
{
printf(" ");
}
for(k=13;13-k<6;k--) //右边空格输出
{
printf(" ");
}
for(k=(i+1)-7;k<=(13-(i-7));k++)
{
putchar('*');
}
printf("\n");
}
return 0;
}
优化之后代码,行数可以根据需要变化,代码跟简易。
#include<stdio.h>
int main()
{
int line = 0;
int i = 0;
scanf("%d", &line);//7
//输出上半部分
for(i=0; i<line; i++)
{
//
//输出空格
int j = 0;
for(j=0; j<line-1-i; j++)
{
printf(" ");
}
//输出*
for(j=0; j<2*i+1; j++)
{
printf("*");
}
printf("\n");
}
//输出下半部分
for(i=0; i<line-1; i++)
{
//输出空格
int j = 0;
for(j=0; j<i+1; j++)
{
printf(" ");
}
//输出*
for(j=0; j<(line-1-i)*2-1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}