程序设计思路:第一步这是一个金字塔和倒金字塔的结合,程序分为先用一个for循环求出你输入的数值代表多少行(金字塔),在嵌入一个for循环去打印改行有多少个*,
这样就得到图1,
第二步,通过观察可以发现题目图案中是每一行都比原先递增1*,所以再嵌入一个for循环,观察j与i的关系,得出for (j -= 2; j > 0; j--)是每行多增加*的代码
在观察每行增加的空格,也是有规律的直接用for (int k = 0; k < num - c; k++)可以得出每次增加空格的关系是c与num之间的差
倒金字塔也是一样,原先的c经过以下代码的计算后,会比num多增加1,进而得出c-=2,通过for (c -= 2; c > 0; c--)得出倒金字塔的行数,for循环内的代码跟金字塔的代码是一样的
为什么会一样呢?因为c在递减,c--,所以就是倒着从大到小的排列
图1:
/
#include<stdio.h>
int main()
{
int num = 0;
int c = 0;
int j = 0;
printf("请输入数值:");
scanf("%d", &num);
for (c = 1; c <= num; c++)
{
for (int k = 0; k < num - c; k++)
{
printf(" ");
}
for (j = 1; j <= c; j++)
{
printf("*");
}
for (j -= 2; j > 0; j--)
{
printf("*");
}
printf("\n");
}
for (c -= 2; c > 0; c--)
{
for (int k = 0; k < num - c; k++)
{
printf(" ");
}
for (j = 1; j <= c; j++)
{
printf("*");
}
for (j -= 2; j > 0; j--)
{
printf("*");
}
printf("\n");
}
}