打印输出菱形(C语言)


前言

打印输出菱形所遇到的多重循环问题


一、多重循环的执行结果是什么

外循环给定一值时,内循环将完整的执行一遍

二、遇到的问题

1.变量初值与条件判断如何设置

设置初值时应明白的简单逻辑:当i=0时,首先z会从1~9打印输出9个空格(z>i,所以z最后取1),然后y=0(y<=i)打印输出一个* ;当i=0时,首先z会从9~2打印输出8个空格(z>i,所以z最后取2),然后y=1(y<=i)打印输出两个* 。既每次i改变时,j与z完整的执行一遍

#include<stdio.h>
int main()
{
    int i,j,z;
    
        for(i=0;i<10;i++)
    {
        for(z=9;z>i;z--)
        printf(" ");
        
        for(j=0;j<=i;j++)
        printf("* ");
        printf("\n");
        
    }

    for(i=0;i<9;i++)
    {
        for(z=0;z<=i;z++)
        printf(" ");
        for(j=9;j>i;j--)
        printf("* ");
        printf("\n");
    }
    return 0;
}

2.变量设置

如下设置两组变量,分为菱形上下部分的两个循环,与1的代码可以实现等价的效果,但1会是更优的选择,所占内存与运行时间均较小。所以我们尽量只设置一组变量

#include<stdio.h>
int main()
{
    int i,j,z,i_,j_,z_;
    
        for(i=0;i<10;i++)
    {
        for(z=9;z>i;z--)
        printf(" ");
        
        for(j=0;j<=i;j++)
        printf("* ");
        printf("\n");
        
    }

    for(i_=0;i_<9;i_++)
    {
        for(z_=0;z_<=i_;z_++)
        printf(" ");
        for(j_=9;j_>i_;j_--)
        printf("* ");
        printf("\n");
    }
    return 0;
}


总结

1.了解多重循环的执行结果,懂得设置打印输出菱形的初值与条件判断

2.了解如何优化程序

### C语言实现菱形图案输出 要通过C语言编写一个能够生成菱形图案的程序,可以按照如下方法设计逻辑结构。以下是完整的解决方案: #### 菱形上半部分 对于菱形的上半部分,每一行需要先打印一定数量的空格,再打印星号`*`。具体来说,假设用户输入的高度为`n`,则第`i`行(从1到`n`)应满足以下条件: - 打印`(n-i)`个空格。 - 随后打印`(2*i - 1)`个星号。 这部分的核心循环逻辑已经在引用中提到过[^2]。 #### 菱形下半部分 对于菱形的下半部分,其规律是对称于上半部分。因此可以从倒数第二行开始向下逐层减少星号的数量并增加前导空格的数量。如果当前行为`j`(从`n-1`递减至1),那么应该遵循以下规则: - 打印`(n-j)`个空格。 - 接着打印`(2*j - 1)`个星号。 下面是基于上述分析的一个完整代码示例: ```c #include <stdio.h> int main() { int n, i, j, k; printf("请输入菱形的高度(奇数值): "); scanf("%d", &n); // 上半部分加中间一行 for (i = 1; i <= n; i++) { // 输出前导空格 for (j = 1; j <= n - i; j++) { printf(" "); } // 输出星号 for (k = 1; k <= 2 * i - 1; k++) { printf("*"); } printf("\n"); // 换行 } // 下半部分 for (i = n - 1; i >= 1; i--) { // 输出前导空格 for (j = 1; j <= n - i; j++) { printf(" "); } // 输出星号 for (k = 1; k <= 2 * i - 1; k++) { printf("*"); } printf("\n"); // 换行 } return 0; } ``` 此代码实现了动态调整高度的功能,并严格按照给定的算法描述来构建上下两部分的菱形结构[^1]。 #### 运行效果说明 当运行以上代码时,会提示用户输入想要绘制的菱形的高度值。注意这里要求的是整个图形的高度而非单侧宽度,而且为了保持对称性,建议输入奇数作为参数。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值