An inverted center-aligned pyramid prints the widest odd-width star row first, then narrows to a single tip star — with leading spaces so each shorter row stays centered.
Remember
Rule: for i from rows down to 1,
print (rows - i) spaces, then (2 * i - 1) stars
*********
*******
*****
***
* ← 5 rows (base on top)
It is the flip of Program 5: keep the same space and star formulas, reverse only the outer loop. That mirrors how Program 2 inverts Program 1, but with odd-width centering.
Approach
How to Solve It
Two ways to emit the same shape — start with nested loops, then optionally use putchar.
Method
Idea
Best for
Nested loops
Countdown i; spaces then odd stars via printf
Learning, interviews, exams
putchar
Same counts, character-at-a-time I/O
Leaner demos once formulas click
Pseudocode
Pseudocode
for i from rows down to 1:
print (rows - i) spaces (no newline)
print (2 * i - 1) stars (no newline)
print newline
Change the height and the inverted pyramid updates instantly — including the star total (n²).
Whole numbers from 1 to 14. Tap a chip or type a value — the preview redraws as you go.
Live result5 rows · 25 stars
*********
*******
*****
***
*
Trace
Worked Walkthrough — rows = 4
Trace spaces, stars, and the printed line as i counts down from 4 to 1.
i
Spaces rows - i
Stars 2*i - 1
Printed row
4
0
7
*******
3
1
5
*****
2
2
3
***
1
3
1
*
Star total: 7 + 5 + 3 + 1 = 16 = 4² — same as Program 5, only the print order differs. That square sum is why time is O(n²).
Code
C Programs
Three complete programs: fixed rows, console input, and a putchar variant. Use View Output to reveal sample results.
Example 1 — Fixed rows = 5
Hard-coded height — countdown outer loop with space and star inner loops.
c
#include <stdio.h>
int main(void) {
int rows = 5;
int i, j, k;
for (i = rows; i >= 1; --i) {
for (j = 1; j <= rows - i; ++j) {
printf(" ");
}
for (k = 1; k <= 2 * i - 1; ++k) {
printf("*");
}
printf("\n");
}
return 0;
}
Output
*********
*******
*****
***
*
How It Works
1. Set height.rows = 5 means five lines from base to tip.
2. Outer loop counts down.i runs from rows down to 1 — widest row first.
3. Spaces, then stars. Print rows - i spaces, then 2 * i - 1 stars with printf.
4. Break the line.printf("\n") after both inner loops starts the next row.
When i = 5 you get 0 spaces and 9 stars; when i = 1 you get 4 spaces and 1 star.
Example 2 — User Input Version
Read the height at runtime. Prefer checking scanf’s return value (shown in the tip below).
c
#include <stdio.h>
int main(void) {
int rows;
int i, j, k;
printf("Enter the number of rows: ");
scanf("%d", &rows);
for (i = rows; i >= 1; --i) {
for (j = 1; j <= rows - i; ++j) {
printf(" ");
}
for (k = 1; k <= 2 * i - 1; ++k) {
printf("*");
}
printf("\n");
}
return 0;
}
Output (when user enters 4)
Enter the number of rows: 4
*******
*****
***
*
How It Works
1. Prompt and read. Ask for a row count, then fill rows with scanf.
2. Same countdown core. Only the source of rows changes — the space and star logic matches Example 1.
3. Safer input tip. Ignoring scanf’s return leaves rows unset on bad input. Prefer:
Safer input
if (scanf("%d", &rows) != 1 || rows < 1) {
printf("Enter a positive whole number.\n");
return 1;
}
Example 3 — putchar for Spaces and Stars
Same countdown formulas with character-at-a-time I/O — no format strings in the inner loops.
c
#include <stdio.h>
int main(void) {
int rows = 5;
int i, j;
for (i = rows; i >= 1; --i) {
for (j = 1; j <= rows - i; ++j) {
putchar(' ');
}
for (j = 1; j <= 2 * i - 1; ++j) {
putchar('*');
}
putchar('\n');
}
return 0;
}
Output
*********
*******
*****
***
*
How It Works
1. Same countdown. Still walk i from rows down to 1.
2. Same counts.rows - i spaces and 2 * i - 1 stars — only the print API changes to putchar.
3. Learn loops first. Use Examples 1–2 when you need to show nested bounds; treat this as a polish shortcut afterward.
Edge Cases & Pitfalls
Check these before calling the solution done.
i++
Upright pyramid by mistake
If you increment i from 1 to rows, you reprint Program 5. Use i-- from rows down to 1.
Tabs
Broken centering
Always print the space character " ", not tabs — tab width varies and skews the tip.
Newline inside
Column of stars
If printf("\n") is inside either inner loop, each character lands on its own line. Print spaces and stars without a newline; break the line only after both loops.
rows = 1
Single tip star
Output is just * — base and tip coincide. A good sanity check.
rows ≤ 0
Empty output
Outer loop never runs. Validate and re-prompt for interactive programs.
Bad scanf
Check the return
If scanf fails, rows is uninitialized — always test != 1.
Analysis
Time and Space Complexity
Program
Time
Extra space
Nested loops (Examples 1–2)
O(rows²)
O(1)
putchar variant (Example 3)
O(rows²)
O(1)
Total stars = 1 + 3 + … + (2n - 1) = n², plus up to Θ(n) spaces per row — still quadratic in n. Same totals as Program 5.
Remember
Key Takeaways
Rule: countdown i; print rows - i spaces then 2 * i - 1 stars.
Flip of Program 5: same formulas — only reverse the outer loop.
Break the row: call printf("\n") only after both space and star loops.
Complexity:O(n²) time from n² stars; O(1) extra space.
One line: for i from rows down to 1, print rows - i spaces and 2 * i - 1 stars, then printf("\n").
Frequently Asked Questions
The outer loop runs i from rows down to 1. Stars still use 2*i-1, so large i prints many stars first. As i shrinks, stars become 9,7,5,… and spaces (rows-i) grow from 0 upward. Same formulas as Program 5 — only the order of i changes.
Spaces use (rows-i). When i is rows, the margin is 0; when i is 1, the margin is rows-1. As i steps down, the margin grows while 2*i-1 shrinks, which keeps shorter rows centered under the wide top.
Program 5 uses for (i = 1; i <= rows; i++) so stars grow. Program 6 uses for (i = rows; i >= 1; i--) with the same inner loops, so the base prints first and the tip last.
Program 2 is an inverted left-aligned triangle (i stars, no centering). Program 6 keeps (rows-i) spaces and odd star runs so the tip stays centered.
printf("*") or printf(" ") stays on the same line. printf("\n") ends the current line. Spaces and stars use printf without a newline; the row break comes after both inner loops.
O(n²) for n rows. Same totals as Program 5; only iteration order differs. Total stars equal n².
Yes. With the countdown outer loop: loop putchar(' ') for (rows - i) spaces and putchar('*') for (2 * i - 1) stars, then putchar('\n').
Check scanf's return value: if (scanf("%d", &rows) != 1) handle bad input. Unchecked scanf leaves rows uninitialized on failure.
🤔
Did you know?
This inverted pyramid is exactly Program 5 with the outer loop reversed — same formulas, different print order. Total stars still equal n².