Write a C Program to print Hollow diamond star pattern using nested for loops, while loop, functions, and if-else statements. The Hollow diamond pattern means the edges of the diamond are filled with a star symbol (or any other character or number), and the remaining part (inside) remains empty.
In this C hollow diamond example, the if statement checks for outer lines and prints stars otherwise, it prints empty spaces to get that hollow shape.
#include<stdio.h>
int main(void)
{
int i, j, k, rows;
printf("Enter Diamond Rows = ");
scanf("%d", &rows);
printf("Diamond Star Pattern\n");
for (i = 1 ; i <= rows; i++ )
{
for (j = 1 ; j <= rows - i; j++ )
{
printf(" ");
}
for (k = 1 ; k <= i * 2 - 1; k++ )
{
if (k == 1 || k == i * 2 - 1) {
printf("*");
}
else {
printf(" ");
}
}
printf("\n");
}
for (i = rows - 1 ; i > 0; i-- )
{
for (j = 1 ; j <= rows - i; j++ )
{
printf(" ");
}
for (k = 1 ; k <= i * 2 - 1; k++ )
{
if (k == 1 || k == i * 2 - 1) {
printf("*");
}
else {
printf(" ");
}
}
printf("\n");
}
}
Output.
Enter Diamond Rows = 9
Diamond Star Pattern
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
The following example prints the hollow diamond pattern of star symbols. Here, we removed the extra for loop to print the lower part of the hollow diamond. The first for loop (main one) runs twice the given number to accommodate both the lower and upper portion of the diamond pattern.
#include <stdio.h>
int main(void)
{
int i, j, k, rows;
printf("Enter Hollow Diamond Rows = ");
scanf("%d", &rows);
printf("Hollow Diamond Star Pattern\n");
for (i = 0; i < 2 * rows - 1; i++)
{
int n;
if (i < rows)
{
n = 2 * (rows - i) - 1;
}
else
{
n = 2 * (i - rows + 1) + 1;
}
for (j = 0; j < n; j++)
{
printf(" ");
}
for (k = 0; k < 2 * rows - n; k++)
{
if (k == 0 || k == rows * 2 - n - 1)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
Enter Hollow Diamond Rows = 9
Hollow Diamond Star Pattern
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
Hollow Diamond pattern using while loop
In this C program for Hollow Diamond pattern of stars, we replaced the C language for loop with a C language while loop.
#include<stdio.h>
int main(void) {
int i, j, k, rows;
printf("Enter Hollow Diamond Rows = ");
scanf("%d", &rows);
i = 1 ;
while (i <= rows)
{
j = 1 ;
while (j <= rows - i)
{
printf(" ");
j++;
}
k = 1 ;
while ( k <= i * 2 - 1)
{
if (k == 1 || k == i * 2 - 1) {
printf("*");
}
else {
printf(" ");
}
k++;
}
printf("\n");
i++ ;
}
i = rows - 1 ;
while ( i > 0)
{
j = 1 ;
while(j <= rows - i )
{
printf(" ");
j++;
}
k = 1 ;
while (k <= i * 2 - 1 )
{
if (k == 1 || k == i * 2 - 1) {
printf("*");
}
else {
printf(" ");
}
k++;
}
printf("\n");
i-- ;
}
}
Enter Hollow Diamond Rows = 12
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
C Program to Print Hollow Diamond Star Pattern using do while loop
#include<stdio.h>
int main(void) {
int i, j, k, rows;
printf("Enter Hollow Diamond Rows = ");
scanf("%d", &rows);
i = 1 ;
do
{
j = 1 ;
do
{
printf(" ");
} while ( j++ <= rows - i) ;
k = 1 ;
do
{
if (k == 1 || k == i * 2 - 1) {
printf("*");
}
else {
printf(" ");
}
} while ( ++k <= i * 2 - 1);
printf("\n");
} while ( ++i <= rows) ;
i = rows - 1 ;
do
{
j = 1 ;
do
{
printf(" ");
} while(j++ <= rows - i );
k = 1 ;
do
{
if (k == 1 || k == i * 2 - 1) {
printf("*");
}
else {
printf(" ");
}
} while (++k <= i * 2 - 1 );
printf("\n");
} while ( --i > 0);
}
Enter Hollow Diamond Rows = 7
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
In this C example, the result function prints the hollow diamond pattern of a given symbol. For more star pattern examples, please refer to the C Star Pattern Programs article.
#include<stdio.h>
void result(int rows, int i, char ch)
{
for (int j = 1; j <= rows - i; j++) {
printf(" ");
}
for (int k = 1; k <= i * 2 - 1; k++) {
if (k == 1 || k == i * 2 - 1) {
printf("%c", ch);
} else {
printf(" ");
}
}
printf("\n");
}
int main(void) {
int i, rows;
char ch;
printf("Enter Symbol = ");
scanf("%c", &ch);
printf("Enter Diamond Rows = ");
scanf("%d", &rows);
for (i = 1; i <= rows; i++) {
result(rows, i, ch);
}
for (i = rows - 1; i > 0; i--) {
result(rows, i, ch);
}
}

C Hollow Diamond Number Pattern
In the following example, we use the first example logic (multiple for loops) to print the hollow diamond pattern. However, instead of printing the stars, we use the value of i on each iteration to print numbers from 1 to n, where n is the total number of rows.
#include<stdio.h>
int main(void)
{
int i, j, k, rows;
printf("Enter Rows = ");
scanf("%d", &rows);
printf("Hollow Diamond Number Pattern\n");
for (i = 1 ; i <= rows; i++ )
{
for (j = 1 ; j <= rows - i; j++ )
{
printf(" ");
}
for (k = 1 ; k <= i * 2 - 1; k++ )
{
if (k == 1 || k == i * 2 - 1) {
printf("%d", i);
}
else {
printf(" ");
}
}
printf("\n");
}
for (i = rows - 1 ; i > 0; i-- )
{
for (j = 1 ; j <= rows - i; j++ )
{
printf(" ");
}
for (k = 1 ; k <= i * 2 - 1; k++ )
{
if (k == 1 || k == i * 2 - 1) {
printf("%d", i);
}
else {
printf(" ");
}
}
printf("\n");
}
}
Enter Rows = 8
Hollow Diamond Number Pattern
1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
7 7
6 6
5 5
4 4
3 3
2 2
1
Hollow Diamond Alphabet Pattern
#include<stdio.h>
int main(void)
{
int i, j, k, rows;
printf("Enter Rows = ");
scanf("%d", &rows);
int a = 64;
printf("Hollow Diamond Alphabet Pattern\n");
for (i = 1 ; i <= rows; i++ )
{
for (j = 1 ; j <= rows - i; j++ )
{
printf(" ");
}
for (k = 1 ; k <= i * 2 - 1; k++ )
{
if (k == 1 || k == i * 2 - 1) {
printf("%c", a + i);
}
else {
printf(" ");
}
}
printf("\n");
}
for (i = rows - 1 ; i > 0; i-- )
{
for (j = 1 ; j <= rows - i; j++ )
{
printf(" ");
}
for (k = 1 ; k <= i * 2 - 1; k++ )
{
if (k == 1 || k == i * 2 - 1) {
printf("%c", a + i);
}
else {
printf(" ");
}
}
printf("\n");
}
}
Enter Rows = 10
Hollow Diamond Alphabet Pattern
A
B B
C C
D D
E E
F F
G G
H H
I I
J J
I I
H H
G G
F F
E E
D D
C C
B B
A
Also Read