【c语言】当你只会循环时,你也可以打印出好看的图案
程序员文章站
2024-03-16 13:52:22
...
当你已经学会了循环,这时加上顺序,选择结构,你已经将三大结构学会了,这时我们可以利用已学过的内容打印一些好看的图案
在我看来,打印这些图案的核心思想在于构造一个类似矩阵或者坐标系的东西,理所当然地我们用i和j表示行和列,那么每个格子都拥有一个坐标,你只需要确定哪些格子应该有填充物,哪些没有,这样就可以构造出一些你想要看到的图案。就像是绘画一样,你利用线条的粗细和空白可以构造出一个极度逼真的图像,但在这里,让我们先从大一些的地方来做
举个例子
譬如我们想打印一个菱形,并且我们希望能从外界输入这个菱形的一半(也就是一个三角形)的行数(也可以看做是高),我们应该构造如下的条件:
#include<stdio.h>
int main()
{int i,j,row,m;
printf("Input number of rows (half of the diamond):\n");
scanf("%d",&row);
m=2*row-1; //化半个菱形的参数为整个菱形的参数
for(i=0;i<row;i++) //对行循环
{
for(j=1;j<=m;j++) //对列循环
{
if(j>=row-i&&j<=row+i) //菱形是一个由中间逐渐外散的过程,随着行数的增加,那么这个外散的值逐渐增大
printf("*"); //这些格子需要放东西!!
else
printf(" "); //这些格子不需要放东西
/*当然反过来也是完全可以的!!!!*/
if(j==m)
printf("\n") //你当然是要换行的呀!!!
}
}
for(i=i-2;i>=0;i--)
{
for(j=1;j<=m;j++)
{
if(j>=row-i&&j<=row+1)
printf("*")
else
printf(" ")
if(j==m)
printf("\n"); //相信聪明的你已经发现,这是上面一过程的倒序了!
}
}
return 0;}
当然,你可以把*换成任意的符号,打印你想要的其他符号
但是值得注意的是,如果你将*换成了多个符号,那么相应的,空格也要换成多个空格
譬如说下面这个例子
在这里我将*替换为了@aaa@qq.com和@aaa@qq.com,也就是三个字符,相应的空格也应该输入三个,否则得到的将会是个错序的针形(当然你想打针形也可以啦(* ̄︶ ̄))
上一篇: 基于VC6.0恶搞小程序