C Program to Reverse an Array

cprogramming-Logo
C Programming Examples
C String Programs
C Loop Programs
C Function Programs
C Array Programs
C Integer Number Programs
C File I/O Programs

This program reverses the array elements.

For example if a is an array of integers with three elements such that

a[0] = 1

a[1] = 2

a[2] = 3

Then on reversing the array will be

a[0] = 3

a[1] = 2

a[0] = 1

Given below is the c code to reverse an array.

Example:
#include <stdio.h>
int main()
{
    int n, c, d, a[100], b[100];
    
    printf("Enter the number of elements in array\n");
    scanf("%d", &n);
    
    printf("Enter the array elements\n");
    
    for (c = 0; c < n ; c++)
    scanf("%d", &a[c]);
    
    /*
    * Copying elements into array b starting from end of array a
    */    
    for (c = n - 1, d = 0; c >= 0; c--, d++)
        b[d] = a[c];
    
    /*
    * Copying reversed array into original.
    * Here we are modifying original array, this is optional.
    */    
    for (c = 0; c < n; c++)
        a[c] = b[c];
    
    printf("Reverse array is\n");
    
    for (c = 0; c < n; c++)
        printf("%d\n", a[c]);
    
    return 0;
}

Reverse array by swapping (without using additional memory)

Example:
#include <stdio.h>
int main()
{
    int array[100], n, c, t, end;
    
    scanf("%d", &n);
    end = n - 1;
    
    for (c = 0; c < n; c++) {
        scanf("%d", &array[c]);
    }
    
    for (c = 0; c < n/2; c++) {
        t = array[c];
        array[c] = array[end];
        array[end] = t;    
        end--;
    }
    
    printf("Reversed array elements are:\n");
    
    for (c = 0; c < n; c++) {
        printf("%d\n", array[c]);
    }
    
    return 0;
}

C program to reverse an array using pointers

Example:
#include <stdio.h>
#include <stdlib.h>

void reverse_array(int*, int);

int main()
{
    int n, c, *pointer;
    
    scanf("%d",&n);
    
    pointer = (int*)malloc(sizeof(int)*n);
    
    if( pointer == NULL )
    exit(EXIT_FAILURE);
    
    for ( c = 0 ; c < n ; c++ )
    scanf("%d",(pointer+c));
    
    reverse_array(pointer, n);
    printf("Original array on reversal is\n");
    
    for ( c = 0 ; c < n ; c++ )
    printf("%d\n",*(pointer+c));
        
    free(pointer);
    return 0;
} 

void reverse_array(int *pointer, int n)
{
    int *s, c, d;
    
    s = (int*)malloc(sizeof(int)*n);  
  
    if( s == NULL )    
    exit(EXIT_FAILURE);    
    
    for ( c = n - 1, d = 0 ; c >= 0 ; c--, d++ )
*(s+d) = *(pointer+c);
        
    for ( c = 0 ; c < n ; c++ )    
    *(pointer+c) = *(s+c);    
         
    free(s);
}

Array passed to function and a new array is created, contents of passed array (in reverse order) are copied into it and finally contents of new array are copied into array passed to function.


Here are few other related articles for you to read:

Scroll Back to Top