超过光速c 发表于 2021-8-24 22:10:57

C语言打印各种三角形(学习记录)

本帖最后由 超过光速c 于 2021-8-24 22:15 编辑

在练习制作三子棋时,遇到了需要用for进行灵活的输出正方形宫格,就想起了打印*号三角形,然后索性再练习了一番。



#include <stdio.h>

int main(){
    int tmp;

    printf("请输需要打印的行数:");
    scanf("%d", &tmp);

// 打印靠左正三角形
    for(int i=1;i<=tmp;i++){
      for(int j=0;j<i;j++){
            printf("* ");
      }
      printf("\n");
    }

    // 打印靠左倒三角形
    for(int i=1;i<=tmp;i++){
      for(int j=0;j<tmp-i;j++){
            printf("* ");
      }
      printf("\n");
    }

    // 打印靠右的正三角形
    for(int i=1;i<=tmp;i++){
      // tmp-i 则空格数刚好比需要输出的列数少一个,也就是*号的位置
      for(int j=0;j<tmp-i;j++){
            printf(" ");
      }
      for(int k=0;k<i;k++){
            printf("* ");
      }
      printf("\n");
    }

    // 打印靠右的倒三角形,因为少一行,所以需要-1
    for(int i=1;i<=tmp-1;i++){
      for(int j=0;j<i;j++){
            printf(" ");
      }
      for(int k=0;k<tmp-i;k++){
            printf("* ");
      }
      printf("\n");
    }

    // 打印正大三角形
    for(int i=1;i<=tmp;i++){
      for(int j=0;j<tmp-i;j++){
            printf(" ");
      }
      for(int k=0;k<2*i-1;k++){
            printf("*");
      }
      printf("\n");
    }

    // 打印倒大三角形
    for(int i=1;i<=tmp-1;i++){
      for(int j=0;j<i;j++){
            printf(" ");
      }
      for(int k=0;k<(2*(tmp-i)-1);k++){
            printf("*");
      }
      printf("\n");
    }

    return 0;
}


------------------------------------------------------------------------------------------------------------------------------------------------------------------------

打印后的效果就是这样子了。


yobdc 发表于 2021-8-25 09:36:35

学习

Rebecca2021 发表于 2021-8-25 09:39:42

学到了{:7_131:}

Rebecca2021 发表于 2021-8-25 09:41:20

{:7_139:}

不大不小甲鱼 发表于 2021-8-25 13:45:56

666

Kayko 发表于 2021-8-25 15:48:16

{:10_254:}
页: [1]
查看完整版本: C语言打印各种三角形(学习记录)