用C语言打印菱形的技巧粗解

xiaoxiao2021-02-28  120

#include

int main(int argc, const char * argv[]) {

    

    int num = 0;

    

    printf("请输入您希望看到的菱形边的星星数:\n");

    scanf("%d",&num);

    

    int num1 = num;

    int num2 = num;

    int number1 = num;

    int number2 = num;

//实心菱形

    for (int i = 0; i < num; i++) {     //实心菱形的上半部分,共用户输入的数字num

        for (int j = 0; j<<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">2*num+1; j++) {   //控制行输出,每一行都有2*num1格子

            if (j>=num1 && j <= num2) {     //num1num2之间的格子全部用*打印出来

                printf("*");

            }else{                          //不在num1num2之间的格子用空格代替

                printf(" ");

            }

        }

        printf("\n");

        num1--;     //调整num1num2的值,使之呈每一步都相互远离一个格子的形式

        num2++;

    }

    num1+=2;        //调整num1num2的值,为打印菱形的下半部分做准备

    num2-=2;

    for (int i = 0; i < num-1; i++) {       //打印菱形的下半部分

        for (int j = 0; j<<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">2*num+1; j++) {   //每一行都有2*num1格子

            if (j>=num1 && j <= num2) {     //num1num2之间的格子全部用*打印出来

                printf("*");

            }else{                          //不在num1num2之间的格子用空格代替

                printf(" ");

            }

        }

        printf("\n");

        num1++;     //调整number1number2的值,使之在每一次循环中都呈现相互各靠近一个格子的形式

        num2--;

    }

    

    printf("\n\n");       //在实心菱形打印完成后隔两行开始打印空心菱形

    

//空心菱形

    for (int i = 0; i < num; i++) {             //打印空心菱形的上半部分

        for (int j = 0; j<<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">2*num+1; j++) {       //控制行输出,把每行看成2*num1个格子组成

            if (j==number1 || j == number2) { //number1number2代表的格子位置用*打印出来

                printf("*");

            }else{                              //不满足要求的格子用空格代替

                printf(" ");

            }

        }

        printf("\n");

        number1--;  //调整number1number2的值,使之在每一次循环中都呈现相互各远离一个格子的形式

        number2++;

    }

    number1+=2;     //调整number1number2的数值,为打印缩小部分做准备

    number2-=2;

    for (int i = 0; i < num-1; i++) {           //打印菱形的下半部分

        for (int j = 0; j<<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">2*num+1; j++) {

            if (j==number1 || j == number2) {  //number1number2代表的格子位置用*打印出来

                printf("*");

            }else{                              //不满足要求的格子用空格代替

                printf(" ");

            }

        }

        printf("\n");

        number1++;   //调整number1number2的值,使之呈每一步都相互靠近各一个格子的形式

        number2--;

    }

    return 0;

 

}

转载请注明原文地址: https://www.6miu.com/read-74746.html

最新回复(0)