C语言刷题—打印任意长度的菱形

目录

题目描述

题目分析

代码分析

运行结果

 总结


题目描述

输入需要打印的菱形行数,然后打印出对应的长度的菱形。

例如输入长度为7,则打印出的菱形形状为:

       *      
      ***      
     *****     
    *******    
     *****           
       ***
        *

题目分析

假设输入打印的菱形长度为n,首先计算出上半部分的行数x=(n+1)/2,然后便可以分析上半部分的菱形形状之间的关系。

i 表示行数,用 j 表示打印空格的个数,用 k 表示打印 * 的个数。

上半部分:

i=1      j=3     k=1

i=2      j=2     k=3

i=3      j=1     k=5

i j k之间的关系为:

j=x-i       k=2*i-1

下半部分:

行数星号空格之间的关系表达式   i-x      j=i-x     k=n-2*(i-x)

代码分析

#include<stdio.h>
int main()
{
    int i = 0, j = 0, k = 0, x = 0, n = 0;
    printf("请输入需要打印的菱形长度,其长度为一个奇数值:");
    scanf("%d", &n);
    //首先确定上半部分的行数
    x = (n + 1) / 2;
    for (i = 1; i <= n; i++)
    {
        if (i <= x)
        {
            //打印菱形上半部分
            for (j = 1; j <= x - i; j++)
            {
                printf(" ");
            }
            for (k = 1; k <= 2*i - 1; k++)
            {
                printf("*");
            }
            printf("\n");
        }
        else 
        {
            //打印菱形下半部分
            for (j = 1; j <= i-x; j++)
            {
                printf(" ");
            }
            for (k = 1; k <= n-2*(i-x); k++)
            {
                printf("*");
            }
            printf("\n");
        }
    }
    return 0;
}

运行结果

 总结

在进行代码书写的时候,首先要确定好行数和星号、空格之间的关系,这样才能够知道如何书写for循环种的关系式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值