思路:
分成上下两部分输出。
用两层循环,外层循环控制输出多少行,内存控制每一行有多少列
找中间那一列,向左右两边推导出算法
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int nHigh = 0,nMid=0;
printf("请输入要打印的菱形行数(奇数):");
scanf_s("%d", &nHigh);
nMid = nHigh / 2;
for (int i=0;i<nHigh;i++)
{
if (i <= nMid) //打印上半部分
{
for (int j = 0; j <= nHigh - 1 + i; j++)
{
if (j >= nMid - i && j <= nMid + i)
{
printf("*");
}
else printf(" ");
}
printf("\n");
}
else //打印下半部分
{
for (int j = 0; j <= nHigh - 1 + i; j++)
{
if (j >= i-nMid && j <= (nHigh-1)-(i-nMid))
{
printf("*");
}
else printf(" ");
}
printf("\n");
}
}
system("pause");
}