总结
豆包 AI 助手文章总结
首页 > 后端开发 > C++ > 正文

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

PHPz
发布: 2023-09-13 11:45:03
转载
1522人浏览过

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

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

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

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

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

*       *
 *     *
  *   *
   * *
    *
   * *
  *   *
 *     *
*       *
登录后复制

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

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

的中文翻译为: 的中文翻译为: 的翻译是: 的翻译是: 的中文翻译为: 的中文翻译为: 的翻译是: 的中文翻译为:的中文翻译为: 的翻译是: 的翻译为:
行号 Star Count星星数量 剩余空间 Space Between间距 描述
11 2 0 7 当 i = n 时,打印一颗星,否则打印 2。左边的空格为 (i – 1),空格之间为 2(n – i) - 1
2 2 11 5
3 2 2 3
44 2 3 1
55 11 44 --
6 2 3 1 左边的星星递减,如 n - (i - n) - 1 = 2n - i - 1。空格的数量将遵循:2 * (i - n) - 1
7 2 2 3
8 2 11 5
99 2 0 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 <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 相同,则执行
          • 显示星星
        • 否则
          • 显示空间
        • 如果结束
      • 结束
      • 将光标移至下一行
    • 结束

    示例

    #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中文网其它相关文章!

    全能打印神器
    全能打印神器

    全能打印神器是一款非常好用的打印软件,可以在电脑、手机、平板电脑等设备上使用。支持无线打印和云打印,操作非常简单,使用起来也非常方便,有需要的小伙伴快来保存下载体验吧!

    下载
    相关标签:
    来源:tutorialspoint网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    豆包 AI 助手文章总结
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习
    PHP中文网抖音号
    发现有趣的

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号