C++程序打印X星型图案

c++程序打印x星型图案

展示不同形状的星星图案,如金字塔、正方形和菱形,是一种

基本编程和逻辑开发的常见部分。我们面临各种问题当我们研究编程中的循环语句时,涉及到星星和数字模式。本文将演示如何使用星号打印 X 或十字。

我们将看到相同的两种方法。第一个有点复杂,但下一个方法效率很高。

星形图案(使用两组空格)

*       * *     *  *   *   * *    *   * *  *   * *     **       *

对于此模式,行数为 n = 5。这是针对上半部分的。总共 X 模式有 2n – 1

让我们来看看如何使用以下表格来实现这一点−

行号 Star Count

的中文翻译为:

星星数量 剩余空间 Space Between

的中文翻译为:

间距 描述

1 的翻译是:120 7当 i = n 时,打印一颗星,否则打印 2。左边的空格为 (i – 1),空格之间为 2(n – i) – 1221 的翻译是:1532234 的中文翻译为:42315 的中文翻译为:51 的翻译是:14 的中文翻译为:4-的中文翻译为:-6231左边的星星递减,如 n – (i – n) – 1 = 2n – i – 1。空格的数量将遵循:2 * (i – n) – 17223821 的翻译是:159 的翻译为:920 7

算法

读取 n 作为输入对于i从1到2n – i的范围,执行如果我 对于 j 的范围从 1 到 i – 1,执行显示空白空间结束显示星星如果 i 和 n 不同,则对于 j 的范围从 1 到 2(n – i) – 1,执行显示空白空间结束显示星星如果结束否则对于范围从 1 到 2n – i – 1 的 j,执行显示空白空间结束显示星星对于 j 的范围从 1 到 2(i – n) – 1,执行显示空白空间结束显示星星如果结束将光标移至下一行结束

示例

#include 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 相同,则执行显示星星否则显示空间如果结束结束将光标移至下一行结束

示例

#include 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星型图案的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:09:05
下一篇 2025年12月13日 18:49:32

发表回复

登录后才能评论
关注微信