C++程序打印X星型图案
展示不同形状的星星图案,如金字塔、正方形和菱形,是一种
基本编程和逻辑开发的常见部分。我们面临各种问题 当我们研究编程中的循环语句时,涉及到星星和数字模式。 本文将演示如何使用星号打印 X 或十字。我们将看到相同的两种方法。第一个有点复杂,但下一个 方法效率很高。
星形图案(使用两组空格)
* * * * * * * * * * * * * * * * *
对于此模式,行数为 n = 5。这是针对上半部分的。总共 X 模式有 2n – 1
让我们来看看如何使用以下表格来实现这一点−
行号 | Star Count | 的中文翻译为:星星数量 | 剩余空间 | Space Between | 的中文翻译为:间距 | 描述 | |
---|---|---|---|---|---|---|---|
1 | 的翻译是:1 | 2 | 0 | 7 | 当 i = n 时,打印一颗星,否则打印 2。左边的空格为 (i – 1),空格之间为 2(n – i) - 1 | ||
2 | 2 | 1 | 的翻译是:1 | 5 | |||
3 | 2 | 2 | 3 | ||||
4 | 的中文翻译为:4 | 2 | 3 | 1 | |||
5 | 的中文翻译为:5 | 1 | 的翻译是:1 | 4 | 的中文翻译为:4 | - | 的中文翻译为:- |
6 | 2 | 3 | 1 | 左边的星星递减,如 n - (i - n) - 1 = 2n - i - 1。空格的数量将遵循:2 * (i - n) - 1 | |||
7 | 2 | 2 | 3 | ||||
8 | 2 | 1 | 的翻译是:1 | 5 | |||
9 | 的翻译为:9 | 2 | 0 | 7 |
算法
- 读取 n 作为输入
- 对于i从1到2n - i的范围,执行
- 如果我 <= n,那么
- 对于 j 的范围从 1 到 i - 1,执行
- 显示空白空间
- 结束
- 显示星星
- 如果 i 和 n 不同,则
- 对于 j 的范围从 1 到 2(n - i) - 1,执行
- 显示空白空间
- 结束
- 显示星星
- 对于 j 的范围从 1 到 2(n - i) - 1,执行
- 如果结束
- 对于 j 的范围从 1 到 i - 1,执行
- 否则
- 对于范围从 1 到 2n - i - 1 的 j,执行
- 显示空白空间
- 结束
- 显示星星
- 对于 j 的范围从 1 到 2(i - n) - 1,执行
- 显示空白空间
- 结束
- 显示星星
- 对于范围从 1 到 2n - i - 1 的 j,执行
- 如果结束
- 将光标移至下一行
- 结束
示例
#include <iostream> using namespace std; void solve( int n ){ for ( int i = 1; i <= 2*n - 1; i++ ) { if ( i <= n ) { for ( int j = 1; j <= i - 1; j++ ) { cout << ". "; } cout << "* "; if ( i != n ) { for ( int j = 1; j <= 2 * (n - i) - 1; j++ ) { cout << " "; } cout << "* "; } } else { for ( int j = 1; j <= (2 * n) - i - 1; j++ ) { cout << ". "; } cout << "* "; for ( int j = 1; j <= 2 * (i - n) - 1; j++ ) { cout << " "; } cout << "* "; } cout << "\n"; } } int main(){ int n = 8; cout << "X Star Pattern for " << n << " lines." << endl; solve( n ); }
输出
X Star Pattern for 8 lines. * * . * * . . * * . . . * * . . . . * * . . . . . * * . . . . . . * * . . . . . . . * . . . . . . * * . . . . . * * . . . . * * . . . * * . . * * . * * * *
输出(n = 10)
X Star Pattern for 10 lines. * * . * * . . * * . . . * * . . . . * * . . . . . * * . . . . . . * * . . . . . . . * * . . . . . . . . * * . . . . . . . . . * . . . . . . . . * * . . . . . . . * * . . . . . . * * . . . . . * * . . . . * * . . . * * . . * * . * * * *
使用网格方法
通过考虑一个网格,可以解决相同的问题,并且从这个网格中,我们可以计算出 星星被打印的公式以及空格被打印的位置。
* | * | |||||||
* | * | |||||||
* | * | |||||||
* | * | |||||||
* | ||||||||
* | * | |||||||
* | * | |||||||
* | * | |||||||
* | * |
从上面的网格中,很容易理解,星星只会在列中放置 数字与行号(对角线)相同,列号为 (2n + 1 – i)
算法
- 读取 n 作为输入
- m = 2n - i
- 对于从 1 到 m 的 i,执行
- 对于 j 从 1 到 m 的范围,执行
- 如果 j 与 i 相同或 j 与 (m + 1) - i 相同,则执行
- 显示星星
- 否则
- 显示空间
- 如果结束
- 如果 j 与 i 相同或 j 与 (m + 1) - i 相同,则执行
- 结束
- 将光标移至下一行
- 对于 j 从 1 到 m 的范围,执行
- 结束
示例
#include <iostream> using namespace std; void solve( int n ){ int m = 2*n - 1; for ( int i = 1; i <= m; i++ ) { for ( int j = 1; j <= m; j++ ) { if (j == i || j == (m + 1 - i)) cout << "* "; else cout << ". "; } cout << endl; } } int main(){ int n = 6; cout << "X Star Pattern for " << n << " lines." << endl; solve( n ); }
输出
X Star Pattern for 6 lines. * . . . . . . . . . * . * . . . . . . . * . . . * . . . . . * . . . . . * . . . * . . . . . . . * . * . . . . . . . . . * . . . . . . . . . * . * . . . . . . . * . . . * . . . . . * . . . . . * . . . * . . . . . . . * . * . . . . . . . . . *
输出(当n = 8时)
X Star Pattern for 8 lines. * . . . . . . . . . . . . . * . * . . . . . . . . . . . * . . . * . . . . . . . . . * . . . . . * . . . . . . . * . . . . . . . * . . . . . * . . . . . . . . . * . . . * . . . . . . . . . . . * . * . . . . . . . . . . . . . * . . . . . . . . . . . . . * . * . . . . . . . . . . . * . . . * . . . . . . . . . * . . . . . * . . . . . . . * . . . . . . . * . . . . . * . . . . . . . . . * . . . * . . . . . . . . . . . * . * . . . . . . . . . . . . . *
结论
星形模式使用简单,对于学习编程循环思想很有用。这 文章演示了如何使用 C++ 显示左和右半菱形图案 右对齐的半菱形。拍摄后,X 或十字图案将使用星号显示 考虑n行计数。为此,我们提供了两种方法。一聘 填充和空白空间,而另一个则利用网格计算。而不是添加 空格,我们添加了点。如果没有,他们偶尔会从输出中删除空格。
以上是C++程序打印X星型图案的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本文解释了C标准模板库(STL),重点关注其核心组件:容器,迭代器,算法和函子。 它详细介绍了这些如何交互以启用通用编程,提高代码效率和可读性t

