目录
题目描述
输入需要打印的菱形行数,然后打印出对应的长度的菱形。
例如输入长度为7,则打印出的菱形形状为:
*
***
*****
*******
*****
***
*
题目分析
假设输入打印的菱形长度为n,首先计算出上半部分的行数x=(n+1)/2,然后便可以分析上半部分的菱形形状之间的关系。
用 i 表示行数,用 j 表示打印空格的个数,用 k 表示打印 * 的个数。
上半部分:
i=1 j=3 k=1
i=2 j=2 k=3
i=3 j=1 k=5
i j k之间的关系为:
j=x-i k=2*i-1
下半部分:
行数星号空格之间的关系表达式 i-x j=i-x k=n-2*(i-x)
代码分析
#include<stdio.h>
int main()
{
int i = 0, j = 0, k = 0, x = 0, n = 0;
printf("请输入需要打印的菱形长度,其长度为一个奇数值:");
scanf("%d", &n);
//首先确定上半部分的行数
x = (n + 1) / 2;
for (i = 1; i <= n; i++)
{
if (i <= x)
{
//打印菱形上半部分
for (j = 1; j <= x - i; j++)
{
printf(" ");
}
for (k = 1; k <= 2*i - 1; k++)
{
printf("*");
}
printf("\n");
}
else
{
//打印菱形下半部分
for (j = 1; j <= i-x; j++)
{
printf(" ");
}
for (k = 1; k <= n-2*(i-x); k++)
{
printf("*");
}
printf("\n");
}
}
return 0;
}
运行结果
总结
在进行代码书写的时候,首先要确定好行数和星号、空格之间的关系,这样才能够知道如何书写for循环种的关系式。