第十天:字符菱形

每日一道C++题:字符菱形

问题:给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。
要求:输入只有一行, 包含一个字符;输出该字符构成的菱形。

  1. 最基础的做法:
#include <iostream>
#include <iomanip>
using namespace std;int main() {char ch;cin >> ch;cout << "  " << ch << endl;cout << " " << ch << ch << ch << endl;cout << ch << ch << ch << ch << ch << endl;cout << " " << ch << ch << ch << endl;cout << "  " << ch << endl;return 0;
}
  1. 循环嵌套:

菱形规律:

  • 菱形的行数为 5 行(因为对角线长 5 个字符 )。
  • 每行的字符数量呈现先增加后减少的规律,且两边有空格填充。具体来说:
  • 第 1 行:1 个字符,前面有 2 个空格。
  • 第 2 行:3 个字符,前面有 1 个空格。
  • 第 3 行:5 个字符,前面有 0 个空格。
  • 第 4 行:3 个字符,前面有 1 个空格。
  • 第 5 行:1 个字符,前面有 2 个空格。
#include <iostream>
using namespace std;int main() {char ch;cin >> ch; for (int i = 0; i < 5; i++) {int spaceCount;if (i < 2) {spaceCount = 2 - i;} else {spaceCount = i - 2;}for (int j = 0; j < spaceCount; j++) {cout << " ";}int charCount = 2 * (2 - abs(2 - i)) + 1;for (int k = 0; k < charCount; k++) {cout << ch;}cout << endl;}return 0;
}
  • 外层循环控制行数:
    for (int i = 0; i < 5; i++) :循环 5 次,对应菱形的 5 行。 i 表示当前行数,从 0 到 4 。
  • 对于第 0 行和第 1 行( i < 2 ),空格数量 spaceCount = 2 - i 。例如,当 i = 0 时, spaceCount = 2 ;当 i = 1 时, spaceCount = 1 。
  • 对于第 2 行、第 3 行、第 4 行( i >= 2 ),空格数量 spaceCount = i - 2 。例如,当 i = 2 时, spaceCount = 0 ;当 i = 3 时, spaceCount = 1 ;当 i = 4 时, spaceCount = 2 。
  • 内层循环 for (int j = 0; j < spaceCount; j++) { cout << " "; } :根据计算得到的 spaceCount ,输出相应数量的空格。
  • int charCount = 2 * (2 - abs(2 - i)) + 1; :
  • abs(2 - i) 计算当前行与中间行(第 2 行, i = 2 )的距离。
  • 2 - abs(2 - i) 得到一个系数,乘以 2 再加 1 ,得到当前行要输出的字符数量。例如:

当 i = 0 时, abs(2 - 0) = 2 , 2 - 2 = 0 , charCount = 2 * 0 + 1 = 1 。
当 i = 1 时, abs(2 - 1) = 1 , 2 - 1 = 1 , charCount = 2 * 1 + 1 = 3 。
当 i = 2 时, abs(2 - 2) = 0 , 2 - 0 = 2 , charCount = 2 * 2 + 1 = 5 。
当 i = 3 时, abs(2 - 3) = 1 , 2 - 1 = 1 , charCount = 2 * 1 + 1 = 3 。
当 i = 4 时, abs(2 - 4) = 2 , 2 - 2 = 0 , charCount = 2 * 0 + 1 = 1 。

知识扩展

  1. 菱形的一般规律:
  • 对于对角线长度为 2n - 1 ( n 为正整数 )的菱形,行数为 2n - 1 行。本题中对角线长 5 个字符,即 2n - 1 = 5 ,解得 n = 3 。
  • 每行的空格数量和字符数量都有对称的规律,可以通过数学公式推导得出。例如,对于一般的 n ,第 i 行(从 0 开始计数 )的空格数量为 abs(n - 1 - i) ,字符数量为 2 * (n - 1 - abs(n - 1 - i)) + 1 。
  1. 字符和字符串输出:
  • 本题中只输出单个字符,所以使用 cout << ch; 。如果需要输出字符串,可以使用 cout << “string”; 或者结合字符数组等方式。
  1. 扩展到任意大小的菱形:
  • 可以将代码中的 5 行改为由用户输入的变量,从而构造不同大小的菱形。例如,让用户输入菱形的对角线长度(必须是奇数 ),然后根据上述规律动态生成菱形。代码大致如下:
