打印菱形的两种方法

pic1

1.利用字符串数组输出图案

思路:

用字符串数组来输出,第一次循环向这个字符串数组中填 ‘ * ’,i 从中间向左(⬅️),j 从中间向右(➡️)。

第二次循环填 ‘ ’,i 从左向右(➡️),j 从右向左(⬅️)。

char str[] = "             ";  //定义为空

int i = 0,j = 0;
for ( i=(strlen(str)/2),j=(strlen(str)/2); i>=0 && j<=strlen(str); i--,j++ )
{
    str[i] = '*';
    str[j] = '*';
    printf("%s\n",str);
}
for ( i=0,j=(strlen(str)-1); i<(strlen(str)/2) && j>=(strlen(str)/2); i++,j-- )
{
    str[i] = ' ';
    str[j] = ' ';
    printf("%s\n",str);
}

2.单纯用循环输出图案

int line = 0;
int i = 0;
scanf("%d", &line);//7
//1. 打印上半部分
for(i=0; i<line; i++)
{
    //打印一行
    //1. 打印空格
    int j = 0;
    for(j=0; j<line-1-i; j++)
    {
        printf(" ");
    }
    //2. 打印*
    for(j=0; j<2*i+1; j++)
    {
        printf("*");
    }
    printf("\n");
}
//2. 打印下半部分
for(i=0; i<line-1; i++)
{
    //打印一行
    //1. 打印空格
    int j = 0;
    for(j=0; j<i+1; j++)
    {
        printf(" ");
    }
    //2. 打印*
    for(j=0; j<2*(line-1-i)-1; j++)
    {
        printf("*");
    }
    printf("\n");
}

3.对比两种方法

  1. 第一种方法循环次数少,高效。
  2. 第二种方法多次循环,不高效。
  3. 相比来说,两种方法都很好理解。
  • 13
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值