C 输出菱形

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

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

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

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

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

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

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

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

#include <stdio.h>

#define LINE 7

main(void)
{
    int now, space, block;

    for (now = 1; now <= LINE;now++) {
        if (now <=(LINE/2 + 1)) {
            for (space = ((LINE/2 + 1) - now); space > 0; space--) {
                printf(" ");
            }

            for (block = 1; block <= now * 2 - 1; block++) {
                printf("*");
            }
        }

        if (now > (LINE/2 + 1)) {
            for (space = (now - (LINE/2 + 1)); space > 0; space--) {
                printf(" ");
            }

            for (block = (LINE - now) * 2 + 1; block > 0; block--) {
                printf("*");
            }
        }
        printf("\n");
    }

    return 0;
}

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 成品, 源码, 题目, 存疑

已有 3 条评论

  1. 这个是期末考试题

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

  2. wynn

    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");

    }
    这是指定的行数 其实分为上下两部分三角形就行了

添加新评论