滚
我是码中寻乐,科技领域创作者,很高兴能为你解答。
代码截图:
运行效果截图:
代码:
void print_polygon(int rows)
{
if (rows % 2 == 0)
rows++;
int dir = 1;
int cx = rows / 2;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < rows; j++) {
int offset = i;
if (i > rows / 2)
offset = rows - i - 1;
if (j == cx - offset || j == cx + offset)
printf("*");
else
printf(" ");
}
printf("\\n");
}
}
码中寻乐
图 1
要输出如图1所示的菱形,第一反应是看看这个菱形有什么特点。在草稿纸上比划了半天,将图1转化成了图2用数字表示的图 图 2
比较图1和图2发现有以下特点:
(1)图2中的每一个数字代表图1中每个*号在所在行的列号。
(2)6+6、5+7、4+8、3+9、2+10、1+11均等于12。由于菱形是对称的,所以先考虑上半部分,即如图3所示 图 3
仔细观察图3,可以发现:
(1)图3为6行11列。
(2)左半部分第1行为6、第2行为5、..............、第6行为1;由此可知外循环应使用for(int i=6;i>=1;i--)
(3)用i代表行号,j代表列号;当i=j或者j=12-i时该位置的应输出*号,其他位置输出空格。有了以上分析,就可以写出输出图3所示图形的核心代码,如下: 要想输出菱形的下半部分,只需将外循环改为for(int i=2;i<=6;i++)即可。附录:完整代码:
与界
这是个数学问题。