# Top 10 Pattern Programs in C

*Have you ever wondered how intricate patterns can be created with simple loops in C? Pattern programs in C are a fascinating way to learn about nested loops and control structures, transforming basic code into visually stunning designs. Let's understand more!*

**Pattern programs in C** involve printing different patterns on the console, usually made up of stars, spaces, numbers, or other symbols. These programs help beginners familiarize themselves with loops like for, while & nested and understand the concept of pattern logic.

*Explore Online C Programming Courses*

**In this blog, we will see examples of 10 pattern programs in C & understand how they work :**

- Full Pyramid Pattern
- Right Half Pyramid Pattern
- Left Half Pyramid Pattern
- Inverted Right Half Pyramid Pattern
- Inverted Left Half Pyramid Pattern
- Diamond Pattern
- Hollow Full Pyramid Pattern
- Hollow Inverted Full Pyramid Pattern
- Pascal’s Triangle Pattern
- Floyd’s Triangle Pattern

**Let’s understand each of these one by one in detail :**

**1. Full Pyramid Pattern**

It is a triangle with its peak at the top centre of the display, and the base spreads out symmetrically on both sides as it descends. It consists of rows and columns where the number of stars in each row starts with 1 at the top and increases by 2 as you move downward.

**Pattern **

**Code**

