栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

金中的蛋糕裱花

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

金中的蛋糕裱花

题目

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

做题思路

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

先看思路再看代码!
#include
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< 

最后说一下,两个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,发现就可以控制了.

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630679.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号