1#define_CRT_SECURE_NO_WARNINGS 1 因为笔者采用的是VS的编译环境所以有了上面的这一句话 我们都知道平面图形是由一条条线段构成,所以我们就先实现线段的打印 //打印自定义长度的线段 #include int main() { int i = 0; int n; while (~scanf("%d", &n)) { for (i = 0; i < n; i++) printf("* "); printf("\n"); } return 0; 那么,线段学会了,我们就可以进行简单图形的打印了 首先我们从正方形开始: //打印自定义边长的正方形 #include int main() { int j = 0, i = 0; int n; while (~scanf("%d", &n)) { for (i = 0; i < n; i++)//控制行 { for (j = 0; j < n; j++)//控制列 printf("* "); printf("\n"); } } return 0; } 接下来是三角形:(笔者准备了六种三角形) //打印三角形—1 #include int main() { int j = 0, i = 0, n; while (~scanf("%d", &n)) { for (j = 0; j < n; j++)//行 { for (i = 0; i < n - j; i++)//列 { printf("* "); } printf("\n"); } } return 0; } //打印三角形—2 #include int main() { int j = 0, i = 0, n; while (~scanf("%d", &n)) { for (j = 0; j < n; j++)//行 { for (i = 0; i <= j; i++)//列 { printf("* "); } printf("\n"); } } return 0; } //打印三角形—3 #include int main() { int j = 0, i = 0, n; while (~scanf("%d", &n)) { for (j = 0; j < n; j++)//行 { for (i = 0; i < n - j - 1; i++)//列 { printf(" "); } for (i = 0; i <= j; i++) { printf("* "); } printf("\n"); } } return 0; } //打印三角形—4 #include int main() { int j = 0, i = 0, n; while (~scanf("%d", &n)) { for (j = 0; j < n; j++)//行 { for (i = 0; i < j ; i++)//列 { printf(" "); } for (i = 0; i < n - j ; i++) { printf("* "); } printf("\n"); } } return 0; } //打印三角形—5 #include int main() { int j = 0, i = 0, n; while (~scanf("%d", &n)) { for (j = 0; j < n; j++)//行 { for (i = 0; i <= n - j ; i++)//列 { printf(" "); } for (i = 0; i <= j; i++) { printf("* "); } printf("\n"); } } return 0; } //打印三角形—6 #include int main() { int j = 0, i = 0, n; while (~scanf("%d", &n)) { for (j = 0; j < n; j++)//行 { for (i = 0; i < j; i++)//列 { printf(" "); } for (i = 0; i < n - j; i++) { printf("* "); } printf("\n"); } } return 0; } 现在就可以尝试一下图形的挖空了 我们仍然保持之前的顺序从正方形到三角形: //空心正方形 #include 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"); } } } //空心三角形 #include int main() { int n; int i = 0, j = 0; while (~scanf("%d", &n)) { for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { if (j == 0 || i == j || i==n-1 ) printf("* "); else printf(" "); } printf("\n"); } } } 那么我们可以从以上知识尝试一下自己打出一个菱形以及空心菱形 #define _CRT_SECURE_NO_WARNINGS 1 #include #include int main() { int i = 0, j = 0; int n; while (~scanf("%d", &n))//在这的n我们必须保证是奇数 { for (i = 0; i < n; i++) { for (j = 0; j < abs(n / 2 - i); j++) printf(" "); for (j = 0; j < n - 2 * abs(n / 2 - i); j++) printf("*"); printf("\n"); } } return 0; 为了更好的理解,笔者微微修改了以上代码 #define _CRT_SECURE_NO_WARNINGS 1 #include #include #include 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 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://www.jb51.net/article/202654.htm 在这笔者再提供一个由字符组成的三角形 #include 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; } 最后可以大家可以尝试一下自己打印空心菱形以及由字符构成的图形