【习题——菱形的打印】

一、打印下面的图形(菱形)

我们可以先来看一个简单点的菱形:
输入描述:
输入一个char类型字符
输出描述:
输出一个用这个字符填充的对角线长5个字符,倾斜放置的菱形:
在这里插入图片描述

1、思路:

我们看到这个图形,可以直接打印出来,这个方法也是最简单的:

#include<stdio.h>
int main()
{char ch;scanf("%c", &ch);printf("  %c\n", ch);printf(" %c%c%c\n", ch,ch,ch);printf("%c%c%c%c%c\n",ch,ch, ch, ch, ch);printf(" %c%c%c\n", ch, ch, ch);printf("  %c\n", ch);return 0;
}

通过我们敲代码的过程可以发现,这种敲法太累了,不能节省时间。所以我们可以仔细看看这题,发现图形中的规律。

在这里插入图片描述
我们可以分成上下两个部分来发现规律,首先定义一个变量i,用它来表示行数,这里我是从0开始计算的,所以我们i的初值就赋值成0。第0行的时候,空格有2个,符号有1个;第1行的时候,空格有1个,符号有3个;第2行的时候,空格有0个,符号有5个,这就是上半部分的规律。

附一个图(便于理解):
在这里插入图片描述
我们再来看看下半部分:
在这里插入图片描述
我们依然可以从0开始算行数,一共有1行。
在这里插入图片描述
然后我们可以发现空格与行数之间的关系,以下半部分为例:

行数是0,空格可以用1乘以0+1表示,也就是(1*行数+1),这个式子对于第1行也同样适用,所以,我们的规律找到了,符号也是如此去寻找规律。

2、代码:

#include<stdio.h>
int main()
{char ch;scanf("%c", &ch);int i = 0;//上半部分for (i = 0; i < 3; i++)   //3是上半部分的行数{//根据图形,我们先要打印空格for (int j = 0; j <2-i; j++)//j是我们打印多少个空格{printf(" ");}//打印符号for (int j = 0; j < 2 * i + 1; j++){printf("%c", ch);}printf("\n");}//打印下半部分for (i = 0; i < 3; i++){//空格for (int j = 0; j < 1 * i + 1; j++){printf(" ");}//字符for (int j = 0; j < 2 * (2 - i) - 1; j++){printf("%c", ch);}printf("\n");}return 0;
}

输入一个字符:#
在这里插入图片描述
我们可以发现这个方法比直接输出要难理解许多,而且写的也很多,但是直接输出有很大的弊端,如果像下面这个图形的话,就不能简单的直接输出了。

3、菱形(大)

在这里插入图片描述
像这种图形就不适合一个一个的输出,这就需要我们去找规律,也是一样,分成上下部分去找。

在这里插入图片描述
在这里插入图片描述

发现规律的原则是一样的,大家可以自己下去找找看。

