C++学习笔记09:打印 n 阶实心菱形

C2-3实心菱形 (100/100 分数)
题目描述
打印 n 阶实心菱形
输入描述
输入一个整数n,0 < n <= 10
输出描述
输出 n 阶实心菱形 , 占 2*n-1 行
样例输入
3
样例输出

  *
 ***
*****
 ***
  *

解题

#include <iostream>
using namespace std;
int main()
{
	int n = 0,i,j,k;
	cin >> n;
	for (i = 0; i <= 2 * n - 1; i++)
	{
		if (i > n) k = 2 * n - i;
		else  k = i;
		for (j = 1; j <= 2 * n - 1; j++)
		{
			if (j <= n - k) cout << " ";
			else if (j < n + k) cout << "*";
		}
		cout << endl;

	}
	return 0;
}

思考

  1. 从这道题最大的层次看到的是对称图案,上下对称,所以先计算出n行的结果,剩下的n-1行的结果是以第n行为对称轴关于前n-1行对称。
  2. 前n-1行的规律为输出n-i个空格,再输出2*i-1个星号,所以用j代表一行中的各个位置。使用if else结构完成这一要求。
  3. 后n-1行的处理方法就是使用对称方法,第n+i行的图像和n-i行的图像是相同的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值