返回

基本图形的打印

发布时间:2023-02-16 04:48:10 225

在C语言中通过循环对进行各种图形的打印有助于提升逻辑和分析能力

一.线段图案

用一个循环即可实现线段图案的打印

#include 
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
for(int i=0;i<n;i++)
{
printf("*");
}
printf("\n");
}
return 0;
}

输入:7

输出:*******


二.正方形图案

在线段图案的基础上,进行一个嵌套循环以打印多个线段即可实现正方形的打印

#include 

int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}

输入:4

输出:基本图形的打印_逻辑与分析


三.直角三角形图案

观察可知,每行的 * 的个数都与行数相等,进行一个嵌套循环即可

#include 
int main()
{
int n;
while(scanf("%d",&n) !=EOF)
{
for(int i=0;i<n;i++)//控制行数
{
for(int j=0;j<=i;j++)//控制列数
{
printf("* ");
}
printf("\n");
}
}
return 0;
}

输入:5

输出:基本图形的打印_逻辑与分析_02


此外可以通过观察可以得知,每行的行序数和列序数是从0开始进行周期变化的,可以在这个基础上对代码进行一下调整,将 * 图案换成 i 和 j ,以打印出一个9*9乘法口诀表

#include
int main()
{
for (int i = 1; i <= 9; i++)//控制行数,注意初始值是1
{
for (int j = 1; j <= i; j++)
{
printf("%d*%d=%-2d ", i, j, i * j);
}
printf("\n");
}
return 0;
}

输出:

基本图形的打印_嵌套循环_03



四.翻转直角三角形图案

翻转直角三角形的打印与直角三角形类似,注意初始值的调整

#include 
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
for(int i=n;i>0;i--)//控制行
{
for(int j=i;j>0;j--)//控制每行打印的个数,注意从i开始
{
printf("* ");
}
printf("\n");
}
}
return 0;
}

输入:5

输出:基本图形的打印_嵌套循环_04


五.带空格的直角三角形图案

带空格的直角三角形图案的打印与直角三角形类似,可以理解为用空格把直角三角形的 * 顶到后面。在打印每一行时,先打印空格,再打印 *

#include 
int main()
{
int n;
while(scanf("%d",&n) !=EOF)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)//打印空格
{
printf(" ");//注意有2个空格
}
for(int k=0;k<=i;k++)//打印 *
{
printf("* ");
}
printf("\n");
}
}
return 0;
}

输入:5

输出:基本图形的打印_嵌套循环_05


六.金字塔图案

金字塔图案与带空格的三角形图案类似,只需要在打印空格的时候将2个空格换成1个空格

#include 
int main()
{
int n;
while(scanf("%d",&n) !=EOF)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)
{
printf(" ");//注意空格个数
}
for(int k=0;k<=i;k++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}

输入:4

输出:基本图形的打印_嵌套循环_06


七.翻转金字塔图案

与把直角三角形翻转成倒三角形类似,注意i和j的初始值

#include 
int main() {
int n;
while (scanf("%d", &n) != EOF) {
for (int i = n; i > 0; i--) {
//打印空格
for (int j = 0; j < n - i; j++) {
printf(" ");
}
//打印*
for (int k = 0; k < i; k++) {
printf("* ");
}
printf("\n");
}
}
return 0;
}

输入:5

输出:基本图形的打印_逻辑与分析_07



附:图形的组合

了解以上简单的图形打印后,可以将数个不同的图形进行组合,以输出其他更丰富的图形


例:打印菱形

通过观察可以发现一个菱形可以由三部分组成

  1. 打印金字塔
  2. 打印线段
  3. 打印倒金字塔
#include 
int main() {
//1.打印n*n上金字塔
//2.打印一行n+1个*
//3.打印n*n下金字塔
int n;
while (scanf("%d", &n) != EOF) {

for (int i = 0; i < n; i++) { //打印上金字塔
for (int j = 0; j < n - i; j++) {
printf(" ");
}
for (int k = 0; k <= i; k++) {
printf("* ");
}
printf("\n");
}

for (int m = 0; m < n + 1; m++) { //打印一行
printf("* ");
}

printf("\n");

for (int i = n; i > 0; i--) { //打印下金字塔
//打印空格
for (int j = 0; j <= n - i; j++) {
printf(" ");
}
//打印*
for (int k = 0; k < i; k++) {
printf("* ");
}
printf("\n");
}
}
return 0;
}

输入:3

输出:基本图形的打印_嵌套循环_08


例:打印箭形

打印箭形也可分为三个步骤

  1. 打印变式带空格的直角三角形
  2. 打印线段
  3. 打印带空格的翻转直角三角形

注意*之间没有空格

#include
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)//打印变式的带空格的直角三角形
{
for (int m = 0; m < n-i; m++)
{
printf(" ");
}
for (int n = 0; n <= i; n++)
{
printf("*");//注意*后没有空格
}
printf("\n");
}

for (int i = 0; i < n+1; i++)//打印线段
{
printf("*");
}
printf("\n");

for (int i = n; i > 0; i--)//打印带空格的翻转直角三角形
{
for (int m = n-i; m >= 0 ; m--)
{
printf(" ");
}
for (int n = i; n >0; n--)
{
printf("*");
}
printf("\n");
}

return 0;
}

输入:3

输出:基本图形的打印_逻辑与分析_09


此外还可以变通为其他图形,例如K形团、斜形图案和反斜形图案等,掌握其基本原理便可以得心应手输出自己想要的图案。

基本图形的打印_图形_10                                  基本图形的打印_嵌套循环_11                                         基本图形的打印_嵌套循环_12

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线