C Inverted Pyramid Star Pattern

Beginner
7 min read
Updated: Sep 2026
3 programs
Live preview

What Is This Pattern?

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.

How to Solve It

Two ways to emit the same shape — start with nested loops, then optionally use putchar.

MethodIdeaBest for
Nested loopsCountdown i; spaces then odd stars via printfLearning, interviews, exams
putcharSame counts, character-at-a-time I/OLeaner 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

Cheat sheet

GoalPattern
Countdown rowsfor (i = rows; i >= 1; i--)
Leading spacesfor (j = 1; j <= rows - i; j++) printf(" ");
Odd star runfor (k = 1; k <= 2 * i - 1; k++) printf("*");
End the rowprintf("\n");
First printed row0 spaces + 2 * rows - 1 stars
Upright versionfor (i = 1; i <= rows; i++) → Program 5

Printing Stars vs Starting a New Line

APIEffectUse for
printf(" ") / printf("*")Stays on the same lineEach space and each *
printf("\n")Ends the current lineAfter both inner loops

Live Preview

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 result 5 rows · 25 stars
*********
 *******
  *****
   ***
    *

Worked Walkthrough — rows = 4

Trace spaces, stars, and the printed line as i counts down from 4 to 1.

iSpaces rows - iStars 2*i - 1Printed row
407*******
315*****
223***
131*

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²).

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;
}

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;
}

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;
}

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.

Time and Space Complexity

ProgramTimeExtra 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.

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².

Next: Inverted V Hollow

Move from a filled inverted pyramid to a hollow inverted-V outline.

Program 7 tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

12 people found this page helpful