C语言打印图形小妙招

在c语言中我们常用使用空格和*来打印各种各样图形,像爱心

还有飞机

那么像这种打印图形一般有两种方法,一种是直接打印法, 另一种是函数打印法

直接打印法顾名思义就是使用printf函数直接打印图形,例如下面的飞机

#include <stdio.h>

int main() { printf(" @ / \ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");

return 0; }

但用这种方法小图形还好说但大图形无疑是一种恐怖的工作量

所以这个时候我们一般采用第二种方法---函数打印法

例如爱心

#include <stdio.h> int main() { int i, j; for ( i = 0; i <3 ; i++) { for ( j = 0; j < 5-2*i; j++) printf(" "); for (j = 0; j < 6+4*i; j++) printf("*"); for (j = 0; j < 9-4*i; j++) printf(" "); for (j = 0; j < 6 + 4 * i;j++) printf("*"); printf(" "); } for (i = 0; i < 3; i++) { for (j = 0; j < 31; j++) printf("*"); printf(" "); } for (i = 0; i < 9; i++) { for (j = 0; j < 1 + 2*i;j++) printf(" "); for (j = 0; j < 29 - 4* i; j++) printf("*"); printf(" "); } }

在这串代码中,爱心被分为了三个部分

头三行是由一个空格小三角形+*梯形+空格大三角形+*梯形组成

中三行是由一个3*31的*长方形组成

最后一部分是由一个空格三角形+一个大*三角形

如代码所示,我们用数学的数列知识可以得到每个图形的表达式

用两个for循环来表示行列,就可以输出我们滴爱心啦~

当然这种方法也有局限,像在毫无规律的时候就只能老老实实一个一个用printf打印

总结一下 C语言打印图形分两种直接打印法和函数打印法

第一种很灵活但很繁琐

第二种很方便但有局限

在遇到复杂图形的时候,两种方法灵活运用就能够顺利打印

你们学废了吗?(#^.^#)

经验分享 程序员 微信小程序 职场和发展