#include <stdio.h>
int main(){ int rows = 7;
// first loop to print all rows for (int i = 0; i < rows; i++) {
// inner loop 1 to print white spaces for (int j = 0; j < rows - i - 1; j++) { printf(" "); }
// inner loop 2 to print star * character for (int k = 0; k < 2 * i + 1; k++) { printf("*"); } printf("\n"); } return 0;}

**2. Right Half Pyramid Pattern **

The Right Half Pyramid Pattern is a simpler version of the full pyramid. As the name suggests, only the right half (including the centre) of a full pyramid is displayed. It looks like a right-angled triangle with the right angle at the bottom-left.

**Pattern **

**Code**

//Right half pyramid pattern of stars using C#include <stdio.h>
int main(){ int rows = 7;
// first loop for printing rows for (int i = 0; i < rows; i++) {
// second loop for printing character in each rows for (int j = 0; j <= i; j++) { printf("* "); } printf("\n"); } return 0;}

**3. Left Half Pyramid Pattern**

The Left Half Pyramid Pattern is the mirror image of the Right Half Pyramid Pattern. Instead of the right angle being at the bottom-left, it is at the bottom right. It looks like a right-angled triangle with the right angle at the bottom right.

**Pattern**

**Code**

// Left half pyramid pattern of stars using C#include <stdio.h>
int main(){ int rows = 7;
// first loop is for printing the rows for (int i = 0; i < rows; i++) {
// loop for printing leading whitespaces for (int j = 0; j < 2 * (rows - i) - 1; j++) { printf(" "); }
// loop for printing * character for (int k = 0; k <= i; k++) { printf("* "); } printf("\n"); } return 0;}

**4. Inverted Right Half Pyramid Pattern**

The Inverted Right Half Pyramid Pattern is actually the Right Half Pyramid, but turned upside down. It’s a right-angled triangle where the right angle is now at the top-left.

**Pattern**

**Code**

// Inverted right half pyramid of stars using C#include <stdio.h>
int main(){ int rows = 7;
// first loop to print all rows for (int i = 0; i < rows; i++) {
// first inner loop to print the * in each row for (int j = 0; j < rows - i; j++) { printf("* "); } printf("\n"); }}

**5. Inverted Left Half Pyramid Pattern**

The Inverted Left Half Pyramid Pattern is the Left Half Pyramid, but inverted. It’s the mirror image of the Inverted Right Half Pyramid. It’s a right-angled triangle where the right angle is at the top-right.

**Pattern**

**Code**

// Inverted left half pyramid of stars using C#include <stdio.h>
int main(){ int rows = 7;
// first loop for printing all rows for (int i = 0; i < rows; i++) {
// first inner loop for printing white spaces for (int j = 0; j < 2 * i; j++) { printf(" "); }
// second inner loop for printing star * for (int k = 0; k < rows - i; k++) { printf("* "); } printf("\n"); }
return 0;}

**6. Diamond Pattern**

A diamond pattern is essentially a full pyramid pattern on top of an inverted full pyramid pattern minus one row (so they connect perfectly). The top half resembles a full pyramid.

The bottom half resembles an inverted full pyramid but without the row with the maximum width (because the top half already displays it).

**Pattern**

**Code**

//Diamond pattern of stars using C#include <stdio.h>int main(){ int n = 7;
// first outer loop to iterate through each row for (int i = 0; i < 2 * n - 1; i++) {
// assigning values to the comparator according to // the row number int comp; if (i < n) { comp = 2 * (n - i) - 1; } else { comp = 2 * (i - n + 1) + 1; }
// first inner loop to print leading whitespaces for (int j = 0; j < comp; j++) { printf(" "); }
// second inner loop to print stars * for (int k = 0; k < 2 * n - comp; k++) { printf("* "); } printf("\n"); } return 0;}

**7. Hollow Full Pyramid Pattern**

The Hollow Full Pyramid Pattern looks like a full pyramid, but its interior is hollow, except for the topmost row and the base. It resembles a triangle with the peak at the top centre and a widening base as you go down.

**Pattern **

**Code**

//Hollow full pyramid of stars using C#include <stdio.h>
int main() { int rows = 7;
// first outer loop to iterate through each row for (int i = 0; i < rows; i++) {
// first inner loop to print leading whitespaces for (int j = 0; j < rows - i - 1; j++) { printf(" "); }
// second inner loop to print stars * and inner whitespaces for (int k = 0; k < 2 * i + 1; k++) { if (k == 0 || k == 2 * i) { printf("*"); } else if (i == rows - 1) { printf("*"); } else { printf(" "); } } printf("\n"); } return 0;}

**8. Hollow Inverted Full Pyramid Pattern**

The Hollow Inverted Full Pyramid is actually the upside-down version of the Hollow Full Pyramid. It resembles an upside-down triangle, starting broad at the top and narrowing to a point at the bottom.

**Pattern**

**Code**

//Hollow inverted full pyramid of stars using C#include <stdio.h>
int main() { int rows = 7;
// first loop iterating through each row for (int i = 0; i < rows; i++) {
// first inner loop to print leading white space for (int j = 0; j < i; j++) { printf(" "); }
// second inner loop to print star* and hollow white space for (int k = 0; k < 2 * (rows - i) - 1; k++) { if (k == 0 || k == 2 * (rows - i) - 2 || i == 0) { printf("*"); } else { printf(" "); } } printf("\n"); } return 0;}

**9. Pascal’s Triangle Pattern**

**Pascal’s Triangle** is a triangular array of numbers. Let’s look at a few properties of Pascal’s Triangle Pattern below & understand one of the methods we use to print Pascal’s Triangle Pattern.

**Properties :**

**Edges are 1s**: The numbers on the outer edge of the triangle are all 1s.**Row Number**: If you start numbering rows from 0, the nth number in the nth row is n.**Binomial Expansion**: The coefficients in the binomial expansion of (a+b)^{n}are the numbers in the nth row. For example, for (a+b)^{4}, the coefficients are ‘1 4 6 4 1’, corresponding to a^{4}+ 4a^{3}b + 6a^{2}b^{2}+ 4ab^{3}+ b^{4}.**Combinatorial Interpretation**: The entry in the nth row and kth column (starting counting from 0) of Pascal’s Triangle gives the number of ways to choose k items from n items, also known as “n choose k” or the binomial coefficient.**Hockey Stick Pattern**: If you start from any number and follow a diagonal down and to the right, then turn to follow another diagonal down and to the left, the sum of the numbers in the first diagonal is given by the number where you turn.**Fibonacci Sequence**: If you sum the diagonals’ numbers starting from the 1s on the outer edges, you get the Fibonacci sequence.

**Pattern **

**Example Code **

#include <stdio.h>
int main() { int rows = 10;
// outer loop for rows for (int i = 0; i < rows; i++) {
// inner loop 1 for leading white spaces for (int j = 0; j < rows - i; j++) { printf(" "); // Using two spaces for proper alignment }
int C = 1; // coefficient initialized to 1 for each row's first position
// inner loop 2 for printing numbers for (int k = 0; k <= i; k++) { printf("M", C); // Corrected to print integer with spacing for alignment C = C * (i - k) / (k + 1); // Calculate the next number in the row } printf("\n"); } return 0;}

**10. Floyd’s Triangle Pattern**

In** Floyd’s Triangle** Pattern, rather than initiating each row’s sequence from the number 1, we consistently print sequential natural numbers across the rows. This pattern can also be used to display a sequence of the alphabet.

**Pattern **

**Example Code**

//Floyd's Triangle Pattern using C#include <stdio.h>
int main(){ int rows = 10; int n = 1;
// Calculate the width of the largest number in Floyd's triangle // This is important for maintaining proper alignment in the triangle // Especially when we have numbers with more than one digit. int width = 0;
// Calculate the last number in the triangle using the formula n(n+1)/2 int lastNumber = rows * (rows + 1) / 2;
// Calculate the number of digits in the last number. This will determine // the width required for proper alignment. while (lastNumber) { width++; lastNumber /= 10; }
// Outer loop to handle each row of the triangle for (int i = 0; i < rows; i++) {
// Inner loop to print numbers in each row. for (int j = 0; j <= i; j++) {
// Print each number, using width to ensure proper spacing. // "%-*d" is a format specifier where '*' allows dynamic width // specification. The '-' ensures left alignment. printf("%-*d ", width, n++); }
printf("\n"); }
return 0;}

Thus, pattern programs in C are like puzzles that help beginners learn coding basics. Drawing shapes/patterns with numbers or letters teaches how to use loops and conditions in a fun way. Keep learning, Keep exploring!

**What’s Next?**

Having understood the pattern of programs in C, it’s time to build upon that foundation. Here’s a suggested roadmap:

**Data Structures in C**: Familiarize yourself with the concept of data structures and their importance in organizing and storing data efficiently.**Pointers in C**: Grasp the fundamental concept of memory addressing and how pointers act as gateways to these addresses.**Interview Questions in C**: Prepare for questions on the foundational concepts in C, like data types, operators, and I/O operations.

**Boost Your Learning:**

Consider enrolling in an online course if you’re serious about mastering C. Here are some top recommendations:

**Coursera’s “C for Everyone” Series:**A comprehensive introduction to C, suitable for beginners and those looking to refresh their knowledge.**Udemy’s “C Programming For Beginners”:**This course takes a hands-on approach, ensuring you get practical experience as you learn.

By investing time in a structured course, you’ll gain a more profound understanding, benefit from expert insights, and have a clear path of progression.

So, gear up and dive deeper into the world of C programming. The journey you’ve embarked on is filled with challenges, but the rewards, in terms of knowledge and skills, are immeasurable. Happy coding!

## FAQs

**What Are Pattern Programs in C?**

Pattern programs in C are exercises that involve printing specific patterns (like stars, numbers, or letters) to the console in various shapes such as triangles, squares, and diamonds. They are fundamental in learning C programming as they help in understanding loops, conditional statements, and spacing techniques, which are critical for mastering control structures and logic building.

**How Do Nested Loops Work in Pattern Programming?**

Nested loops are a crucial concept in pattern programming, where a loop runs inside another loop. The outer loop typically controls the rows, while the inner loop manages the characters printed in each row. This structure allows for the creation of complex patterns by precisely controlling the output on a row-by-row basis.

**What steps should I follow to create a new pattern program in C?**

To create a new pattern, start by sketching the pattern to understand its structure. Identify how many rows and columns it contains, and observe any repeating elements. Use loops to generate rows and columns, applying conditional logic to print characters only where needed. Begin with the outer loop for rows, then use inner loops for the columns, incorporating conditionals to control character output.

**Why Is Understanding Spacing Important in Pattern Programs?**

Spaces are essential in pattern programs to correctly align characters and shape the pattern. In many patterns, especially those symmetrical or centered, spaces are used to position characters properly within each row. Understanding how to manipulate spaces allows for the creation of neatly formatted and visually appealing patterns.

**How Can I Improve My Logic for More Complex Patterns?**

Improving logic for complex patterns involves practice and understanding the basics thoroughly. Start with simple patterns and gradually increase complexity. Analyze existing patterns and try modifying them. Understanding the mathematical or geometric principles behind patterns can also be helpful. Practice different types of patterns, like numerical, alphabetical, and graphical ones, to enhance problem-solving skills and logical thinking.

**What common shapes can be created using pattern programs in C?**

In C, you can create a variety of shapes with pattern programs, such as triangles (right-angled, isosceles), squares, rectangles, diamonds, and more abstract patterns like waves or checkerboards. Each shape may require a different arrangement of loops and conditions to define its structure accurately.

**How can I use conditional statements to enhance pattern programs?**

Conditional statements (like if, else if, and else) can be used to control the flow of your pattern logic, allowing you to add complexity such as varying characters or spaces based on certain conditions. For example, you might print a different character for the border of a shape compared to its interior, depending on the row or column index.

**Can functions be used in writing pattern programs, and how?**

Yes, functions can greatly enhance the modularity and readability of your pattern programs. You can define a function to print a specific line or shape, and then call this function with parameters that specify its size or other properties. This approach helps in managing complex patterns and reusing code for similar tasks within the program.

**What are some tips for debugging complex pattern programs in C?**

Debugging pattern programs often involves checking that each loop iterates the correct number of times and that conditions correctly influence the program's flow. Inserting print statements inside loops can help trace how your variables change. It's also useful to start with a simplified version of the pattern to ensure basic logic is correct before adding complexity.

**How can array data structures be utilized in pattern programming?**

Arrays can be extremely useful in storing and manipulating pattern layouts, especially for more complex designs. You can use a two-dimensional array to represent the pattern's grid, where each element holds a character or a symbol. The array can be manipulated to modify the pattern dynamically before it's printed, allowing for more flexible and creative pattern designs.

**About the Author**

Hello, world! I'm Esha Gupta, your go-to Technical Content Developer focusing on Java, Data Structures and Algorithms, and Front End Development. Alongside these specialities, I have a zest for immersing myself in v... Read Full Bio