4、代码:
#include<stdio.h>
int main()
{char ch;scanf("%c", &ch);int i = 0;for (i = 0; i < 7; i++){for (int j = 0; j <6-i; j++){printf(" ");}for (int j = 0; j < 2 * i + 1; j++){printf("%c", ch);}printf("\n");//换行,每打印完一行要换行}for (int i = 0; i < 7; i++){for (int j = 0; j < i + 1; j++){printf(" ");}for (int j = 0; j < 2 * (6 - i)-1; j++){printf("%c", ch);}printf("\n");}return 0;
}

二、不知道行数的情况下,自己输入行数

上面的代码写完之后我们可以发现,每个代码都需要我们自己输入行数,但如果题目没有告诉行数就让我们输出菱形,我们该如何写?其实只需要用一个字母代表上面那些代码中的数字就行了,但是我们只需要输入菱形图一半的行数就可以了

#include<stdio.h>
int main()
{char ch;scanf("%c", &ch);int n = 0;scanf("%d", &n);for (int i = 0; i < n; i++){for (int j = 0; j < n - 1 - i; j++){printf(" ");}for (int j = 0; j < 2 * i + 1; j++){printf("%c", ch);}printf("\n");}for (int i = 0; i <n; i++){for (int j = 0; j < i+1; j++){printf(" ");}for (int j = 0; j < 2 * (n - 1 - i) - 1; j++){printf("%c", ch);}printf("\n");}return 0;
}

在这里插入图片描述

老样子,最后附上一张图片吧(希望大家喜欢!)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑马c++ STL部分 笔记(3) deque容器

双端数组&#xff0c;可以对头端进行插入删除操作 deque与vector区别&#xff1a; vector对于头部的插入删除效率低&#xff0c;数据量越大&#xff0c;效率越低&#xff08;每次头插&#xff0c;后面的元素就往后移&#xff09; deque相对而言&#xff0c;对头部的插入删除速…

【论文综述+多模态】腾讯发布的多模态大语言模型(MM-LLM)综述(2024.02)

论文链接&#xff1a;24.02.MM-LLMs: Recent Advances in MultiModal Large Language | 国内-链接 实时网站&#xff1a;https://mm-llms.github.io 参考说明1-readpaper:https://mp.weixin.qq.com/s/ESUVe1aTYFLVJ10S9c1dBg 一、什么是MM-LLM ? 多模态大语言模型&#xff…

我写了个ImageWindow应用

文章目录 0 引言1 应用简介2 主要功能和特点2.1 多图像同/异步像素级对比2.2 支持多达30种图像格式2.3 高效率的图像处理性能 3 简明使用教程3.1 软件下载安装与更新3.1.1 软件下载与安装3.1.2 软件更新 3.2 多视窗添加并自动最优排列3.3 多样化图像导入方式3.4 自动切换显示模…

node 之 模块化

1.什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 编程领域中的模块化 编程领域中的模块化&#xff0c;就是遵守固定的规则&#xff0c;把一个大文件拆成独立并…

怎么调用文心一言的api接口生成一个简单的聊天机器人(python代码)

寒假在学习大模型&#xff0c;但也没弄出多少眉目&#xff0c;电脑性能还有点小问题&#xff0c;大模型总跑不起来&#xff0c;只会简单调用一下现有的大模型的接口&#xff0c;例如&#xff1a;文心一言&#xff0c;下面展示一下代码&#xff1a; import tkinter as tk impor…

Mysql安装教程

一、下载 点开下面的链接&#xff1a;https://dev.mysql.com/downloads/mysql/ 点击Download 就可以下载对应的安装包了, 安装包如下: 二、解压 下载完成后我们得到的是一个压缩包&#xff0c;将其解压&#xff0c;我们就可以得到MySQL 8.0.31 的软件本体了(就是一个文件夹…

第三节-docker-cs架构分析

一、组成 docker engine&#xff1a;docker-client、rest-api、dockerd containerd&#xff1a; 1、管理容器生命周期 2、拉取/推送镜像 3、存储管理 4、调用runc 5、管理网络 containerd-shim&#xff1a;相当于一个驱动&#xff0c;containerd通过containerd-shim驱使…

关于静态应用程序安全测试(SAST)的自动修复(AutoFix)

SAST&#xff08;Static Application Security Testing&#xff0c;静态应用程序安全测试&#xff09;具是一种在软件工程中使用的安全解决方案&#xff0c;它主要用于在程序员编写好源代码后&#xff0c;无需经过编译器编译&#xff0c;直接对源代码进行扫描&#xff0c;以找出…

MYSQL05高级_查看修改存储引擎、InnoDB和MyISAM对比、其他存储引擎介绍

文章目录 ①. 查看、修改存储引擎②. InnoDB和MyISAM对比③. Archive引擎 - 归档④. Blackhole引擎丢数据⑤. CSV - 引擎⑥. Memory引擎 - 内存表⑦. Federated引擎 - 访问远程表⑧. Merge引擎 - 管理多个MyISAM⑨. NDB引擎 - 集群专用 ①. 查看、修改存储引擎 ①. 查看mysql提…

Kotlin的各种骚气语法

1.奇怪的中括号? 前几星期在群里见群友问这种是什么鬼,kt中有这种语法吗? 但其实这种是重写的操作符,分别是重写了setter和getter,类似于list[0]1这样 上面的两个方法声明如下: 不过这种语法很容易引起歧义,所以除非很适合的情况下不建议重写 ps:更多的操作符重载参考最下…

uniapp 部署h5,pdf预览

1.hubuilderx 打包h5。 2.上传部署包到服务器。 解压部署包&#xff1a;unzip h5.zip 。 3.nginx配置。 user root; worker_processes 1; #worker_cpu_affinity 0001 0010 0100 1000; #error_log logs/error.log; #error_log logs/error.log notice; error_log /var/l…

【重温设计模式】桥接模式及其Java示例

【重温设计模式】桥接模式及其Java示例 桥接模式的介绍 今天我们要探讨的&#xff0c;正是一种名为“桥接模式”的设计模式。桥接模式&#xff0c;英文名Bridge Pattern&#xff0c;是一种结构型设计模式&#xff0c;它的主要目的是将抽象部分与实现部分分离&#xff0c;使得两…

Windows Docker 部署 Redis

部署 Redis 打开 Docker Desktop&#xff0c;切换到 Linux 内核。然后在 PowerShell 执行下面命令&#xff0c;即可启动一个 redis 服务 docker run -d --name redis -p 6379:6379 redis-如果需要自启动&#xff0c;加 --restart always 参数即可。 连接 Redis 使用客户端连…

python dictionary 字典

Python 字典 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值 key>value 对用冒号 : 分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号 {} 中 ,格式如下 d {key1 : value1, key2 : value2, key3 : value3 }dict 作…

Vue依赖注入之Provide/Inject

1. 使用<script setup> 父组件 <template><div>这里是父组件的message值:{{ message }}</div><br /><div>这里是父组件的count值:{{ count }}</div><br /><classtest /> </template> <script setup> impor…

SpringBoot项目中如何结合Mybatis进行数据库查询

在Spring Boot项目中使用Mybatis进行数据库操作是一种常见的实现方式。下面我将展示如何在Spring Boot项目中整合Mybatis。这个示例将包括几个主要部分&#xff1a;项目依赖配置、配置文件、实体类、Mapper接口及其XML配置文件、服务类、以及一个简单的控制器。 1. 项目依赖配…

Linux Centos7配置SSH免密登录

Linux Centos7配置SSH免密登录 配置SSH免密登录说明&#xff1a; 分两步 第一步、给Server A生成密钥对 第二步、给Server B授权 生成密钥对之后&#xff0c;我们可以看看它保存的目录下的文件。 接下来我们就要把Server A&#xff08;10.1.1.74&#xff09;的公钥拷贝到Se…

AI新秀Mistral:“Open AI“ 新时代

最近互联网出现不少类似“下一代openai”、“GPT-4最强竞品”、“法国AI独角兽”、“欧洲的OpenAI”、“微软新宠儿”.... 的文章&#xff0c;都会附带一张图片&#xff0c;就是下面这张&#xff1a; 那么到底发生了什么&#xff0c;出来个什么东西呢&#xff1f;就是本文的主…

跟着cherno手搓游戏引擎【28】第一个游戏!源码解读!逐行注释!

源码解读&#xff1a; GameLayer层级&#xff1a;在构造函数中&#xff1a;创建窗口和相机&#xff0c;对随机数种子初始化&#xff1b; 在OnAttach方法中&#xff1a;初始化关卡&#xff1a;加载资源初始化地图信息&#xff1b;设置字体&#xff1b; 在OnUpdate方法中&…

从单体服务到微服务:多模式 Web 应用开发记录<三>预初始化属性

相关文章&#xff1a; 多模式 Web 应用开发记录<一>背景&全局变量优化多模式 Web 应用开发记录<二>自己动手写一个 Struts 开头先看一个简单的例子&#xff0c;这是 ftl 文件的一个表单&#xff1a; <form id"validateForm" action"#&quo…