C Programming Examples Tutorial Index

C Array 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.