打印菱形首先要找到规律, 每一行是由空格和星号组成的
假如你要打印的菱形的一半为7行, 那么
第一行有6个空格, 1个星号
第二行有5个空格, 3个星号
第三行有4个空格, 5个星号
… … … … …
第 i 行有7-i个空格, 2*i -1个星号
规律就找到了
输入一半行数num打印菱形:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void Pattern(int space, int star)
{
int i = 0;
for (i = 0; i < space; i++)
{
printf(" "); //打印空格
}
for (i = 0; i < star; i++)
{
printf("*"); //打印星号
}
printf("\n");
}
void Print(int n)
{
//打印上半部分
int i = 0;
for (i = 1; i < n; i++)
{
Pattern(n - i, 2 * i - 1);
}
//打印中间部分
Pattern(0, 2 * n - 1);
//打印下半部分
for (i = n - 1; i > 0; i--)
{
Pattern(n - i, 2 * i - 1);
}
}
int main()
{
int num = 0; //num是一半的行数
printf("输入要打印的行数:\n");
scanf("%d", &num);
Print(num);
return 0;
}
运行结果截图: