Array Lab Tasks in C (Medium Level)
Lab Task 1: Frequency Counter
Problem Statement: Write a program in C that takes an integer array from the user and calculates the
frequency of each unique element.
#include <stdio.h>
int main() {
int n;
printf("Enter size of array: ");
scanf("%d", &n);
int arr[n], freq[n];
printf("Enter %d elements: ", n);
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
freq[i] = -1;
}
for(int i = 0; i < n; i++) {
if(freq[i] == -1) {
int count = 1;
for(int j = i + 1; j < n; j++) {
if(arr[i] == arr[j]) {
count++;
freq[j] = 0;
}
}
freq[i] = count;
}
}
printf("\nElement Frequencies:\n");
for(int i = 0; i < n; i++) {
if(freq[i] != 0) {
printf("%d occurs %d times\n", arr[i], freq[i]);
}
}
return 0;
}
Array Lab Tasks in C (Medium Level)
Lab Task 2: Second Largest and Second Smallest
Problem Statement: Write a C program to find the second largest and second smallest element in an array
without sorting it.
#include <stdio.h>
#include <limits.h>
int main() {
int n;
printf("Enter size of array: ");
scanf("%d", &n);
int arr[n];
printf("Enter %d elements: ", n);
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int largest = INT_MIN, secondLargest = INT_MIN;
int smallest = INT_MAX, secondSmallest = INT_MAX;
for(int i = 0; i < n; i++) {
if(arr[i] > largest) {
secondLargest = largest;
largest = arr[i];
} else if(arr[i] > secondLargest && arr[i] != largest) {
secondLargest = arr[i];
}
if(arr[i] < smallest) {
secondSmallest = smallest;
smallest = arr[i];
} else if(arr[i] < secondSmallest && arr[i] != smallest) {
secondSmallest = arr[i];
}
}
printf("Second Largest = %d\n", secondLargest);
printf("Second Smallest = %d\n", secondSmallest);
return 0;
}
Array Lab Tasks in C (Medium Level)
Lab Task 3: Left and Right Rotation
Problem Statement: Write a program in C that rotates an array to the left and right by k positions.
#include <stdio.h>
void leftRotate(int arr[], int n, int k) {
int temp[k];
for(int i = 0; i < k; i++)
temp[i] = arr[i];
for(int i = 0; i < n - k; i++)
arr[i] = arr[i + k];
for(int i = 0; i < k; i++)
arr[n - k + i] = temp[i];
}
void rightRotate(int arr[], int n, int k) {
int temp[k];
for(int i = 0; i < k; i++)
temp[i] = arr[n - k + i];
for(int i = n - 1; i >= k; i--)
arr[i] = arr[i - k];
for(int i = 0; i < k; i++)
arr[i] = temp[i];
}
void printArray(int arr[], int n) {
for(int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main() {
int n, k;
printf("Enter size of array: ");
scanf("%d", &n);
int arr[n];
printf("Enter %d elements: ", n);
for(int i = 0; i < n; i++)
scanf("%d", &arr[i]);
printf("Enter value of k: ");
scanf("%d", &k);
leftRotate(arr, n, k);
printf("After left rotation: ");
Array Lab Tasks in C (Medium Level)
printArray(arr, n);
rightRotate(arr, n, k);
printf("After right rotation (original array): ");
printArray(arr, n);
return 0;
}
Array Lab Tasks in C (Medium Level)
Lab Task 4: Merge Two Sorted Arrays
Problem Statement: Write a C program that merges two sorted arrays into a single sorted array without using
sorting functions.
#include <stdio.h>
int main() {
int n1, n2;
printf("Enter size of first sorted array: ");
scanf("%d", &n1);
int a[n1];
printf("Enter %d sorted elements: ", n1);
for(int i = 0; i < n1; i++)
scanf("%d", &a[i]);
printf("Enter size of second sorted array: ");
scanf("%d", &n2);
int b[n2];
printf("Enter %d sorted elements: ", n2);
for(int i = 0; i < n2; i++)
scanf("%d", &b[i]);
int merged[n1 + n2], i = 0, j = 0, k = 0;
while(i < n1 && j < n2) {
if(a[i] < b[j])
merged[k++] = a[i++];
else
merged[k++] = b[j++];
}
while(i < n1)
merged[k++] = a[i++];
while(j < n2)
merged[k++] = b[j++];
printf("Merged sorted array: ");
for(i = 0; i < n1 + n2; i++)
printf("%d ", merged[i]);
printf("\n");
return 0;
}
Array Lab Tasks in C (Medium Level)
Lab Task 5: Array Palindrome Checker
Problem Statement: Write a program in C to check if a given array is a palindrome (reads the same forward
and backward).
#include <stdio.h>
int main() {
int n;
printf("Enter size of array: ");
scanf("%d", &n);
int arr[n];
printf("Enter %d elements: ", n);
for(int i = 0; i < n; i++)
scanf("%d", &arr[i]);
int isPalindrome = 1;
for(int i = 0; i < n / 2; i++) {
if(arr[i] != arr[n - i - 1]) {
isPalindrome = 0;
break;
}
}
if(isPalindrome)
printf("The array is a palindrome.\n");
else
printf("The array is not a palindrome.\n");
return 0;
}