21xrx.com
2025-03-31 06:43:30 Monday
文章检索 我的文章 写文章
如何用c++输出菱形的*图案
2023-07-06 05:16:27 深夜i     72     0
c++ 输出 菱形 *图案

在C++中实现输出菱形的图案是一项基础而又有趣的练习,本篇文章将介绍一种简单的实现方法。

图案的基本思路是在控制台输出若干个空格(空格的数量随行数而变化),并在其中间插入若干个*号,*号的数量也随行数而变化。为了输出一个完整的菱形,我们可以将它分为两个三角形,然后对其进行分别输出。

下面是输出上半部分的代码:

#include <iostream>
using namespace std;
int main() {
  int n;
  cout << "请输入行数:";
  cin >> n;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n - i; j++)
      cout << " ";
    
    for (int k = 1; k <= 2 * i - 1; k++) {
      cout << "*";
    }
    cout << endl;
  }
  return 0;
}

程序中使用了三个循环嵌套,第一个循环控制图案的行数,第二个循环输出空格,第三个循环输出*号。对于其中的空格和*号数量的计算,我们可以通过简单的数学公式得到,例如在第i行,空格数量为n-i,*号数量为2*i-1。

接下来是下半部分的代码:

for (int i = n - 1; i >= 1; i--) {
    for (int j = 1; j <= n - i; j++)
      cout << " ";
    
    for (int k = 1; k <= 2 * i - 1; k++) {
      cout << "*";
    }
    cout << endl;
  }

与上半部分的代码非常相似,只是反向输出。

完整的代码:

#include <iostream>
using namespace std;
int main() {
  int n;
  cout << "请输入行数:";
  cin >> n;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n - i; j++)
      cout << " ";
    
    for (int k = 1; k <= 2 * i - 1; k++) {
      cout << "*";
    }
    cout << endl;
  }
  for (int i = n - 1; i >= 1; i--) {
    for (int j = 1; j <= n - i; j++)
      cout << " ";
    
    for (int k = 1; k <= 2 * i - 1; k++) {
      cout << "*";
    }
    cout << endl;
  }
  return 0;
}

最后,我们就可以运行程序,输入行数,然后在控制台中美观地输出菱形图案了。

  
  

评论区