打印菱形,输出菱形金字塔

我不是女神ヾ 2022-12-28 09:23 264阅读 0赞

打印菱形

  • 题目描述
  • 解题思路
  • 具体实现:
  • 封装成函数

题目描述

打印菱形

如下图:

输入:7

在这里插入图片描述
从键盘输入一个数字,打印如图所示的菱形。

解题思路

思路:
仔细观察图形,可以发现,此图形中是由空格和 * 按照不同个数的输出组成的。
上三角:先输出空格,后输出 *,每行中空格:从上往下,一行减少一个,
每行:2 * i - 1的方式递增

下三角:先输出空格,后输出*,每行中空格:从上往下,每行多一个空格 从上往下,
按照2 * ( h - 1 - i )的方式减少,其中:h表示总共有多少行
按照上述方式,将上三角和下三角中的空格和*分别输出即可。

具体实现:

源代码:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int h = 0;
  5. scanf("%d", &h);
  6. //打印上半部分
  7. for (int i = 1; i < h; i++)
  8. {
  9. //第一行空格
  10. for (int j = 1; j < h-i; j++)
  11. {
  12. printf(" ");
  13. }
  14. for (int j = 1; j < 2 * i; j++)
  15. {
  16. printf("*");
  17. }
  18. printf("\n");
  19. }
  20. //打印下半部分
  21. for (int i = 1; i < h; i++)
  22. {
  23. //第一行空格
  24. for (int j = 1; j <= i; j++)
  25. {
  26. printf(" ");
  27. }
  28. for (int j = 1; j < 2 * (h -1- i); j++)
  29. {
  30. printf("*");
  31. }
  32. printf("\n");
  33. }
  34. return 0;
  35. }

在这里插入图片描述

封装成函数

我们也知道,为了方便函数复用,可以将以上方法封装成函数,需要使用的时候方便调用,大大减少了代码量:

  1. void Func(int h)
  2. {
  3. //打印上半部分
  4. for (int i = 1; i < h; i++)
  5. {
  6. //第一行空格
  7. for (int j = 1; j < h - i; j++)
  8. {
  9. printf(" ");
  10. }
  11. for (int j = 1; j < 2 * i; j++)
  12. {
  13. printf("*");
  14. }
  15. printf("\n");
  16. }
  17. //打印下半部分
  18. for (int i = 1; i < h; i++)
  19. {
  20. //第一行空格
  21. for (int j = 1; j <= i; j++)
  22. {
  23. printf(" ");
  24. }
  25. for (int j = 1; j < 2 * (h - 1 - i); j++)
  26. {
  27. printf("*");
  28. }
  29. printf("\n");
  30. }
  31. }

注意:
使用for循环,一定要控制好循环条件,避免出错。

发表评论

表情:
评论列表 (有 0 条评论,264人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java打印实心菱形,空心菱形

    我们用\号来填充菱形 首先,要想打印出菱形,我们先要对菱形有点认知,首先,菱形是四边相等的图形,只要四边相等,就是菱形,我们这里只说明竖着打印实心菱形和空心菱形。 实心菱形

    相关 打印菱形

    题目要求:   【题型一】打印实心零星(无间隙) 样例输出:                    ![70][] 像这样重复输出一种符号或者具有某种可描述的关系的形