原文地址

C语言输出一个菱形

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. 相比来说,两种方法都很好理解。

原文地址

相关文章:

  • 2021-10-09
  • 2021-09-19
  • 2021-12-20
  • 2021-09-19
  • 2021-10-16
  • 2021-12-14
  • 2021-02-07
  • 2021-09-20
猜你喜欢
  • 2020-01-23
  • 2021-11-11
  • 2020-05-31
  • 2021-10-03
  • 2022-01-02
  • 2021-12-08
  • 2021-09-19
  • 2022-01-02
相关资源
相似解决方案