定义一个函数,实现画一个n行菱形,并在主函数中调用该函数。
思路:从主函数传递一个n实参给自定义函数Diamond让其打印菱形。这里采用的是两个大的for循环去控制菱形的两部分,一部分是(n+1)/2行,另一部分是(n-1)/2行,然后在其内部分别写两个for循环去控制空格的个数和乘号个数。
在写内部循环,控制上部分空格行数:上部分的总行数(n+1)/2 减去 控制上部分行数的变量(i);控制上部分星号行数:控制上部分行数的变量乘以二减去一 。
下半部分:下半部分控制行数变量(i)去控制空格的行数;控制星号的行数下部分的总行数加一减去下半部分控制行数变量(i)的两倍减去一。
void printDiamonf(int n)
{
int i = 0, j = 1;
for (i = 1; i <= (n + 1) / 2; i++) //控制上部分行数
{
for (j = 1; j <= (n + 1) / 2 - i; j++)//控制上部分空格数
{
printf(" ");
}
for (j = 1; j <= 2 * i - 1; j++)//控制上部分星号数
{
printf("*");
}
printf("\n");
}
for (i = 1; i <= (n - 1) / 2; i++)//控制上部分行数
{
for (j = 1; j <= i; j++)//控制上部分空格数
{
printf(" ");
}
for (j = 1; j <= 2 * ((n - 1) / 2 - i + 1) - 1; j++)//控制上部分星号数
{
printf("*");
}
printf("\n");
}
}
int main()
{
int n = 0;
scanf_s("%d", &n);
printDiamonf(n);
return 0;
}
注意无偶数行菱形,有错误请指出。