首页 > 其他分享 >基本图形的打印

基本图形的打印

时间:2022-10-23 22:38:49浏览次数:44  
标签:基本 图案 int 打印 空格 直角三角形 printf 图形

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

一.线段图案

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

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

输入:7

输出:*******


二.正方形图案

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

#include <stdio.h>

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 <stdio.h>
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<stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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<stdio.h>
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

标签:基本,图案,int,打印,空格,直角三角形,printf,图形
From: https://blog.51cto.com/u_15752114/5787632

相关文章

  • vim 工作区的基本操作
    vim工作区的操作多窗口:sp新文件名水平窗口打开一个新文件:vs新文件名垂直窗口打开一个新文件光标在多窗口之间的移动ctrl+w,h 向左ctrl+w,j......
  • Git篇—1.git基本使用
    createanewrepositoryonthecommandlineecho"#makePlugin-demo">>README.mdgitinitgitaddREADME.mdgitcommit-m"firstcommit"gitbranch-Mmastergitr......
  • 【转】vite 的基本使用
            ......
  • Linux-文件的基本权限
    文件权限由十个字母组成第一个字母:d:文件的目录l:文件的连接(linkfile)-:代表是一个文件剩下的九个字母,三个为一组,rwx:分别代表可读,可写,可执行;没有这个权限用-代替操......
  • 第四章.css基本属性
    一、字体属性二、文本属性 ......
  • OpenGLES绘制图形模板:OpenGl处理
    ps:先需要了解图形渲染管线的工作流程和原理,给开发者开放出来的顶点着色器和片段着色器使用方法提前了解的知识点:图形渲染管线需要绑定EGLContext,OPENGL是一个大的状态机......
  • 什么是响应式设计?响应式设计的基本原理是什么?如何进行实现?
    一.是什么?响应式布局的目的是为了让我们的页面能够在不同大小的设备屏幕上正常展示。能够使一张页面适配多种屏幕的布局方案,就是所谓的“响应式布局方案”响应式网站常......
  • kubernetes笔记-3-基本操作
    一、增删改查root@master:~#kubectlrunninig-deploy--image=nginx:1.14-alpine--port=80--replicas=1--dry-run=true  #创建一个容器;run已被弃用  --image:指......
  • 面向对象的三个基本特征?-小白妹
    面向对象的三个基本特征是:封装、继承和多态。继承:让某个类型的对象获得另一个类型的对象的属性的方法。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例......
  • 用函数打印闰年
    ​​#include<stdio.h>intrun_year(intx){ if(x%4==0&&x%100!=0||x%400==0) { return1; } else { return0; }}intmain(){  int......