c语言实现一些简单图形的打印

 1 #define _CRT_SECURE_NO_WARNINGS 1 

因为笔者采用的是VS的编译环境所以有了上面的这一句话

我们都知道平面图形是由一条条线段构成,所以我们就先实现线段的打印

 1 //打印自定义长度的线段
 2 #include<stdio.h>
 3 int main()
 4 {
 5     int i = 0;
 6     int n;
 7     while (~scanf("%d",&n))
 8     {
 9         for (i = 0; i < n; i++)
10             printf("* ");
11         printf("\n");
12     }
13     return 0;

运行结果

那么,线段学会了,我们就可以进行简单图形的打印了

首先我们从正方形开始:

 1 //打印自定义边长的正方形
 2 #include<stdio.h>
 3 int main()
 4 {
 5     int j = 0,i = 0;
 6     int n;
 7     while (~scanf("%d",&n))
 8     {
 9         for (i = 0; i < n; i++)//控制行
10         {
11             for (j = 0; j < n; j++)//控制列
12                 printf("* ");
13             printf("\n");
14         }
15     }
16     return 0;
17 }
 

运行结果

 接下来是三角形:(笔者准备了六种三角形)

  1 //打印三角形—1
  2 #include<stdio.h>
  3 int main()
  4 {
  5     int j = 0,i = 0,n;
  6     while (~scanf("%d",&n))
  7     {
  8         for (j = 0; j < n; j++)//行
  9         {
 10             for (i = 0; i < n - j; i++)//列
 11             {
 12                 printf("* ");
 13             }
 14             printf("\n");
 15         }
 16     }
 17     return 0;
 18 }
 19  
 20 //打印三角形—2
 21 #include<stdio.h>
 22 int main()
 23 {
 24     int j = 0,n;
 25     while (~scanf("%d",&n))
 26     {
 27         for (j = 0; j < n; j++)//行
 28         {
 29             for (i = 0; i <= j; i++)//列
 30             {
 31                 printf("* ");
 32             }
 33             printf("\n");
 34         }
 35     }
 36     return 0;
 37 }
 38 
 39 //打印三角形—3
 40 #include<stdio.h>
 41 int main()
 42 {
 43     int j = 0,n;
 44     while (~scanf("%d",&n))
 45     {
 46         for (j = 0; j < n; j++)//行
 47         {
 48             for (i = 0; i < n - j - 1; i++)//列
 49             {
 50                 printf("  ");
 51             }
 52             for (i = 0; i <= j; i++)
 53             {
 54                 printf("* ");
 55             }
 56             printf("\n");
 57         }
 58     }
 59     return 0;
 60 }
 61 
 62 //打印三角形—4
 63 #include<stdio.h>
 64 int main()
 65 {
 66     int j = 0,n;
 67     while (~scanf("%d",&n))
 68     {
 69         for (j = 0; j < n; j++)//行
 70         {
 71             for (i = 0; i < j ; i++)//列
 72             {
 73                 printf("  ");
 74             }
 75             for (i = 0; i < n - j ; i++)
 76             {
 77                 printf("* ");
 78             }
 79             printf("\n");
 80         }
 81     }
 82     return 0;
 83 }
 84 
 85 //打印三角形—5
 86 #include<stdio.h>
 87 int main()
 88 {
 89     int j = 0,n;
 90     while (~scanf("%d",&n))
 91     {
 92         for (j = 0; j < n; j++)//行
 93         {
 94             for (i = 0; i <= n - j ; i++)//列
 95             {
 96                 printf(" ");
 97             }
 98             for (i = 0; i <= j; i++)
 99             {
100                 printf("* ");
101             }
102             printf("\n");
103         }
104     }
105     return 0;
106 }
107 
108 //打印三角形—6
109 #include<stdio.h>
110 int main()
111 {
112     int j = 0,n;
113     while (~scanf("%d",&n))
114     {
115         for (j = 0; j < n; j++)//行
116         {
117             for (i = 0; i < j; i++)//列
118             {
119                 printf(" ");
120             }
121             for (i = 0; i < n - j; i++)
122             {
123                 printf("* ");
124             }
125             printf("\n");
126         }
127     }
128     return 0;
129 }

 

  

   

   

   

   

 

 

 

现在就可以尝试一下图形的挖空了

我们仍然保持之前的顺序从正方形到三角形:

//空心正方形
#include<stdio.h>
int main()
{
    int j = 0,i=0;
    int n;
    while (~scanf("%d",&n))
    {
        for (j = 0; j < n; j++)
        {
            for (i = 0; i < n; i++)
            {
                if (j == 0 || i==0 ||j==n-1 || i==n-1)
                    printf("* ");
                else
                    printf("  ");
            }
            printf("\n");
        }
    }
}
 1 //空心三角形
 2 #include<stdio.h>
 3 int main()
 4 {
 5     int n;
 6     int i = 0,j = 0;
 7     while (~scanf("%d",&n))
 8     {
 9         for (i = 0; i < n; i++)
10         {
11             for (j = 0; j <= i; j++)
12             {
13                 if (j == 0 || i == j || i==n-1 )
14                     printf("* ");
15                 else
16                     printf("  ");
17             }
18                 
19             printf("\n");
20         }
21     }
22 }

   

 

 

 那么我们可以从以上知识尝试一下自己打出一个菱形以及空心菱形

 1 #define _CRT_SECURE_NO_WARNINGS 1
 2 #include<stdio.h>
 3 #include<math.h>
 4 int main()
 5 {
 6     int i = 0,j = 0;
 7     int n;
 8     while (~scanf("%d",&n))//在这的n我们必须保证是奇数
 9     {
10         for (i = 0; i < n; i++)
11         {
12             for (j = 0; j < abs(n / 2 - i); j++)
13                 printf(" ");
14             for (j = 0; j < n - 2 * abs(n / 2 - i); j++)
15                 printf("*");
16             printf("\n");
17         }
18     }
19     return 0;

为了更好的理解,笔者微微修改了以上代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
#include<Windows.h>
int main()
{
    int i = 0,j = 0;
    int n;
    while (~scanf("%d",&n))
    {
        for (i = 0; i < n; i++)
            printf("%2d",i);
        printf("\n");
        for (i = 0; i < n; i++)
        {
            
            for (j = 0; j < abs(n / 2 - i); j++)
            {
                printf("  ");
                Sleep(100);
            }
            for (j = 0; j < n - 2 * abs(n / 2 - i); j++)
            {
                printf("* ");
                Sleep(100);
            }
            printf("\n");
            Sleep(100);
        }
    }
    return 0;
}

此外在提供一个打印菱形的代码

#include<stdio.h>

int main()

{

    int i,j,n;

    {

         while (~scanf("%d",&n))

         {//上边部分

             for (i = 0; i < n; i++)

             {

                 for (j = i; j < n - 1; j++)

                      printf(" ");

                 for (j = 0; j < 2 * i + 1; j++)

                      printf("*");

                 printf("\n");

             }

             for (i = n - 2; i >= 0; i--) //这里i从n-2开始的,要是从n-1开始会出现两行相同的情况

             {

                 for (j = i; j < n - 1; j++)

                      printf(" ");

                 for (j = 0; j < 2 * i + 1; j++)

                      printf("*");

                 printf("\n");

             }//下边部分

         }

         return 0;

    }

}

当然,肯定要在这给几个笔者参考过的文章

参考 https://blog.csdn.net/marwi_study/article/details/88749427?utm_source=app

在这笔者再提供一个由字符组成的三角形 

#include<stdio.h>

int main()
{
    int i,n,k = 0;
    char ch = 'A';
    printf("请输入行数:");
    scanf("%d",&n);
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < 2*(n-i)-1; j++)
        {
            k++;
            if (k % 2 != 0)
            {
                printf("%c",ch++);
            }
            else
                printf("%c",ch);
        }
        printf("\n");
    }
    return 0;
}

最后可以大家可以尝试一下自己打印空心菱形以及由字符构成的图形

 

相关文章

一.C语言中的static关键字 在C语言中,static可以用来修饰局...
浅谈C/C++中的指针和数组(二) 前面已经讨论了指针...
浅谈C/C++中的指针和数组(一)指针是C/C++...
从两个例子分析C语言的声明 在读《C专家编程》一书的第三章时...
C语言文件操作解析(一)在讨论C语言文件操作之前,先了解一下...
C语言文件操作解析(三) 在前面已经讨论了文件打开操作,下面...