首頁 > 後端開發 > C++ > C++程式列印X星型圖案

C++程式列印X星型圖案

PHPz
發布: 2023-09-13 11:45:03
轉載
1266 人瀏覽過

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的範圍,執行
    • 如果我 <= n,那麼
      • 對於 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.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板