本文详细介绍了c中有效的STL算法用法。 它强调了数据结构选择(向量与列表),算法复杂性分析(例如,std :: sort vs. std vs. std :: partial_sort),迭代器用法和并行执行。 常见的陷阱

C语言数据结构:树和图的数据表示与操作树是一个层次结构的数据结构由节点组成,每个节点包含一个数据元素和指向其子节点的指针二叉树是一种特殊类型的树,其中每个节点最多有两个子节点数据表示structTreeNode{intdata;structTreeNode*left;structTreeNode*right;};操作创建树遍历树(先序、中序、后序)搜索树插入节点删除节点图是一个集合的数据结构,其中的元素是顶点,它们通过边连接在一起边可以是带权或无权的数据表示邻

文章讨论了在C中有效使用RVALUE参考,以进行移动语义,完美的转发和资源管理,重点介绍最佳实践和性能改进。(159个字符)

本文详细介绍了C中的有效异常处理,涵盖了尝试,捕捉和投掷机制。 它强调了诸如RAII之类的最佳实践,避免了不必要的捕获块,并为强大的代码登录例外。 该文章还解决了Perf

本文讨论了使用C中的移动语义来通过避免不必要的复制来提高性能。它涵盖了使用std :: Move的实施移动构造函数和任务运算符,并确定了关键方案和陷阱以有效

C 20范围通过表现力,合成性和效率增强数据操作。它们简化了复杂的转换并集成到现有代码库中,以提高性能和可维护性。

本文讨论了C中的动态调度,其性能成本和优化策略。它突出了动态调度会影响性能并将其与静态调度进行比较的场景,强调性能和之间的权衡
