第十天:字符菱形

每日一道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
英文地址,請注明出處:http://en.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百度網盤鏈接…