C++ 中打印内部递减模式2025 年 5 月 15 日 | 阅读 11 分钟 引言模式打印是编程中的一个基本概念,有助于提高逻辑思维和对嵌套循环的理解。一种特殊的模式是内部递减模式,其中每行的元素数量随着向下移动而逐渐减少。 在此模式中,您通常从第一行固定数量的元素开始。对于每一行,元素数量都会减少一个。元素本身可以是数字、字符或符号,具体取决于要求。这种类型的模式在基础编程练习中很受欢迎,通常用于教导学生如何有效地管理循环和条件。 什么是内部递减模式?例如,您可能想打印如下内容 此模式显示
在 C++ 中创建模式的步骤理解行和列
使用嵌套循环
打印数字的逻辑
转到下一行
方法 1:简单方法示例输出 Enter the number of rows: 5 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 说明步骤 1:从用户处获取输入 程序首先要求用户输入行数(n)。此输入决定了模式将有多少行。例如,如果用户输入 5,则模式将有 5 行。这使得程序更加灵活,因为它可以根据用户的输入生成任意大小的模式。 步骤 2:外循环(行) 外循环控制模式中的行数。它从 i = 0 循环到 i < n。每次外循环运行时,它都代表模式的一行。
步骤 3:内循环(列) 内循环嵌套在外循环内。它的工作是在每一行中打印数字。
例如
这就是如何管理元素数量的减少。 步骤 4:打印数字 在内循环中,打印每个数字(j)。在打印每个数字后,添加一个空格 (“ ”) 以分隔同一行中的数字。这确保数字并排显示在一行中。 步骤 5:转到下一行 打印完一行中的所有数字后,程序使用 cout << endl; 移至下一行。这确保下一行的数字从新行开始。 步骤 6:重复过程 外循环继续运行,为每一行重复内循环。每一新行,列的数量都会因条件 j <= n - i 而减少。这就是为什么模式看起来像一个三角形,每行后面的数字越来越少。 步骤 7:结束程序 打印完所有行后,程序结束。完整的模式显示在屏幕上。 示例演练假设用户输入 5
程序完成,最终输出为完整模式。 复杂度分析时间复杂度 内部递减模式打印的时间复杂度取决于行数(n)以及总共打印的元素数量。 外循环 外循环运行 n 次,为每一行运行一次。 内循环
内循环的总迭代次数是 n 到 1 的数字之和 总迭代次数 = n + (n-1) + (n-2) + ... + 1 = n * (n + 1) / 2 这简化为时间复杂度为O(n²)。 空间复杂度 该程序仅使用少量变量进行循环和存储输入(n、i、j),因此空间复杂度为 O(1)。 方法 2:反向循环递减此方法对内循环使用反向循环,从每行的最大数量开始并递减到 1。它实现了相同的结果,但提供了对循环管理的另一种视角。 示例输出 Enter the number of rows: 5 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 说明步骤 1:从用户处获取输入 程序首先要求用户输入行数(n)。n 的值定义了将打印多少行。 例如,如果用户输入 5,则模式将有 5 行。 步骤 2:外循环(行) 外循环从 1 循环到 n,这意味着它将从 i = 1 循环到 n。
步骤 3:内循环(反向计数) 内循环从 n 循环到 i,其中 n 是当前行中的最大元素数量。
步骤 4:打印数字 在内循环中,打印数字 (n - j + 1)。
步骤 5:转到下一行 打印完一行中的所有数字后,程序使用 cout << endl; 移至下一行。
步骤 6:重复过程 外循环从 i = 2 继续到 n,每次递减打印的列数。
步骤 7:结束程序 打印完所有行后,程序完成,完整的模式显示在屏幕上。 n = 5 的示例演练
程序以反向递减的顺序显示整个模式,并且此方法保持逻辑清晰高效。 复杂度分析时间复杂度
时间复杂度:O(n²) 空间复杂度
方法 3:单循环递减方法单循环递减方法是一种模式打印技术,我们使用单个循环来减少每一行打印的元素数量。而不是从固定范围打印数字(例如从 n 递减),我们根据当前行逐渐减小范围。此方法简化了逻辑并减少了对嵌套循环的需要,使其在时间和空间复杂度方面都更有效。 示例输出 Enter the number of rows: 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 说明步骤 1:从用户处获取输入
步骤 2:外循环(行)
步骤 3:内循环(打印数字)
步骤 4:打印数字
步骤 5:完成行 外循环继续将 i 从 n 递减到 1。 i 的每次迭代都确保每一行打印的数字更少。 例如
这样,我们每一行打印的数字都更少。 步骤 6:程序结束
复杂度分析时间复杂度
时间复杂度:O(n²) 空间复杂度
|
在本文中,我们将研究 C++ 算法,用于打印 Smarandache-Wellin 数列的前 m 项。但是,首先,我们需要了解 Smarandache-Wellin 数列。一系列 Smarandache-Wellin 数称为 Smarandache-Wellin 数列。被称为 Smarandache-Wellin 数的整数是通过连接...
阅读 6 分钟
金矿问题展示了动态编程派生的基本思想,包括优化、决策和状态转换概念。在现实世界问题中,问题的基于网格的布局和移动限制使得可以使用该问题来帮助执行诸如资源规划等任务...
14 分钟阅读
本文讨论了 C++ 和 Ada 之间的区别。在理解区别之前,让我们先了解一下各自。C++ 是什么?C++ 是 Bjarne Stroustrup 于 1985 年开发的,作为 C 编程语言的增强版,旨在为开发人员提供高级抽象……
阅读 4 分钟
在本文中,我们将讨论,包括其语法、示例、优点以及许多其他内容。引言:在 C++ 全局中,理解流的细节及其格式化机制是流式 I/O 的核心。一个有用的功能是 C++ 标准库中的 std::basic_ios::copyfmt...
7 分钟阅读
简介:在 C++ 编程中,“奇偶轮流游戏”是一个简单的两人游戏,涉及两个数字。该游戏遵循一组规则,玩家轮流根据数字是偶数还是奇数来更改该数字。该游戏可以...
阅读 4 分钟
概述 C++20 标准引入了 source_location,这是一个用于确定源代码详细信息的实用工具,包括文件名、函数名、行号和列号。它的主要应用是在与程序相关的调试、日志记录和诊断过程中...
7 分钟阅读
引言图论是研究图的特征的分子数学之一,图是包含顶点或节点并由边或链接连接的数学结构。这样的图可以反映社会、计算机或任何其他类型的网络、生物结构,甚至……
11 分钟阅读
在本文中,我们将讨论 C++ 中二进制字符串的最长非递增子序列。引言:最长非递增子序列 (LNIS) 的目标通常是找到二进制字符串中最长的非递减或保持不变的子序列的长度……
5 分钟阅读
引言 “C 替代方案”指的是开发人员可以选择的替代 C 或与 C 一同使用的编程语言和框架。这些选项提供了多样化的功能、范例和性能特征,可满足不同的改进需求和选项。虽然 C 是一种有效且广泛使用的语言,以其...而闻名
阅读 4 分钟
圆周排列中的盒子连接是计算机编程中的经典问题之一,以及其他一些关于数据结构的问题。有些表述要求将提供的盒子或片段以圆周排列的形式形成,这成为挑战的关键......
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India