问题:在屏幕上输出一个菱形图案
目标图案:
实现思路:
由目标图案可知:该图案共有13行,每行除了有“*”外,第一个“*”之前还包括空格。我们可以把整个图案分为上7行和下6行来看。上7行中,空格的个数随行数增加而减少1,“*”的个数随行数增加而增加2;下6行中每行的空格数随行数增加而增加1,“*”的个数随行数增加而减少2。详见代码中的注释。
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x, y, z;
//上7行
for (x = 1; x <= 13; x += 2)//外循环控制循环层数(共7层)
{
for (y = (13 - x) / 2; y >= 1; y--)//控制每行中空格的个数
{
printf(" ");//首先输出空格
}
for (z = 1; z <= x; z++)//根据外循环中的x的值限制z(也就是每行"*"的个数)
{
printf("*");//在空格后面输出每行的"*"
}
printf("\n");//每输出一行后换行,以方便输出下一行
}
//下6行(方法和上7行类似,不再作注释)
for (x = 11; x >= 1; x -= 2)
{
for (y = (13 - x) / 2; y >= 1; y--)
{
printf(" ");
}
for (z = 1; z <= x; z++)
{
printf("*");
}
printf("\n");
}
system("pause");
return 0;
}
输出结果: