原文地址

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-05-23
  • 2021-07-14
  • 2022-12-23
  • 2021-12-29
  • 1970-01-01
  • 2021-07-11
  • 2021-06-07
  • 2021-05-19
猜你喜欢
  • 2021-08-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-24
  • 2022-12-23
相关资源
相似解决方案