边长为n的正六边形

  前几天参加了一个比赛,题目:输出边长为n的正六边形,边长用" * "表示,,,写的好复杂啊,,,求简单算法。。。

    算法:先输出上半部分,然后输出下办部分,两者分开,中间用循环,先打印空格,然后打印*,然后在打印中间的空心空格,最后打印*。

    代码如下:

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int i, j, x, y; //各个层的循环变量
 6     
 7     int nBorder = 0; //初始化边长
 8     int nSpace; //中间空格数
 9 
10     //正确赋值边长
11     printf("请输入正六边形边长(n >= 2): ");
12     scanf("%d", &nBorder);
13     while (nBorder <2)
14     {
15         printf("非法输入,请重新输入。");
16         scanf("%d", &nBorder);
17     }
18 
19     nSpace = nBorder - 2;  //初始化中间空格数
20 
21     //先输出正六边形上半部分 ( n行 )
22     for (i = 0; i < nBorder; i++)  //外循环控制行输出
23     {
24         for (j = 0; j < nBorder - 1 - i; j++) //内循环控制列输出
25         {
26             printf(" "); //打印空格
27         }
28 
29         if (0 == i)  //第一行
30         {
31             for (x = 0; x < nBorder;x++)
32             {
33                 printf("*");
34             }
35         }
36         else
37         {
38             printf("*");
39 
40             nSpace = nSpace + 2;
41             for (y = 0; y < nSpace; y++)
42             {
43                 printf(" ");  //打印中间的空心空格
44             }
45 
46             printf("*");  //打印一行最后一个*
47         }
48         
49         printf("\n");  //换行
50     }
51 
52     //然后输出下半部分 ( n - 1 行 )
53     nSpace = nBorder + (nBorder - 2) * 2;  //重新初始化中间空格数
54 
55     for (i = 1; i <= nBorder - 1; i++)
56     {
57         for (j = 0; j < i; j++)
58         {
59             printf(" ");  //打印起始空格数
60         }
61 
62         if ((nBorder - 1) == i)   //最后一行
63         {
64             for (x = 0; x < nBorder; x++)
65             {
66                 printf("*");
67             }
68         }
69         else
70         {
71             printf("*");
72 
73             nSpace = nSpace - 2;
74             for (y = 0; y < nSpace; y++)
75             {
76                 printf(" "); //打印中间的空心空格
77             }
78 
79             printf("*"); //打印一行最后一个*
80         }
81 
82         printf("\n");   //换行
83     }
84 
85     return 0;
86 }

 

————————————————————————————————————————————————————————————————— 一个理想主义者的追梦旅程
原文地址:https://www.cnblogs.com/michaelGood/p/2726927.html