您的位置:首页 > 编程语言 > C语言/C++

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

2017-07-11 17:18 411 查看
#include

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

    

    int num = 0;

    

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

    scanf("%d",&num);

    

    int num1 = num;

    int nu
4000
m2 = 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*num+1个“格子”

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

                printf("*");

            }else{                          //不在num1和num2之间的“格子”用空格代替

                printf(" ");

            }

        }

        printf("\n");

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

        num2++;

    }

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

    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*num+1个“格子”

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

                printf("*");

            }else{                          //不在num1和num2之间的“格子”用空格代替

                printf(" ");

            }

        }

        printf("\n");

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

        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*num+1个格子组成

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

                printf("*");

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

                printf(" ");

            }

        }

        printf("\n");

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

        number2++;

    }

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

    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) {  //把number1和number2代表的“格子”位置用*打印出来

                printf("*");

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

                printf(" ");

            }

        }

        printf("\n");

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

        number2--;

    }

    return 0;

 

}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: