标签:
同http://www.cnblogs.com/MichaelLee2015/p/4403005.html
int main() { int h;//表示菱形的高的一半,也就是用户输入的数 printf("请输入xxx我也不知道这里怎么说\n");//提示用户输入一个数 scanf("%d",&h);//把用户的输入读取进来并存到h中 //上半部分 //思路:我们想输出菱形,要考虑每一行的星号前面有几个空格,每一行有几个星号 //经过推(数)理(数)我们发现,星号最多一行的星号个数为 (2h-1) 个 //第一行前面空格个数为h-1;第i行(i<h)空格个数为h-i //我们以h=6为例,星号最多的一行是第6行,*个数为11个,第6行前面是没有空格的 //第一行前面有5个空格 for (int i = 1; i <= h; i++)//第几行 { for (int j = 1; j <= h - i; j++)//输出该行的空格 { printf(" ");//输出一个空格 } for (int k = 1; k <= 2 * i - 1; k++)//输出该行的* 每行星号个数为(2i-1) { printf("*"); } printf("\n");//当前行输出完成,换行 } //到这里,上半行完成 //下面打印下半行 //下半行的话就完全反过来。下半行的第1行前面有一个空格 有[2(h-1)-1]个星号 //下半行的第m行有m个空格,[2(h-m)-1]个星号 //下半行共有h-1行 for (int m = 1; m <= h - 1; m++)//m表示下半行的行数 { for (int n = 1; n <= m; n++)//输出空格 { printf(" "); } for (int o = 1; o <= 2 * (h - m) - 1; o++)//输出* { printf("*"); } printf("\n");//换行 } return 0; }
标签:
原文地址:http://www.cnblogs.com/MichaelLee2015/p/4417217.html