第一次使用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();
    }
posted on 2017-01-18 14:33  李照璇  阅读(254)  评论(0编辑  收藏  举报