利用C语言如何实现一些简单图形的打印

 更新时间:2020年12月22日 10:47:57   作者:guguguhuha  
这篇文章主要给大家介绍了关于利用C语言如何实现一些简单图形的打印的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1#define_CRT_SECURE_NO_WARNINGS 1

因为笔者采用的是VS的编译环境所以有了上面的这一句话

我们都知道平面图形是由一条条线段构成,所以我们就先实现线段的打印

//打印自定义长度的线段
#include<stdio.h>
int main()
{
 int i = 0;
 int n;
 while (~scanf("%d", &n))
 {
 for (i = 0; i < n; i++)
 printf("* ");
 printf("\n");
 }
 return 0;

那么,线段学会了,我们就可以进行简单图形的打印了

首先我们从正方形开始:

//打印自定义边长的正方形
#include<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<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");
 }
 }
}
//空心三角形
#include<stdio.h>
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<stdio.h>
#include<math.h>
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<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;
    }
}

当然,肯定要在这给几个笔者参考过的文章

参考 https://www.jb51.net/article/202654.htm

在这笔者再提供一个由字符组成的三角形

#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;
}

最后可以大家可以尝试一下自己打印空心菱形以及由字符构成的图形

到此这篇关于利用C语言如何实现一些简单图形打印的文章就介绍到这了,更多相关C语言简单图形的打印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++实现屏幕截图功能

    C++实现屏幕截图功能

    这篇文章主要为大家详细介绍了C++实现屏幕截图功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • C语言实现万年历

    C语言实现万年历

    这篇文章主要为大家详细介绍了C语言实现万年历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • C++实现选择性排序(SelectionSort)

    C++实现选择性排序(SelectionSort)

    这篇文章主要为大家详细介绍了C++实现选择性排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C++中头文件的概念与基本编写方法

    C++中头文件的概念与基本编写方法

    这篇文章主要介绍了C++中头文件的概念与基本编写方法,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-12-12
  • 利用C++实现矩阵的相加/相称/转置/求鞍点

    利用C++实现矩阵的相加/相称/转置/求鞍点

    利用C++实现矩阵的相加/相称/转置/求鞍点。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • 二分查找算法在C/C++程序中的应用示例

    二分查找算法在C/C++程序中的应用示例

    这篇文章主要介绍了二分查找算法在C/C++程序中的使用示例,文中最后提到了使用二分查找法一个需要注意的地方,需要的朋友可以参考下
    2016-03-03
  • linux c多线程编程实例代码

    linux c多线程编程实例代码

    这篇文章主要介绍了linux系统中的c多线程编程实例,大家可以参考使用以下代码
    2013-11-11
  • C++中char*转换为LPCWSTR的解决方案

    C++中char*转换为LPCWSTR的解决方案

    最近在学习C++,遇到了一个char*转换为LPCWSTR的问题,通过查找资料终于解决了,所以下面这篇文章主要介绍了C++中char*转LPCWSTR的解决方案,文中通过详细的示例代码介绍的很详细,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • 数据结构用两个栈实现一个队列的实例

    数据结构用两个栈实现一个队列的实例

    这篇文章主要介绍了C++语言数据结构用两个栈实现一个队列的实例的相关资料,需要的朋友可以参考下
    2017-06-06
  • VC6.0实现读取Excel数据的方法

    VC6.0实现读取Excel数据的方法

    这篇文章主要介绍了VC6.0实现读取Excel数据的方法,非常实用的功能,需要的朋友可以参考下
    2014-07-07

最新评论