#include <iostream>
#include <cmath>
using namespace std;int main() {char ch;int n;cin >> ch >> n;int rows = 2 * n - 1;for (int i = 0; i < rows; i++) {int spaceCount = abs(n - 1 - i);for (int j = 0; j < spaceCount; j++) {cout << " ";}int charCount = 2 * (n - 1 - spaceCount) + 1;for (int k = 0; k < charCount; k++) {cout << ch;}cout << endl;}return 0;
}
  • 这里  n  表示菱形的“半长”,对角线长度为  2n - 1  。用户输入字符  ch  和  n  ,程序可以生成不同大小的菱形。

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

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

相关文章

Qt 多线程编程最佳实践

在现代软件开发中&#xff0c;多线程编程是提升应用性能和响应性的关键技术。Qt 作为一个强大的跨平台框架&#xff0c;提供了丰富的多线程支持&#xff0c;包括 QThread、QtConcurrent、信号槽机制等。本文将深入探讨 Qt 多线程编程的最佳实践&#xff0c;帮助开发者避免常见陷…

Photo Studio PRO 安卓版:专业级照片编辑的移动解决方案

Photo Studio PRO 安卓版是一款功能强大的专业级照片编辑应用&#xff0c;旨在为用户提供丰富而强大的编辑工具和特效&#xff0c;帮助用户轻松地对照片进行美化和修饰。无论是摄影爱好者还是专业摄影师&#xff0c;都能通过这款应用实现从基础调整到高级合成的全流程编辑。 核…

2025高考志愿怎么填?张雪峰最新“保底”推荐来了!这4个专业专科也能拿高薪,毕业不愁!

专业选得好&#xff0c;就业跑不了&#xff01;2025年高考落幕&#xff0c;现在是决战未来的关键时刻&#xff0c;选专业比选学校更重要&#xff01; 今天&#xff0c;学长就根据张雪峰老师多次力荐、再结合2024年就业大数据&#xff0c;给大家盘点4个紧缺人才专业&#xff0c…

C++初学者4——标准数据类型

先导&#xff1a; 目录 一、整形 二、浮点型 &#xff01;保留指定小数位数 三、布尔类型 关系运算 逻辑运算 ​C逻辑运算四句口诀​ 四、字符型 ASCll码 C中的字符表示 字符比较 ASCII中的常用转换 大小写转换 转换成0~25 五、数据类型隐式转换 ​1. 隐式转…

HCIP的MGRE综合实验1

拓扑图&#xff1a;二、实验要求 1、R5为ISP&#xff0c;只能进行IP地址配置&#xff0c;其所有地址均配为公有Ip地址;2、R1和R5间使用PPP的PAP认证&#xff0c;R5为主认证方&#xff1b;R2与R5之间使用PPP的CHAP认证&#xff0c;R5为主认证方;R3与R5之间使用HDLC封装;3、R2、R…

Go语言实战案例-链表的实现与遍历

在数据结构的世界中&#xff0c;链表&#xff08;Linked List&#xff09; 是一种经典的线性结构&#xff0c;它以灵活的插入与删除能力著称。链表不像数组那样需要连续的内存空间&#xff0c;而是通过节点指针连接形成一条“链”。本篇我们将使用 Go 语言实现一个单向链表&…

C++常见的仿函数,预定义函数,functor,二元操作函数(对vector操作,加减乘除取余位运算等 )

C 标准库在 <functional> 头文件中为我们提供了一套非常方便的预定义函数对象&#xff08;也称为“仿函数”或 “functor”&#xff09;&#xff0c;它们可以像变量一样直接传递给 std::reduce 和其他标准算法。 你提到的 std::bit_or 和 std::multiplies 就是其中的成员…

【RH134 问答题】第 6 章 管理 SELinux 安全性

目录SELinux 是如何保护资源的&#xff1f;什么是自由决定的访问控制(DAC)&#xff1f;它有什么特点&#xff1f;什么是强制访问控制(MAC)&#xff1f;它有什么特点&#xff1f;什么是 SELinux 上下文&#xff1f;setenforce 0 命令的作用是什么&#xff1f;定义一条 SELinux 文…

【MacOS】发展历程

