输入一个奇数n,打印出菱形
思路:
假设n = 9,若要打印第一层,首先就要先打印4个空格,第二层打印3个,逐个递减。由图我们可以看出第4行与第6行是对称的,由此可推,只要我们在打印第六行时,传入与第四行相同的参数,即可将下半部分打印出来。
#include<iostream>
using namespace std;
void print_diamond()
{
int n = 0;
cout << "请输入菱形阶数";
cin >> n;//奇数
int down = 0;
for (int i = 0; i < n; i++)
{
if (i < n / 2)
{
down = i;
}
else
{
down = i - 2 * (i - n / 2);
}
for (int j = 0; j < n / 2 - down + 1; j++)//输出空格个数
{
cout << " ";
}
for (int j = 0; j < 2 * down + 1; j++)//输出星号个数
{
cout << "*";
}
cout << endl;
}
}
int main() {
print_diamond();
system("pause");
return 0;
}