欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【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;}

当然,你可以把*换成任意的符号,打印你想要的其他符号

但是值得注意的是,如果你将*换成了多个符号,那么相应的,空格也要换成多个空格

譬如说下面这个例子
【c语言】当你只会循环时,你也可以打印出好看的图案
在这里我将*替换为了@aaa@qq.com和@aaa@qq.com,也就是三个字符,相应的空格也应该输入三个,否则得到的将会是个错序的针形(当然你想打针形也可以啦(* ̄︶ ̄))