一、基础图形类型

1. 矩形类图形

实心矩形 (5行7列)

* * * * * * * 
* * * * * * * 
* * * * * * * 
* * * * * * * 
* * * * * * * 
#include <stdio.h>

int main(){
    int i, j;
    for(i=0;i<5;i++){
        for(j=0;j<7;j++){
            printf("* ");
        }
        printf("\n");
    }




    return 0;
}

空心矩形 (5行7列)

* * * * * * * 
*           * 
*           * 
*           * 
* * * * * * * 
#include <stdio.h>

int main(){
    int i, j;
    for(i=0;i<5;i++){
        for(j=0;j<7;j++){
            if(i==0 || i ==4 || j==0 || j==6){
                printf("* ");
            }else{
                printf("  ");
            }
        }
        printf("\n");
    }




    return 0;
}

2. 三角形类图形

左直角三角形 (5行)

* 
* * 
* * * 
* * * * 
* * * * * 
#include <stdio.h>

int main(){
    int i, j;
    
    for(i=0;i<5;i++){
        for(j=0;j<=i;j++){
            printf("* ");
        }
        printf("\n");
    }


    return 0;
}

右直角三角形 (5行)

        * 
      * * 
    * * * 
  * * * * 
* * * * * 
#include <stdio.h>

int main(){
    int i, j;
    
    for(i=0;i<5;i++){
        for(j=0;j<4-i;j++){
            printf("  ");
        }
        for(j=0;j<=i;j++){
            printf("* ");
        }
        printf("\n");
    }


    return 0;
}

倒直角三角形 (5行)

* * * * * 
* * * * 
* * * 
* * 
* 
#include <stdio.h>

int main(){
    int i, j;
    
    for(i=4;i>=0;i--){
        for(j=0;j<=i;j++){
            printf("* ");
        }
        printf("\n");
    }




    return 0;
}

正立等腰三角形 (5行)

    * 
   * * 
  * * * 
 * * * * 
* * * * * 
#include <stdio.h>

int main(){
    int i, j;
    
    for(i=0;i<5;i++){
        for(j=0;j<4-i;j++){
            printf(" ");
        }
        for(j=0;j<=i;j++){
            printf("* ");
        }
        printf("\n");
    }




    return 0;
}

带空心的等腰三角形 (5行)

    * 
   * * 
  *   * 
 *     * 
* * * * * 
#include <stdio.h>

int main(){
    int i, j;
    
    for(i=0;i<5;i++){
        for(j=0;j<4-i;j++){
            printf(" ");
        }
        for(j=0;j<=i;j++){
            if(j==0 || j==i || i == 4){
                printf("* ");
            }else{
                printf("  ");
            }
            
        }
        printf("\n");
    }




    return 0;
}

3. 金字塔类图形

实心金字塔 (5层)

        * 
      * * * 
    * * * * * 
  * * * * * * * 
* * * * * * * * * 
#include <stdio.h>

int main(){
    int i, j;
    
    for(i=0;i<5;i++){
        for(j=0;j<(4-i)*2;j++){
            printf(" ");
        }
        for(j=0;j<i*2+1;j++){
            printf("* ");
        }
        printf("\n");
    }



    return 0;
}

数字金字塔 (5层)

    1 
   121 
  12321 
 1234321 
123454321 
#include <stdio.h>
#include <math.h>

int main(){
    int i, j;
    
    for(i=0;i<5;i++){
        for(j=0;j<4-i;j++){
            printf(" ");
        }
        for(j=-i;j<=i;j++){
            printf("%d", 1+i-abs(j));
        }
        printf("\n");
    }
    

    return 0;
}

字母金字塔 (5层)

        A 
      A B A 
    A B C B A 
  A B C D C B A 
A B C D E D C B A 
#include <stdio.h>
#include <math.h>

int main(){
    int i, j;
    
    for(i=0;i<5;i++){
        for(j=0;j<8-i*2;j++){
            printf(" ");
        }
        for(j=-i;j<=i;j++){
            printf("%c ", 'A'+i- abs(j));
        }
        printf("\n");
    }

    return 0;
}

二、进阶图形类型

1. 对称图形