很高兴为您详细介绍 macOS 的详细发展历程。macOS 是苹果公司开发的操作系统&#xff0c;用于 Mac 电脑、iPad 和 Apple TV 等设备。以下是 macos 的主要版本和发展历程&#xff1a;1. System 7 (1991)发布日期&#xff1a;1991年特点&#xff1a;引入多任务处理功能。改进了拖…

智慧社区项目开发(二)——基于 JWT 的登录验证功能实现详解

在 Web 应用中&#xff0c;登录验证是保障系统安全的核心环节。本文将结合具体接口文档&#xff0c;详细讲解如何基于 JWT&#xff08;JSON Web Token&#xff09;实现登录验证功能&#xff0c;包括 JWT 配置、工具类封装、登录流程处理等关键步骤&#xff0c;帮助开发者快速理…

Jmeter的元件使用介绍:(七)后置处理器详解

Jmeter的后置处理器主要用于取样器执行后的提取数据操作。 Jmeter常用的后置处理器有:Json提取器、正则表达式提取器、边界提取器、Beanshell后置处理器。此外还有Xpath提取器、CSS选择器提取器等&#xff0c;由于这两项多用前端页面提取元素&#xff0c;目前的项目基本都是采…

Allure的安装,在Pytest中的简单使用以及生成测试报告

目录 1.Allure的安装 1--下载网址 2--选择对应系统版本下载 3--配置Allure环境变量 4--验证安装是否成功 5--配置JAVAJDK的环境变量&#xff08;如果已经配置&#xff0c;可以忽视这一步&#xff09; 2.python中pytestAllure 1--python安装Allure包 2--生成测试报告 1--使用pyt…

Oracle 数据库报 ora-00257 错误并且执行alter system switch logfile 命令卡死的解决过程

Oracle 数据库报 ora-00257 错误并且执行alter system switch logfile 命令卡死的解决过程 7月26日下午&#xff0c;某医院用户的 HIS 系统无法连接&#xff0c;报如下错误&#xff1a;初步判断是归档日志问题。 用户的 HIS 系统数据库是双节点 Oracle 11g Rac 集群。登录服务器…

ArKTS:List 数组

一种&#xff1a;/**# encoding: utf-8# 版权所有 2025 ©涂聚文有限公司™ # 许可信息查看&#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎# 描述&#xff1a; 数组# Author : geovindu,Geovin Du 涂聚文.# IDE : DevEco Studio 5.1.1 …

Spring Boot 3整合Spring AI实战:9轮面试对话解析AI应用开发

Spring Boot 3整合Spring AI实战&#xff1a;9轮面试对话解析AI应用开发 第1轮&#xff1a;基础配置与模型调用 周先生&#xff1a;cc&#xff0c;先聊聊Spring AI的基础配置吧。如何在Spring Boot 3项目中集成Ollama&#xff1f; cc&#xff1a;我们可以通过OllamaConfig.java…

标准SQL语句示例

一、基础操作1. 数据库操作-- 1. 创建数据库 CREATE DATABASE 数据库名称 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;-- 2. 删除数据库 DROP DATABASE IF EXISTS 数据库名称;-- 3. 选择数据库 USE 数据库名称;-- 4. 显示所有数据库 SHOW DATABASES;-- 5. 查看数据库创…

STM32-基本定时器

一.基本定时器简介 STM32F1 系列共有 8 个定时器&#xff0c;分别为&#xff1a;基本定时器、通用定时器、高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器&#xff0c;只能定时&#xff0c;没有外部IO。 二.基本定时器功能 上图为基本定时器的功能框…

ofd文件转pdf

主要后端使用Java实现&#xff0c;前端可随意搭配http请求添加依赖&#xff1a;<!-- OFD解析与转换库 --><dependency><groupId>org.ofdrw</groupId><artifactId>ofdrw-converter</artifactId><version>1.17.9</version></…

4.应用层自定义协议与序列化

1.应用层程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层1.1再谈“协议”协议是一种 "约定". socket api 的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些 "结构化的数据" 怎么办呢…

【QT搭建opencv环境】

本文参考以下文章&#xff1a; https://blog.csdn.net/weixin_43763292/article/details/112975207 https://blog.csdn.net/qq_44743171/article/details/124335100 使用软件 QT 5.14.2下载地址&#xff1a;download.qt.io 选择版本&#xff1a;Qt 5.14.2 Qt 5.14.2百度网盘链接…