C程序 打印180度旋转的简单左半边金字塔
我们可以用for和while循环来打印简单的半左金字塔的180度旋转,如下所示。
输入:
rows = 5
输出:
*
**
***
****
*****
方法一
使用for循环
解释: 第一个for循环用来确定行的数量,第二个for循环用来确定列的数量。这里的值将根据第一个for循环而改变。如果j大于i,那么它将打印输出,否则打印空格。
// C program to print 180 degree rotation
// of a simple half left pyramid pattern
#include <stdio.h>
int main()
{
int rows = 5;
// first for loop is used to identify number of rows
for (int i = rows; i > 0; i--) {
// second for loop is used to identify number of
// columns and here the values will be changed
// according to the first for loop
for (int j = 0; j <= rows; j++) {
// if j is greater than i then it will print
// the output otherwise print the space
if (j >= i) {
printf("*");
}
else {
printf(" ");
}
}
printf("\n");
}
return 0;
}
输出
*
**
***
****
*****
方法二
使用while循环
解释: while 循环检查条件,直到条件为假。如果条件为真,则进入循环并执行这些语句。
// C program to print 180 degree rotation
// of a simple half left pyramid pattern
// using while loop
#include <stdio.h>
int main()
{
int i = 0, j = 0, sp = 0;
int rows = 5;
// while loop check the condition until the given
// condition is false if it is true then enteres in to
// the loop
while (i < rows) {
// second while loop is used for printing spaces
while (sp < (rows - i - 1)) {
printf(" ");
sp++;
}
// assigning sp value as 0 because we need to run sp
// from starting
sp = 0;
// this loop will print the pattern
while (j <= i) {
printf("* ");
j++;
}
j = 0;
i++;
printf("\n");
}
return 0;
}
输出
*
* *
* * *
* * * *
* * * * *
时间的复杂性: 对于给定的输入n行,O(n 2)。
辅助空间: O(1)