打印菱形星号组合

来源:互联网 发布:桐乡淘宝美工 编辑:程序博客网 时间:2024/06/05 03:39

这里写图片描述

//author:yangyang#include "stdafx.h"#define NUM 111  //输入多少行,由该数值控制图形的行数输出#define NUM_DIV (NUM-1)/2int main(){    char a[NUM][NUM] = {};//存放*    for (int i = 0; i < NUM; i++)    {        if (i <= NUM_DIV) //如果在上三角,赋值        {            int num1 = NUM_DIV - i, num2 = NUM_DIV + i;            for (int k = num1; k <= num2; k++)            {                a[i][k] = '*';            }        }        else//如果在下三角,赋值        {            int num1 = i- NUM_DIV, num2 = NUM-1+NUM_DIV -i;            for (int k = num1; k <= num2; k++)            {                a[i][k] = '*';            }        }    }    for (int i = 0; i < NUM; i++)//画图    {        for (int j = 0; j < NUM; j++)        {            printf("%c",a[i][j]);        }        printf("\n");    }    for (int i = 0; i < NUM; i++)//输出第几行星星个数,空格个数    {        if(i<=NUM_DIV)            printf("第%d行的*个%d,空格的个数%d\n", i + 1, 2 * i + 1, (NUM - 1 - 2 * i)/2);            //printf("第%d行的*个%d,空格的个数%d\n",i+1,2*i+1,NUM-1-2*i);        else            //printf("第%d行的*个%d,空格的个数%d\n", i + 1, NUM-2*(i-NUM_DIV), 2*(i-NUM_DIV));            printf("第%d行的*个%d,空格的个数%d\n", i + 1, NUM - 2 * (i - NUM_DIV), (i - NUM_DIV));    }    /***********************第二个图*************************/    char b[NUM][NUM] = {};    for (int i = 0; i < NUM; i++)//赋值    {        if (i <= NUM_DIV) {            int num1 = NUM_DIV - i, num2 = NUM_DIV + i;            b[i][num1] = '*';            b[i][num2] = '*';        }        else        {            int num1 = i - NUM_DIV, num2 = NUM-1+NUM_DIV - i;            b[i][num1] = '*';            b[i][num2] = '*';        }    }    for (int i = 0; i < NUM; i++)//画图    {        for (int j = 0; j < NUM; j++)        {            printf("%c", b[i][j]);        }        printf("\n");    }    for (int i = 0; i < NUM; i++)//输出第几行星星个数,空格个数    {        if (i <= NUM_DIV)        {            if(i == 0)                printf("第1行的*个数1,空格的个数%d\n",NUM_DIV);            else                printf("第%d行的*个数2,空格的个数%d\n", i + 1, 2 * i + 1+(NUM - 1 - 2 * i) / 2-2);        }        else {            if(i==NUM-1)                printf("第%d行的*个数1,空格的个数%d\n",NUM, (i - NUM_DIV));            else                printf("第%d行的*个数2,空格的个数%d\n", i + 1, NUM - 2 * (i - NUM_DIV)+(i - NUM_DIV)-2);        }    }    return 0;}
0 0