C++程序 打印左半金字塔图案
在这里,我们将使用两种方法来构建一个C++程序以打印金字塔图案的左半部分。即:
- 使用 for循环
- 使用 while循环
1. 使用for循环
输入:
rows = 5
输出:
*
**
***
****
*****
首先,第一个for循环用于识别要打印的行数,第二个for循环用于识别要打印的列数。这里的值将根据第一个for循环而改变。如果j大于i,那么它将打印输出,否则打印空格。
// C++程序,使用for循环打印简单的金字塔图案的180度旋转
#include <iostream>
using namespace std;
int main()
{
int rows = 5;
// 第一个for循环用于识别要打印的行数
for (int i = rows; i > 0; i--) {
// 第二个for循环用于识别要打印的列数,这里的值将根据第一个for循环而改变
for (int j = 0; j <= rows; j++) {
// 如果j大于i,那么它将打印输出,否则打印空格
if (j >= i) {
cout << "*";
}
else {
cout << " ";
}
}
cout << "\n";
}
return 0;
}
输出:
*
**
***
****
*****
时间复杂度: O(n 2)
这里的n是要打印的行数。
辅助空间: O(1)
因为使用了恒定的额外空间。
2. 使用while循环
输入:
rows = 5
输出:
*
**
***
****
*****
while循环在条件成立时一直检查该条件。如果条件为真,则进入循环并执行语句。
// C++程序,使用while循环打印简单的金字塔图案的180度旋转
#include <iostream>
using namespace std;
int main()
{
int i = 0, j = 0, sp = 0;
int rows = 5;
// while循环在给定的条件为假之前一直检查该条件
while (i < rows) {
// 第二个while循环用于打印空格
while (sp < (rows - i - 1)) {
cout << " ";
sp++;
}
// 将sp值分配为0,因为我们需要从开始运行sp
sp = 0;
// 此循环将打印模式
while (j <= i){
cout << "* ";
j++;
}
j = 0;
i++;
cout << "\n";
}
return 0;
}
输出:
*
* *
* * *
* * * *
* * * * *
时间复杂度: O(n2),其中n是要打印的行数。
空间复杂度: O(1)