金中食堂做的蛋糕总是做成菱形,琪琪希望蛋糕上能裱上一圈小花,她想请你再帮个忙,用电脑画出用“*”号组成的裱花形状,这将是个空心的菱形。
做题思路先用一个for控制输入的行,然后将这个图形分为两部分,分别为(n*2)/2和后面的行(例如当n=5时将前5行为一个部分后4行为下一部分),用if语句将其分开,方法是if前面else后面.第一步分,看成自以第一行的(n*2)列为中心,依次向左向右输出*号,那么控制语句就可以写了.那么第二部分,就位自(n*2)/2行开始,依次向中间输出*号,直至最后一行.(按着思路看代码更好理解)
先看思路再看代码!#includeusing 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,发现就可以控制了.
可能解释的有点勉强,都思考一下,自己想明白就可以啦.



