C program to print hollow square star pattern with diagonal

Write a C program to print hollow square star pattern with diagonal using loops. How to print hollow square star pattern with diagonals in C program. Logic to print hollow square star pattern with diagonal in C programming.

Example
Input

Enter number of rows: 5

Output

Required knowledge

Basic C programming, If else, Logical operator, For loop, Nested loop

Logic to print hollow square with diagonal

The above pattern is a simple hollow square star pattern if we remove diagonal. It consists of N rows and columns (where N is the number of rows to print). For each row stars are printed in four conditions.

  • For first or last row.
  • For first or last columns.
  • If row equals to column or row equals to N-i+1 (where i is current row number).

Step by step descriptive logic to print hollow square star pattern with diagonal.

  1. Input number of rows to print from user. Store it in some variable say N.
  2. To iterate through rows run an outer loop from 1 to N, increment loop counter by 1. The loop structure should look like for(i=1; i<=N; i++).
  3. To iterate through columns run an inner loop from 1 to N, increment loop counter by 1. The loop structure should look like for(j=1; j<=N; j++).
  4. Inside the loop print star for first or last row, first or last column or when row equals to column or row equals to N - i + 1 otherwise print space.

Program to print hollow square with diagonal

/**
 * C program to print hollow square star pattern with diagonal
 */

#include <stdio.h>

int main()
{
    int i, j, N;

    /* Input number of rows from user */
    printf("Enter number of rows: ");
    scanf("%d", &N);

    /* Iterate over each row */
    for(i=1; i<=N; i++)
    {
        /* Iterate over each column */
        for(j=1; j<=N; j++)
        {
            /*
             * Print star for, 
             * first row (i==1) or 
             * last row (i==N) or
             * first column (j==1) or
             * last column (j==N) or 
             * row equal to column (i==j) or 
             * column equal to N-row (j==N-i+1)
             */
            if(i==1 || i==N || j==1 || j==N || i==j || j==(N - i + 1))
            {
                printf("*");
            }
            else
            {
                printf(" ");
            }
        }

        /* Move to the next line */
        printf("\n");
    }

    return 0;
}

Output

Enter number of rows: 5 
*****
** **
* * *
** **
*****