Bootstrap

c语言基础题之菱形的输出

首先审题:菱形由空格和“*”组成,难点:1.找到排列规律。2.代码实现。

 先看上半部分:第一行空格为5    第一行*为1

                          第二行空格为4    第二行*为3

                          第三行空格为3     第三行*为5

                        。。。

                          第六行空格为0     第六行*号为11

规律:              空格=n-i(i>=1)       *=2*i-1(i>=1)

所以上半部分的代码实现为

同理可得:
下半部分的行数为n-1;

所以:     第一行空格为1     第一行*为9

                第二行空格为2     第二行*为7

              。。。

              第n行空格为==n     第n行*==2*(n-1-i+1)

最后代码:

#include<stdio.h>

int main(void) {
    int n;    //上半部分行数
    scanf("%d", &n);    
    //上半部分:
    for (int i = 1; i <= n; i++) {    //行数做循环条件
        //1、打印空格
        for (int j = 0; j < n - i; j++) {    
            printf(" ");
        }
        //2、打印*号
        for (int j = 0; j < 2*i-1; j++) {
            printf("*");
        }
        //3、没打印完一排换行
        printf("\n");
    }
    //下半部分:
    for (int i = 1; i <= n - 1; i++) {
        for (int j = 0; j < i; j++) {
            printf(" ");
        }
        for (int j = 0; j < 2*(n-1-i)+1; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

 

;