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.



Found This Page Useful? Share It!
Get the Latest Tutorials and Updates
Join us on Telegram