C语言空心菱形 *号打印图形

//1.空心菱形

运行结果:


代码实现:

 int line = 0, m = 0;

        printf("请输入行数:\n");

        scanf("%d", &line);

        m = (line + 1) / 2;

        //上半部分

        for(int i =1; i <= m; i++) //控制行数

        {

            for(int k =0; k < m - i; k++)//控制空格数

            {

                printf(" ");

            }

            printf("*");

            if(i == 1){

                printf("\n");//换行

                continue;//结束本次部分循环,继续执行下一层循环继续 i++

            }

            for(int j =0; j < 2 * i - 3 ; j++)

            {

                printf(" ");

            }

            printf("*");

            printf("\n");

        }

        //下半部分

        for(int i = m -1; i > 0; i--)//控制行数

        {

            for(int k =0; k < m-i; k++)//控制每行的空格数

            {

                printf(" ");

            }

            printf("*");

            if(i == 1){

                printf("\n");

                continue;//结束本次部分循环,继续执行下一层循环继续 i--

            }

            for(int j =0; j < 2 * i - 3; j++)

            {

                printf(" ");

            }

            printf("*");

            printf("\n");

        }

//2.打印Z型

运行结果:


代码实现:

int n = 0;

    printf("Please enter n:\n");

    scanf("%d", &n);

    for (int i = 1; i <= n; i++) {

        for (int j = 1; j <= n; j++) {

            if (j == n - i + 1 || i == 1 || i == n) {

                printf("*");

            }else

                printf(" ");

        }

        printf("\n");

    }

//3.打印X型

运行结果:


代码实现:

 分析:此题与上题的区别在于打印'*'号的位置不同,编程时要找出应打印'*'号的位置和两个循环变量ij以及行数n的关系

    int n = 0;

    printf("Please Enter n:\n");

    scanf("%d", &n);

    for(int i = 1;i <= n;i++){/* 输出图形的上半部分(含中心行) */

        for(int j = 1;j <= 2 * n - i - 1;j++){

            if(j == i){

                printf("*");

            }else{

                printf(" ");

            }

        }

        printf("*\n");

    }

    for(int i = 1;i < n;i++){/*输出图形的下半部分(不含中心行)*/

        for(int j = 1;j <= n + i;j++){

            if(j == n - i){

                printf("*");

            }else

                printf(" ");

        }

        printf("*\n");

    }

4.打印空心等腰梯形

运行结果:


代码实现:

    int n = 0;

    printf("Please Enter n:\n");

    scanf("%d", &n);

    for(int i = 1;i <= n;i++){

        for(int j = 1;j <= 2 * n + i - 3;j++){

            if(j == n - i + 1 || (j > n - i + 1 && (i == 1 || i == n))){

                printf("*");

            }else{

                printf(" ");

            }

        }

        printf("*\n");

    }

5.打印实心等腰梯形

运行结果:


代码实现:

 int n = 0;

    printf("Please Enter n:\n");

    scanf("%d", &n);

    for(int i = 1;i <= n;i++) {

        for(int j = 1;j <= n-i;j++) {

            printf(" ");

        }

        for(int j = 1;j <= 2 * i - 1 + (n - 1);j++){

            printf("*");

        }

        printf("\n");

    }

6.输出倒三角形

运行结果:


代码实现:

int  n = 0;

    printf("Please Enter n:\n");

    scanf("%d", &n);

    for(int i = 1;i <= n;i++)/* 重复输出图形的n */

    {

        for(int j = 1;j <= 2 * n - i;j++)/* 重复输出图形一行中的每个符 */

        { if(j <= i-1){

            printf(" ");/* 输出前面的空格 */

        }

        else

            printf("*");/* 输出后面的* */

        }

        printf("\n");

    }

//7.打印平行四边形

运行结果:


代码实现:

int  n = 0;

    printf("Please Enter n:\n");

    scanf("%d", &n);

    for(int i = 1;i <= n;i++) {

        for (int j =1; j <= n - i; j++) {

            printf(" ");

        }

        for (int j = 1; j <= n; j++) {

            printf("*");

        }

        printf("\n");

    }

//8.输出矩形

运行结果:


代码实现:

int n = 0;

    printf("Please Enter n:\n");

    scanf("%d", &n);

    for(int i = 1;i <= n;i++) {//打印行数

        for(int j = 1;j <= n;j++) {//打印列数

            printf("*");

        }

        printf("\n");

    }

//9.打印等腰三角形

运行结果:


代码实现

    int n = 0;

    printf("Please Enter n:\n");

    scanf("%d", &n);

    for (int i = 1; i <= n; i++)//控制输入的行数

    {

        for (int k = 1; k <= n - i; k++)//控制空格的输入

        {

            printf(" ");

        }

        for (int j = 1; j <= 2 * i - 1; j++)//控制*的输入

        {

            printf("*");

        }

        printf("\n");

    }


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值