画菱形
描述
金中食堂做的蛋糕总是做成菱形,琪琪希望蛋糕上能裱上一圈小花,她想请你再帮个忙,用电脑画出用“*”号组成的裱花形状,这将是个空心的菱形。
输入
一个整数,n>0。
输出
由n2-1层“”号组成的空心菱形。
代码
#include <iostream>
using namespace std;
int main()
{int n; char a,b;cin >> n;a = '*';b = ' ';for(int c = 1, x = n, y = n; c <= n && x >= 1 && y <= n * 2 - 1; c++, x--, y++){for(int d = 1; d <= n * 2 - 1; d++){if(d == x || d == y)cout << a;else cout << b;}cout << endl;}for(int c = 1, x = 2, y = n * 2 - 2; c <= n - 1 && x <= n && y >= n; c++, x++, y--){for(int d = 1; d <= n * 2 - 1; d++){if(d == x || d == y)cout << a;else cout << b;}cout << endl;}return 0;
}
思路
这个题类似于正方形对角线的画法,通过观察所要求画的图形是对称图形,所以我们可以先画上面一半,再画另下面一半,我们以上半部分为例,上半部分也是对称的,通过类似正方形对角线的画法我们定义两个变量来从对称轴分别向两侧方向分别记忆符号出现的位置,再利用条件语句来判断填入空格还是*。通过相同的方法可以画出下半部分。