C Program To Merge Two Arrays Alternatively

Lets write a C program to merge two arrays into third array in alternative position.

Example: Expected Output

Enter 5 elements for array a
10
12
14
16
18
Enter 5 elements for array b
11
13
15
17
19

Merging arrays a & b into c in alternate position
Array elements of c is:
10
11
12
13
14
15
16
17
18
19

Visual Representation of arrays a, b and c

Step 1: after first for loop
Copying array a to c
Step 2: after second for loop
Copying array b to c

Video Tutorial: C Program To Merge Two Arrays Alternatively


[youtube https://www.youtube.com/watch?v=Yu9QcnCC9RU]

YouTube Link: https://www.youtube.com/watch?v=Yu9QcnCC9RU [Watch the Video In Full Screen.]

Source Code: C Program To Merge Two Arrays Alternatively

Method 1: Array a and b are of same size

#include<stdio.h>

#define N 5
#define M (N * 2)

int main()
{
    int a[N], b[N], c[M], i, k;

    printf("Enter %d elements for array a\n", N);
    for(i = 0; i < N; i++)
        scanf("%d", &a[i]);

    printf("Enter %d elements for array b\n", N);
    for(i = 0; i < N; i++)
        scanf("%d", &b[i]);

    printf("\nMerging arrays a & b into c in alternate position\n");
    for(i = 0, k = 0; i < N; i++, k += 2)
        c[k] = a[i];

    for(i = 0, k = 1; i < N; i++, k += 2)
        c[k] = b[i];

    printf("Array elements of c is:\n");
    for(i = 0; i < M; i++)
        printf("%d\n", c[i]);

    return 0;
}

Output:
Enter 5 elements for array a
0
2
4
6
8
Enter 5 elements for array b
1
3
5
7
9

Merging arrays a & b into c in alternate position
Array elements of c is:
0
1
2
3
4
5
6
7
8
9

Logic To Merge Arrays a and b into c in Alternate positions

Here array variables a and b have same size. To copy the elements of array variable a to c, we initialize i to 0 and k to o, and start assigning values from a[i] to k[k], we increment the value of i by 1 for each iteration of for loop, but we increment the value of k by 2 for each iteration of first for loop. This way we assign elements of a to the values present at index 0, 2, 4, 6, 8 of array variable c.

In the next for loop, we reset the value of i to 0, and k value is rest to 1. k value keeps incrementing by 2 for each iteration of for loop, while i value increments by 1 for each iteration of the for loop. So the values present at index 0, 1, 2, 3, 4 of variable b are copied to the index places of 1, 3, 5, 7, 9 of array variable c.

Method 2: Array a and b are of different size

#include<stdio.h>

#define N1 3
#define N2 8
#define M  ( (N1 > N2) ? (N1 * 2) : (N2 * 2) )

int main()
{
    int a[N1], b[N2], c[M] = {0}, i, k;

    printf("Enter %d elements for array a\n", N1);
    for(i = 0; i < N1; i++)
        scanf("%d", &a[i]);

    printf("Enter %d elements for array b\n", N2);
    for(i = 0; i < N2; i++)
        scanf("%d", &b[i]);

    printf("\nMerging arrays a & b into c in alternate position\n");
    for(i = 0, k = 0; i < N1; i++, k += 2)
        c[k] = a[i];

    for(i = 0, k = 1; i < N2; i++, k += 2)
        c[k] = b[i];

    printf("Array elements of c is:\n");
    for(i = 0; i < M; i++)
        printf("%d\n", c[i]);

    return 0;
}

Output:
Enter 3 elements for array a
0
2
4
Enter 8 elements for array b
1
3
5
6
7
8
9
10

Merging arrays a & b into c in alternate position
Array elements of c is:
0
1
2
3
4
5
0
6
0
7
0
8
0
9
0
10

Logic To Merge 2 arrays(of different size) Into 3rd Array

As you can see we’re using macros to assign size to the arrays a and b. You can change the size and play around to check different output for different input sizes.

N1 is the size of array a, N2 is the size of array b. Please execute this program and modify the values of N1 to be bigger than N2 and next change N2 to be bigger than N1, and then make both N1 and N2 equal – and check the outputs.

Inside macro M, which is the size of resultant array(c[M]), we store double the size of the biggest array we’re merging into c. We are doing this because, the sizes of the arrays to be merged might be different and the remaining positions will be filled with garbage values. So instead we’ll be pre-filling zeros in the places where there are no elements to fill.

For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List

For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert

C Program To Concatenate Two Arrays

Lets write a C program to concatenate or append two arrays into a third array. Make use of macros to assign size of the arrays.

Example: Expected Output

Enter 5 integer numbers, for first array
0
1
2
3
4
Enter 5 integer numbers, for second array
5
6
7
8
9

Merging a[5] and b[5] to form c[10] ..

Elements of c[10] is ..
0
1
2
3
4
5
6
7
8
9
Concatenation of arrays

Video Tutorial: C Program To Concatenate Two Arrays


[youtube https://www.youtube.com/watch?v=xrqzVAnvCIY]

YouTube Link: https://www.youtube.com/watch?v=xrqzVAnvCIY [Watch the Video In Full Screen.]

Source Code: C Program To Concatenate Two Arrays

Method 1: Arrays with same size

#include<stdio.h>

#define N 5
#define M (N * 2)

int main()
{
    int a[N], b[N], c[M], i, index = 0;

    printf("Enter %d integer numbers, for first array\n", N);
    for(i = 0; i < N; i++)
        scanf("%d", &a[i]);

    printf("Enter %d integer numbers, for second array\n", N);
    for(i = 0; i < N; i++)
            scanf("%d", &b[i]);

    printf("\nMerging a[%d] and b[%d] to form c[%d] ..\n", N, N, M);
    for(i = 0; i < N; i++)
        c[index++] = a[i];

    for(i = 0; i < N; i++)
        c[index++] = b[i];

    printf("\nElements of c[%d] is ..\n", M);
    for(i = 0; i < M; i++)
        printf("%d\n", c[i]);

    return 0;
}

Output:
Enter 5 integer numbers, for first array
0
9
8
7
6
Enter 5 integer numbers, for second array
5
4
3
2
1

Merging a[5] and b[5] to form c[10] ..

Elements of c[10] is ..
0
9
8
7
6
5
4
3
2
1

Logic To Concatenate Two Array To Form Third Array

Here size of array a and b are same, so the for loops are same to accept elements of array a and b. We initialize variable index to 0. We write a for loop and iterate from 0 to 4, and copy the individual elements of array a to array c. Here index of array a and c varies from 0 to 4.

In the second for loop again we iterate the for loop from 0 to 4. This time value of variable index varies from 5 to 9, where as value of index of variable b varies from 0 to 4. So the individual elements of array b are copied to array c from index 5 to 9.

Method 2: Arrays with different size

#include<stdio.h>

#define N1 5
#define N2 6
#define M (N1 + N2)

int main()
{
    int a[N1], b[N2], c[M], i, index = 0;

    printf("Enter %d integer numbers, for first array\n", N1);
    for(i = 0; i < N1; i++)
        scanf("%d", &a[i]);

    printf("Enter %d integer numbers, for second array\n", N2);
    for(i = 0; i < N2; i++)
            scanf("%d", &b[i]);

    printf("\nMerging a[%d] and b[%d] to form c[%d] ..\n", N1, N2, M);
    for(i = 0; i < N1; i++)
        c[index++] = a[i];

    for(i = 0; i < N2; i++)
        c[index++] = b[i];

    printf("\nElements of c[%d] is ..\n", M);
    for(i = 0; i < M; i++)
        printf("%d\n", c[i]);

    return 0;
}

Output:
Enter 5 integer numbers, for first array
0
1
2
3
4
Enter 6 integer numbers, for second array
5
6
7
8
9
10

Merging a[5] and b[6] to form c[11] ..

Elements of c[11] is ..
0
1
2
3
4
5
6
7
8
9
10

Here the logic to concatenate array elements is same, but only difference is the size of array variable a and b. So we need to be careful while writing conditions in for loop.

For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List

For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert

C Program To Find Size of An Array

Lets write c program to find number of elements present in an array, where the array size is not mentioned explicitly.

Related Read:
Sizeof Operator in C Programming Language

Example: Expected Output

int a[] = {3, 4, 6, 7, 8, 9, 0, 32, 435, 65, 2, 23, 56, 67, 8, 9, 0, 3, 2, 1, 4, 5, 6, 7, 8};
We have 25 no of elements in array.

Video Tutorial: C Program To Find Number of Elements In An Array


[youtube https://www.youtube.com/watch?v=RMJzZXvr2mY]

YouTube Link: https://www.youtube.com/watch?v=RMJzZXvr2mY [Watch the Video In Full Screen.]

Source Code: C Program To Find Size of An Array

Method 1

#include<stdio.h>

int main()
{
    int a[] = {3, 4, 6, 7, 8, 9, 0, 32, 435, 65, 2, 23,
               56, 67, 8, 9, 0, 3, 2, 1, 4, 5, 6, 7, 8};

    int count = sizeof(a) / sizeof(int);

    printf("We have %d no of elements in array\n", count);

    return 0;
}

Output:
We have 25 no of elements in array.

We know that array variable name contains base address or the address of first array element. But sizeof(array_name) gives back the number of bytes occupied by the entire array. Now divide this value by the memory occupied by 1 element – this can be determined either by using sizeof() on the data type(as shown in above source code) or any of the element in the array(as shown in below source code).

Method 1

#include<stdio.h>

int main()
{
    int a[] = {3, 4, 6, 7, 8, 9, 0, 32, 435, 65, 2, 23,
               56, 67, 8, 9, 0, 3, 2, 1, 4, 5, 6, 7, 8};

    int count = sizeof(a) / sizeof(a[0]);

    printf("We have %d no of elements in array\n", count);

    return 0;
}

Output:
We have 25 no of elements in array.

We assume that the array will at least have 1 element, so we find the number of bytes occupied by it. This is the best approach because, this way we’ll not be compelled to change the data type passed to sizeof() operator whenever we need to check the number of elements present in a array of different data type.

Method 3: Using Macros

#include<stdio.h>

#define SIZE(a) ( sizeof(a) / sizeof(a[0]) )

int main()
{
    int a[] = {3, 4, 6, 7, 8, 9, 0, 32, 435, 65, 2, 23,
               56, 67, 8, 9, 0, 3, 2, 1, 4, 5, 6, 7, 8};

    printf("We have %d no of elements in array.\n", SIZE(a));

    return 0;
}

Output:
We have 25 no of elements in array.

Here we pass the array variable name to macro SIZE(). Again the macro expansion will be replacing the macro template before passing the source code to the compiler.

Related Read:
Macros With Arguments: C Program

Using this method has advantage too. We can calculate size of multiple array variables, of different data type: as shown in below example.

Method 4: Using Macros

#include<stdio.h>

#define SIZE(a) ( sizeof(a) / sizeof(a[0]) )

int main()
{
    int a[] = {3, 4, 6, 7, 8, 9, 0, 32, 435, 65, 2, 23,
               56, 67, 8, 9, 0, 3, 2, 1, 4, 5, 6, 7, 8};
    char ch[] = {'i', 'P', 'h', 'o', 'n', 'e'};
    double dbl[] = {2.3, 4, 5.2, 6.3, 7.1, 3.4, 1.3};

    printf("Integer variable a[%d].\n", SIZE(a));
    printf("Character variable ch[%d].\n", SIZE(ch));
    printf("Double variable dbl[%d].\n", SIZE(dbl));

    return 0;
}

Output:
Integer variable a[25].
Character variable ch[6].
Double variable dbl[7].

Here we find the number of elements present in array variable a and ch using the same macro SIZE.

Where Is It useful?

Whenever we want to iterate through individual elements of the array and we’ve no idea whats the size of the array or whats the largest designator of that array. In such cases we can’t write condition inside loop.

Using above formula we could easily find the number of elements present in the array and make use of the result in our for loop condition:

#include<stdio.h>

#define SIZE(a) ( sizeof(a) / sizeof(a[0]) )

int main()
{
    int a[] = {3, 4, 6, 7, 8, 9, 0, 32, 435, 65, 2, 23,
               56, 67, 8, 9, 0, 3, 2, 1, 4, 5, 6, 7, 8};
    int count = SIZE(a);

    for(i = 0; i < count; i++)
        printf("%d\n", a[i]);

    return 0;
}

This prints all the elements of the array.

Note: Do not write i < SIZE(a) condition directly inside for loop. This would create unnecessory overhead, as for each iteration SIZE(a) [which will be replaced by ( sizeof(a) / sizeof(a[0]) ) while preprocessing] has to calculate the size of the array. Instead calculate the size of array once and store it inside a variable and then use that variable in your for loop as shown in above source code.

For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List

For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert

C Program To Copy Elements of One Array To Another In Reverse Order

Lets write a c program to copy elements of one array to another array in reverse order. Hint: Make use of macros to assign size of the array. And both the arrays must have same size.

Related Read:
Basics of Arrays: C Program

Example: Expected Output

Enter 5 integer numbers
5
2
6
4
3

Copying elements from array a to b
In reverse Order

Original(a[5]) –> Copy(b[5])
5 –> 3
2 –> 4
6 –> 6
4 –> 2
3 –> 5
Copy array elements in reverse order

Video Tutorial: C Program To Copy Elements of One Array To Another In Reverse Order


[youtube https://www.youtube.com/watch?v=UsIzctxViDs]

YouTube Link: https://www.youtube.com/watch?v=UsIzctxViDs [Watch the Video In Full Screen.]

Source Code: C Program To Copy Elements of One Array To Another In Reverse Order

#include<stdio.h>

#define N 5

int main()
{
    int a[N], b[N], i, j;

    printf("Enter %d integer numbers\n", N);
    for(i = 0; i < N; i++)
        scanf("%d", &a[i]);

    printf("\n\nCopying elements from array a to b, in reverse order\n");
    for(i = N - 1, j = 0; i >= 0; i--, j++)
        b[j] = a[i];

    printf("\nOriginal(a[%d])  -->  Copy(b[%d])\n", N, N);
    for(i = 0; i < N; i++)
        printf("%4d\t\t-->%6d\n", a[i], b[i]);

    return 0;
}

Output:
Enter 5 integer numbers
1
2
3
4
5

Copying elements from array a to b, in reverse order

Original(a[5]) –> Copy(b[5])
1 –> 5
2 –> 4
3 –> 3
4 –> 2
5 –> 1

Logic To Copy Elements of One Array To Another In Reverse Order

We ask the user to enter N integer numbers. N is macro which is used to define size of the array. We store the user entered numbers inside array variable a. We initialize the variable i to last index of array a, and we initialize the variable j to first index of array variable b. Now for each iteration of the for loop, we assign the value of a[i] to b[j]. For each iteration of for loop we decrement the value of i by 1 and increment the value of j by 1. For loop iterates until i value is greater than or equal to 0.

At the end we print / display the content of both original array(a[5]) and the array to which the elements are copied to(b[5]) in reverse order.

Explanation With Example

If int a[5] = {5, 2, 6, 4, 3};

    for(i = N - 1, j = 0; i >= 0; i--, j++)
        b[j] = a[i];
ija[i]b[j]
40a[4] = 3b[0] = 3
31a[3] = 4b[1] = 4
22a[2] = 6b[2] = 6
13a[1] = 2b[3] = 2
04a[4] = 5b[0] = 5

a[5] = {5, 2, 6, 4, 3};
b[5] = {3, 4, 6, 2, 5};
Copy array elements in reverse order
For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List

For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert

C Program To Copy Elements of One Array To Another

Lets write a c program to copy all the elements of one array to another array of same size.

Related Read:
Basics of Arrays: C Program

Example: Expected Output

Enter 5 integer numbers
5
2
6
4
3

Copying elements of array a to b

Original(a[5]) –> Copy (b[5])
5 –> 5
2 –> 2
6 –> 6
4 –> 4
3 –> 3
Copy array elements from a to b

Video Tutorial: C Program To Copy Elements of One Array To Another


[youtube https://www.youtube.com/watch?v=ib_xqm4J1d0]

YouTube Link: https://www.youtube.com/watch?v=ib_xqm4J1d0 [Watch the Video In Full Screen.]

Source Code: C Program To Copy Elements of One Array To Another

#include<stdio.h>

#define N 5

int main()
{
    int a[N], b[N], i;

    printf("Enter %d integer numbers\n", N);
    for(i = 0; i < 5; i++)
        scanf("%d", &a[i]);

    printf("\n\nCopying elements of array a to b\n");
    for(i = 0; i < N ; i++)
        b[i] = a[i];

    printf("\nOriginal(a[%d])  -->  Copy (b[%d])\n", N, N);
    for(i = 0; i < N; i++)
        printf("%4d\t\t-->%6d\n", a[i], b[i]);

    return 0;
}

Output:
Enter 5 integer numbers
5
4
3
2
1

Copying elements of array a to b

Original(a[5]) –> Copy (b[5])
5 –> 5
4 –> 4
3 –> 3
2 –> 2
1 –> 1

Logic To Copy Elements of One Array To Another

We ask the user to enter N integer numbers. N is macro which is used to define size of the array. We store the user entered numbers inside array variable a. Since both array variables a and b has same size we copy individual elements of array variable a to array variable b at same index position.

At the end we print / display the content of both original array(a[5]) and the array to which the elements are copied to(b[5]).

For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List

For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert