输出图像的几个例子分析

mac2022-06-30  12

第一次使用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)