#include
int main(void)
{
int i;
int n;
/* 当前行数 */
int line;
/* 每一行前面的空格数 */
int space;
/* 每一行后面的星号数 */
int star;
scanf("%d", &n);
for (line = 1; line < 2 * n; line++) {
/* 计算当前行的空格数 */
if (line <= n)
space = n - line;
else
space = line - n;
/* 计算当前行的星号数 */
star = n - space;
/* 打印当前行前面的空格 */
for (i = 0; i < space; i++)
printf(" ");
/* 打印当前行后面的星号 */
for (i = 0; i < star; i++)
printf("*");
/* 下一行 */
printf("\n");
}
return 0;
}
#include
int main(void){
int i,j,k,n;
printf("Input n(int n>0)...\nn=");
if(scanf("%d",&n)!=1 || n<1){
printf("Input error, exit...\n");
return 0;
}
for(j=1,i=0;j;++ifor(k=0;k<40-j;k++)
putc(' ',stdout);
for(k=0;kputc('*',stdout);
putc('\n',stdout);
}
return 0;
}
遇到这样的题目,要考虑的就是把这个图形横截分两半,一半是上面的直角三角形,另一半是下面的直角三角形(但下面的直角三角形是少了一条底边的),如下: