金中的蛋糕裱花

题目

金中食堂做的蛋糕总是做成菱形,琪琪希望蛋糕上能裱上一圈小花,她想请你再帮个忙,用电脑画出用“*”号组成的裱花形状,这将是个空心的菱形。

做题思路

先用一个for控制输入的行,然后将这个图形分为两部分,分别为(n*2)/2和后面的行(例如当n=5时将前5行为一个部分后4行为下一部分),用if语句将其分开,方法是if前面else后面.第一步分,看成自以第一行的(n*2)列为中心,依次向左向右输出*号,那么控制语句就可以写了.那么第二部分,就位自(n*2)/2行开始,依次向中间输出*号,直至最后一行.(按着思路看代码更好理解)

先看思路再看代码!

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	for (int i = 1; i <= n * 2 - 1; i++)//控制输出的行
	{
		if (i <= n )//第一步分
		{
			for (int j = 1; j <= n * 2 - 1;j++)//控制每一行的输入
			{
				if (j == n - i + 1 || j == n + i - 1)  cout << "*";//控制*的输出
				else  cout << " ";//其余部分补空格
			}
			cout<<endl;//每一行输出完后为空格
		}
		else//第二部分
		{
			for (int k = 1; k <= n * 2 - 1; k++)//控制每一行的输入
			{
				if (k == i - n + 1 || k == 3 * n - i - 1)  cout << "*";//控制*的输出
				else  cout << " ";//其余部分补空格
			}
			cout << endl;//换行
		}
	}
	return 0;
}

最后说一下,两个j,和两个k,如何想到用这个算术式控制*的输出的.

先将第一部分看成在一个坐标轴里面,第五行第一个*坐标为(1,1)第四行第一个*坐标为(2,2)依次类推坐标.第二部分类推一下想法,也不用想坐标如何.也要想到但纯的数字形式是不能控制的,必须用变量,而唯一的变量就是i.

第一个j,    控制自左向右,那么第一行的坐标(5,5)第二行坐标为(4,4),此时的i分别为1和2,n一直为5,此时n-i+1就能表示出第一行的5和第二行的4,那么后面的也就可以.

第二个j,    由第一的j的想法那么n+i-1,就可以表示出来.

第一个i,    这是要控制第二部分的数据,第一个*为第i=6行,第2个,第二个为第i=7行,第3个,那么就可以推出表达式i-n+1.

第二个i,    此时依旧要用i的值控制,也需要一个大于i的定值和i一起控制是i行的某一列,2n太小,3n尝试一下可也,3n-i+1,发现就可以控制了.

可能解释的有点勉强,都思考一下,自己想明白就可以啦.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花子喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值