yeoh 发表于 2018-12-6 21:57:50

0基础入门C语言for循环应用,绝对的0基础

小甲鱼课程,循环控制结构程序
结果如下:
*
**
***
****
*****
******
*******
********
*********
**********
***********
************
***********
**********
*********
********
*******
******
*****
****
***
**
*
代码如下:
        int i,j,q=20;
       
        for (i = 1; i < q; i++)
        {
                for (j=1;j<i;j++)
                {
                        putchar('*');
                }
                printf("\n");
        }
       
        loop:for (i = 1; i < q; i++)
        {
                putchar('*');
        }
        if (i == q)
        {
                printf("\n");
                q -= 1;
                goto loop;
        }
}
请高手指点优化

rencaixiaomeng 发表于 2018-12-6 23:19:03

本帖最后由 rencaixiaomeng 于 2018-12-6 23:20 编辑

#include <stdio.h>

int main(void)
{

        int a, i, j, p = 10, q = 20;

        for (i = 0; i <= q; i++)
        {

                a = i < p ? i : q - i;
                for (j = 0;j <= a;j++)
                {
                        putchar('*');
                }
                printf("\n");
        }
        return 0;
}

lemon3 发表于 2018-12-7 09:55:38

之前看到的视频说(别的网站),最好不要用goto,指来指去代码可读性会降低

csilovelxl 发表于 2018-12-7 13:03:51

本帖最后由 csilovelxl 于 2018-12-7 17:43 编辑

#include <stdio.h>
#include <math.h>
int main(void)
{

      inti, j, p = 11, q = 21;
      //打印21行
      for (i = 1; i <= q; i++)
      {

            //最大输出11个*,设p=11,根据i的增长,通过p-i的绝对值判断需要输出多少个*,我感觉这有点像补码
                for (j=p-abs(p-i);j>0;j--)
                {
                        putchar('*');
                }
                printf("\n");
      }
      return 0;
}
//代码是我看二楼修改的
页: [1]
查看完整版本: 0基础入门C语言for循环应用,绝对的0基础