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, i = 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, i = 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, i = 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, i = 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, i = 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;

    }

}

當然,肯定要在這給幾個筆者參考過的文章

參考 //blog.csdn.net/marwi_study/article/details/88749427?utm_source=app

在這筆者再提供一個由字元組成的三角形 

#include<stdio.h>

int main()
{
    int i, j, 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;
}

最後可以大家可以嘗試一下自己列印空心菱形以及由字元構成的圖形

 

Tags: