输出图像的几个例子分析

第一次使用Markdown语法,内心还是有一点小激动的,学习了一学期的C语言,就总结一下困扰了我好久的输出图像的几个例子吧。不过,还是希望路过的大神们能指点一二,小女先谢过啦。

对于这类问题我们分几步来看:

1.分析

首先我们要分析要输出的图像。其实,图像可以简单的看成一个二维数组,输出图像即是输出二维数组的各个元素,我们要从这几方面入手:[0][0]号元素是否为空;图像的规律(从行和列分别分析);以及图像的对称性,有的话要分两次输出。

2.分类

下面我们来分析[0][0]号元素为空的情况,这有两个例子,像前两个我们直接按规律编程就好,当然,还有一个例子第一个元素为空,所以我们要先输出第一行的元素后换行,从第二行开始的第一个元素为空,所以我们就可以开始找规律啦(ps:本人用这种方法,当然还有其他的方法哦)。

1.

#include<stdio.h>
int main()
{
     int i,j,k;
     for(i=0;i<=3;i++)
     {
            for(j=0;j<=2-i;j++)
                printf(" ");
            for(k=0;k<=2*i;k++)
                printf("*");
                printf("\n");
     }
     for(i=0;i<=2;i++)
     {
           for(j=0;j<=i;j++)
               printf(" ");
           for(k=0;k<=4-2*i;k++)
               printf("*");
               printf("\n");
     }
     return 0;
}

2.

#include<stdio.h>
int main()
{
        char a[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
        int i,j;
        for(i=0;i<5;i++)
        {
             for(j=0;j<5;j++)
                  printf("%c",a[i][j]);
                  printf("\n");
        }
        return 0;
}

3.

#include<stdio.h>
int main()
{
     int i,j,k,m;
     for(i=0;i<5;i++)
         printf("*");
     for(j=0;j<=3;j++)
     {
         printf("\n");
         for(k=0;k<=j;k++)
             printf(" ");
         for(m=0;m<5;m++)
             printf("*");
     }
     printf("\n");
     return 0; 
}

3.规律

在2中我们说到了规律,现在我们就来谈谈规律。像第一个例子中的图形之间是没有空格的,我们可以整体找规律,分为空格和星号两部分,不过要明确的是先输出的一个在输出后他的位置就已经被占了,再输出的一个要重新定义一个变量进行循环(ps:这个先输出占位的问题困扰了我好久),附一张图片来说明;那第二个例子之间是有空格的,那我们就需要先定义一个数组再赋值,然后再定义两个变量输出数组即可,说起来简单,赋值是比较麻烦的。(ps:如果大神们有好方法还是望推荐的);第三个例子我们是从第二行开始找规律的,同样是分为空格和星号,这样就简单多啦。

4.编译运行

另:补充

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

这类图形我们采用for循环。外循环控制行,内循环控制列,如果图形尖朝上,可以改变条件,让条件随着外循环变化;尖朝下,可以初始化值,让初始化值随外循环变化,即

 int i,j;
    for(i=0;i<5;i++)
    {
        for(j=i;j<5;j++)
        {
            System.out.print("*");
        }
        System.out.println();
    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<=i;j++)
        {
            System.out.print("*");
        }
        System.out.println();
    }

转载于:https://www.cnblogs.com/lzxJane/p/6296643.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值