菱形 (5层)

        * 
      * * * 
    * * * * * 
  * * * * * * * 
* * * * * * * * * 
  * * * * * * * 
    * * * * * 
      * * *  
        * 
#include <stdio.h>
#include <math.h>

int main(){
    int i, j, k;
    
    for(i=-4;i<=4;i++){
        for(j=0;j<abs(i)*2;j++){
            printf(" ");
        }
        for(k=0;k<9-j;k++){
            printf("* ");
        }
        printf("\n");
    }

    return 0;
}

沙漏形 (5层)

* * * * * * * * * 
 * * * * * * * 
  * * * * * 
   * * * 
    * 
   * * * 
  * * * * * 
 * * * * * * * 
* * * * * * * * * 
#include <stdio.h>
#include <math.h>

int main(){
    int i, j;
    for(i=-4;i<=4;i++){
        for(j=0;j<4-abs(i);j++){
            printf(" ");
        }
        for(j=0;j<abs(i)*2+1;j++){
            printf("* ");
        }
        printf("\n");
    }

    return 0;
}

X形 (5行5列)

*       * 
  *   *   
    *     
  *   *   
*       * 
#include <stdio.h>
#include <math.h>

int main(){
    int i, j;
    
    for(i=-2;i<=2;i++){
        for(j=0;j<4-abs(i)*2;j++){
            printf(" ");
        }
        printf("*");
        for(j=0;j<4*abs(i)-1;j++){
            printf(" ");
        }
        if(i!=0){
            printf("*");
        }
        printf("\n");
    }




    return 0;
}

2. 数字/字母规律图形

螺旋矩阵 (5×5)

 1  2  3  4  5 
16 17 18 19  6 
15 24 25 20  7 
14 23 22 21  8 
13 12 11 10  9 
#include <stdio.h>

int main(){
    int a[5][5] = {0}, k=1;
    int col, i, j;
    int left = 0, right = 4, upper = 0, buttom = 4;
    while(k<=25){
        //左到右
        
        for(col = left;col<=right;col++){
            a[upper][col] = k++;
            }
        upper++;
        
        //上到下
        for(col = upper;col <=buttom;col++){
            a[col][right] = k++;
        }
        right--;
        
        //右到左
        for(col = right;col>=left;col--){
            a[buttom][col] = k++;
        }
        buttom--;
        
        //下到上
        for(col = buttom; col >= upper;col--){
            a[col][left] = k++;
        }
        left++;
    }
    
    
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            printf("%2d ", a[i][j]);
        }
        printf("\n");
    }

    return 0;
}

字母三角形 (5行)

A 
B C 
D E F 
G H I J 
K L M N O 
#include <stdio.h>

int main(){
    char ch = 'A';
    int i, j;
    
    for(i=0;i<5;i++){
        for(j=0;j<=i;j++){
            printf("%c ", ch++);
        }
        printf("\n");
    }



    return 0;
}

3. 特殊符号图形

棋盘格 (8×8)

# # # # # # # # 
 # # # # # # # #
# # # # # # # # 
 # # # # # # # #
# # # # # # # # 
 # # # # # # # #
# # # # # # # # 
 # # # # # # # #
#include <stdio.h>

int main(){
    int i, j;
    for(i=0;i<8;i++){
        if(i%2){
            printf(" ");
        }
        for(j=0;j<8;j++){
            printf("# ");
        }
        printf("\n");
    }




    return 0;
}

心形

  * *     * * 
*     * *     * 
*             * 
  *         * 
    *     * 
      * * 
       * 
#include <stdio.h>

int main() {
    int i, j;
    
    for(i=0;i<7;i++){
        for(j=0;j<15;j++){
            if(i==0 && (j==2 || j==4 || j==9 || j==11) || 
               i==1 && (j==0 || j==6 || j==7 || j==14) ||
               i==2 && (j==0 || j==14)||
               i==3 && (j==2 || j==12)||
               i==4 && (j==4 || j==10)||
               i==5 && (j==6 || j==8)||
               i==6 && j==7
            ){
                printf("*");
            }else{
                printf(" ");
            }
        }
        printf("\n");
    }
    
    
    return 0;
}