CodeSky 代码之空

随手记录自己的学习过程

C 输出菱形

2014-02-21 19:35分类: C评论: 3

受泽发来的贺电- -嗯……数学不是很好所以码了有一会儿吧。

数学不好搞算法好吃力……

输出比如下面一样的菱形:

   *
  ***
 *****
*******
 *****
  ***
   *

关键在于空格与*的分布。

常量与变量说明:LINE(总行数,这里的算法使得LINE必须是奇数)now目前行数,block * 的数量 space空格的数量

这里不写具体数字是因为搞定了输入输出之后可以把LINE作为变量,用变量来输出更大的菱形。

限制是不适合偶数,所以这个写法不是很完美(在提供输入选项时)

1#include <stdio.h>
2
3#define LINE 7
4
5main(void)
6{
7    int now, space, block;
8
9    for (now = 1; now <= LINE;now++) {
10        if (now <=(LINE/2 + 1)) {
11            for (space = ((LINE/2 + 1) - now); space > 0; space--) {
12                printf(" ");
13            }
14
15            for (block = 1; block <= now * 2 - 1; block++) {
16                printf("*");
17            }
18        }
19
20        if (now > (LINE/2 + 1)) {
21            for (space = (now - (LINE/2 + 1)); space > 0; space--) {
22                printf(" ");
23            }
24
25            for (block = (LINE - now) * 2 + 1; block > 0; block--) {
26                printf("*");
27            }
28        }
29        printf("\n");
30    }
31
32    return 0;
33}
34

评论 (2)

wynn2017年12月19日 22:19

for(i=1;i<=10;i++) { for(j=0;j<10-i;j++) { printf(" "); } for(j=0;j<2*i-1;j++) { printf("*"); } printf("\n"); } for(i=9;i>=1;i--) { for(j=0;j<10-i;j++) { printf(" "); } for(j=0;j<2*i-1;j++) { printf("*"); } printf("\n"); } 这是指定的行数 其实分为上下两部分三角形就行了

不给力的面条2014年2月22日 10:31

这个是期末考试题

敖天羽2014年2月22日 13:59

你们期末考试是上机的吗 听说我们是笔试 而且考的很简单OTZ无法直视