#include<stdio.h>
int main()
{
int i,j,k,n;
printf("请输入行数\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=(n-i);j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
{
printf("*");
}printf("\n");
}
return 0;
}
for(j=1;j<=n-i;j++)这一步我刚写的时候觉得j<=n-i要乘二,写成这样: j<=2*(n-i)
后来明白了:n-i 相当于是打出了左边的空格,而右边不需要再打了,换行已经有空格了。
假设n=5,第一行一个星星,空格数为2*(5-1)=8,第二行三个星星,空格数为2*3=6,而这两行的总长度是相同的,都是9,那么如果*2就是空格把星星的位置占了,相当于金字塔就剩一半了。