A symmetric alphabet pyramid prints centered palindromic rows: each line climbs from A to a peak letter, then mirrors back down to A without repeating the peak.
Remember
Rule: spaces + A..i + (i−1)..A
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA ← top = 'E'
Three stages per row: leading spaces for centering, ascending A..i, then descending (i − 1)..A. Compare with Program 24 (similar palindromes) and Program 31 (hollow V).
Approach
How to Solve It
Two ways to emit the same pyramid — a classic bridge variable (--n), or an explicit descending loop.
Method
Idea
Best for
Bridge variable
After A..i, set n = k - 1 and print alpha[--n]
Matching classic textbook / exam style
Explicit mirror
Loop p from i - 1 down to 0
Clearer demos once the skip-center rule clicks
Pseudocode
Pseudocode
end = top - 'A'
for i from 0 to end:
print (end - i) spaces
for k from 0 to i: print alpha[k] // A..i
for p from i-1 to 0: print alpha[p] // (i-1)..A
print newline
Cheat sheet
Goal
Pattern
Top index
int end = top - 'A'; (4 for E)
Rows
for (i = 0; i <= end; i++)
Leading spaces
for (j = end; j > i; j--) printf(" ");
Ascending half
for (k = 0; k <= i; k++) printf("%c", alpha[k]);
Bridge mirror
n = k - 1; for (m = 0; m < i; m++) printf("%c", alpha[--n]);
Explicit mirror
for (p = i - 1; p >= 0; p--) printf("%c", alpha[p]);
Letters on row i
2i + 1 (peak printed once)
Printing Letters vs Starting a New Line
API
Effect
Use for
printf(" ") / printf("%c", ...)
Stays on the same line
Each space and letter
printf("\n")
Ends the current line
After spaces + ascending + mirror finish a row
putchar(ch)
Same as printing one character
Optional leaner style once loops click
Try it
Live Preview
Change the top letter and the centered palindrome pyramid updates instantly — row i has 2i + 1 letters.
One letter from A to F. Tap a chip or type a letter — use a monospace view for centering.
Live resultTop E · 5 rows · base 9 letters
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
Trace
Worked Walkthrough — Top = E (end = 4)
Trace padding, ascending half, and mirrored descending half for each row.
i
Spaces
Ascending
Mirror
Printed row
0
4
A
(none)
A
1
3
AB
A
ABA
2
2
ABC
BA
ABCBA
3
1
ABCD
CBA
ABCDCBA
4
0
ABCDE
DCBA
ABCDEDCBA
After ascending, k = i + 1, so n = k - 1 = i. The first --n lands on i - 1.
Code
C Programs
Three complete programs: fixed A–E with a bridge variable, top-letter input with scanf, and an explicit mirror loop. Use View Output to reveal sample results.
Example 1 — Fixed A–E
Matches the reference logic using a bridge variable n = k - 1 to print the descending half.
c
#include <stdio.h>
int main(void) {
int i, j, k, m, n;
char alpha[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (i = 0; i <= 4; i++) {
for (j = 4; j > i; j--)
printf(" ");
for (k = 0; k <= i; k++)
printf("%c", alpha[k]);
n = k - 1;
for (m = 0; m < i; m++)
printf("%c", alpha[--n]);
printf("\n");
}
return 0;
}
Output
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
How It Works
1. Pad for centering. Spaces run from 4 down while j > i.
2. Ascend to the peak. Print alpha[0..i] — when i = 2, that is ABC.
3. Bridge past the peak. After the ascending loop, k = i + 1, so n = k - 1 = i.
4. Mirror without a double center. Each --n prints the previous letter — for i = 2, that yields BA and the full row ABCBA.
Example 2 — Top Letter Input
The loops adapt to the new size automatically. Check scanf and validate a single A–Z character in real apps.
c
#include <stdio.h>
int main(void) {
char alpha[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char top;
int end, i, j, k, m, n;
printf("Enter top letter (like E): ");
scanf(" %c", &top);
end = top - 'A';
for (i = 0; i <= end; i++) {
for (j = end; j > i; j--)
printf(" ");
for (k = 0; k <= i; k++)
printf("%c", alpha[k]);
n = k - 1;
for (m = 0; m < i; m++)
printf("%c", alpha[--n]);
printf("\n");
}
return 0;
}
Output (when user enters C)
Enter top letter (like E): C
A
ABA
ABCBA
How It Works
1. Scale with end.end = top - 'A' drives padding, ascending, and mirror loops together.
2. Same core. For top = C you get three centered rows ending at ABCBA.
3. Safer input tip. Prefer:
Safer input
if (scanf(" %c", &top) != 1 || top < 'A' || top > 'Z') {
printf("Enter one letter from A to Z.\n");
return 1;
}
Example 3 — Explicit Mirror Loop
Often easier to read: after printing A..i, loop p from i - 1 down to 0.
c
#include <stdio.h>
int main(void) {
int end = 4;
int i, j, k, p;
char alpha[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (i = 0; i <= end; i++) {
for (j = end; j > i; j--)
printf(" ");
for (k = 0; k <= i; k++)
printf("%c", alpha[k]);
for (p = i - 1; p >= 0; p--)
printf("%c", alpha[p]);
printf("\n");
}
return 0;
}
Output
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
How It Works
1. Same three stages. Spaces, then ascending, then mirror — only the mirror syntax changes.
2. Peak stays unique.p starts at i - 1, so the center letter is never printed twice.
3. Same output. Matches the bridge-variable version exactly.
Edge Cases & Pitfalls
Check these before calling the solution done.
Mirror from i
Double center letter
If the descending loop starts at i instead of i - 1, you get ABCCBA. Skip the peak.
Spaces off
Left-aligned pyramid
Keep for (j = end; j > i; j--). Starting at end - 1 or using >= shifts the centering.
printf("\n") inside
Column of characters
If printf("\n") is inside any of the three loops, each character lands on its own line. Print cells until the row is done.
top = A
Single A
When end = 0, you print one row: A (no spaces, no mirror). A good sanity check.
Wrong n
Bridge off by one
After ascending, k is already i + 1. Use n = k - 1, then --n — not n = k.
scanf
Leading space in format
Use scanf(" %c", &top) so a leftover newline does not become your letter. Still validate A–Z.
Analysis
Time and Space Complexity
Program
Time
Extra space
Bridge variable (Examples 1–2)
O(n²)
O(1) (plus the fixed alphabet table)
Explicit mirror (Example 3)
O(n²)
O(1)
For n = end + 1 rows, each row prints O(n) spaces and letters — quadratic in n.
Remember
Key Takeaways
Rule: spaces + A..i + (i − 1)..A.
Skip the peak once: mirror starts at i - 1 (or --n after n = k - 1).
Break the row: call printf("\n") only after all three stages.
Complexity:O(n²) time; O(1) extra space.
One line: pad, print A up to the peak, then mirror back to A without reprinting the peak.
Frequently Asked Questions
It prints A..i ascending, then prints (i-1)..A descending. This mirrors the left half without repeating the center letter.
After the ascending loop, k is one past the peak letter. Setting n = k-1 makes n equal the peak, and then --n starts the descending half from the previous letter.
The padding shifts each row to the right so the pyramid is centered under the widest row.
O(n²) for n rows because each row prints O(n) spaces and letters.
After printing A..i, the mirror part starts from i-1 down to A. That avoids duplicating the peak letter.
Check scanf(" %c", &top) == 1, require a single A–Z character, and reject invalid input.
Ascending prints i+1 letters and descending prints i letters, so the row has 2i+1 letters before counting spaces.
Program 18 is another palindromic alphabet pyramid approach. This page follows the classic bridge-variable style with n = k-1 and --n.
🤔
Did you know?
Each row has three stages: leading spaces for centering, then letters A..i ascending, then letters (i-1)..A descending. The reference keeps a bridge variable n = k - 1 after the ascending loop and prints --n to avoid duplicating the center letter.