Practical / Solution
Use of Pointers — Exercise 1
Problem
Write a C program to modify the value of an integer variable using a pointer.
Program
#include <stdio.h>
int main()
{
int number;
int *ptr;
printf("Enter a number: ");
scanf("%d", &number);
ptr = &number;
printf("Original value = %d\n", number);
*ptr = *ptr + 20;
printf("Updated value = %d\n", number);
return 0;
}
Explanation
The pointer stores the address of number. Using
*ptr, the program can directly modify the original variable.
Expected Output
Enter a number: 30
Original value = 30
Updated value = 50
Use of Pointers — Exercise 2
Problem
Write a C program to swap two numbers using pointers.
Program
#include <stdio.h>
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a, b;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
printf("Before swap: a = %d, b = %d\n", a, b);
swap(&a, &b);
printf("After swap: a = %d, b = %d\n", a, b);
return 0;
}
Explanation
The addresses of the two variables are passed to swap().
The function changes the original values through the pointers.
Expected Output
Enter two numbers: 10 20
Before swap: a = 10, b = 20
After swap: a = 20, b = 10
Use of Pointers — Exercise 3
Problem
Write a C program to calculate the sum and difference of two numbers
using pointers.
Program
#include <stdio.h>
int main()
{
int a, b;
int *p1, *p2;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
p1 = &a;
p2 = &b;
printf("Sum = %d\n", *p1 + *p2);
printf("Difference = %d\n", *p1 - *p2);
return 0;
}
Explanation
The pointers provide access to the values stored in a
and b. The dereferenced values are used in arithmetic expressions.
Expected Output
Enter two numbers: 25 10
Sum = 35
Difference = 15
Use of Pointers — Exercise 4
Problem
Write a C program to find the largest of three numbers using pointers.
Program
#include <stdio.h>
int main()
{
int a, b, c;
int *p1, *p2, *p3;
int largest;
printf("Enter three numbers: ");
scanf("%d %d %d", &a, &b, &c);
p1 = &a;
p2 = &b;
p3 = &c;
largest = *p1;
if (*p2 > largest)
largest = *p2;
if (*p3 > largest)
largest = *p3;
printf("Largest number = %d\n", largest);
return 0;
}
Explanation
Pointers are used to access the three input values. Their dereferenced
values are compared to determine the largest number.
Expected Output
Enter three numbers: 45 92 67
Largest number = 92
Use of Pointers — Exercise 5
Problem
Write a C program to calculate the square of a number using a pointer.
Program
#include <stdio.h>
int main()
{
int number;
int *ptr;
printf("Enter a number: ");
scanf("%d", &number);
ptr = &number;
printf("Square = %d\n", (*ptr) * (*ptr));
return 0;
}
Explanation
The pointer is used to access the input value. The dereferenced value
is multiplied by itself to calculate the square.
Expected Output
Enter a number: 12
Square = 144
Use of Pointers — Exercise 6
Problem
Write a C program to find the sum of all elements of an integer array
using a pointer.
Program
#include <stdio.h>
int main()
{
int arr[5];
int *ptr;
int i;
int sum = 0;
printf("Enter 5 numbers:\n");
for (i = 0; i < 5; i++)
{
scanf("%d", &arr[i]);
}
ptr = arr;
for (i = 0; i < 5; i++)
{
sum += *(ptr + i);
}
printf("Sum = %d\n", sum);
return 0;
}
Explanation
The array name gives the address of its first element. Pointer arithmetic
is then used to access each array element through *(ptr + i).
Expected Output
Enter 5 numbers:
10 20 30 40 50
Sum = 150
Use of Pointers — Exercise 7
Problem
Write a C program to find the largest element in an array using a pointer.
Program
#include <stdio.h>
int main()
{
int arr[5];
int *ptr;
int i;
int largest;
printf("Enter 5 numbers:\n");
for (i = 0; i < 5; i++)
{
scanf("%d", &arr[i]);
}
ptr = arr;
largest = *ptr;
for (i = 1; i < 5; i++)
{
if (*(ptr + i) > largest)
{
largest = *(ptr + i);
}
}
printf("Largest element = %d\n", largest);
return 0;
}
Explanation
Pointer arithmetic allows the program to access each array element.
The largest value is tracked while traversing the array.
Expected Output
Enter 5 numbers:
12 45 8 72 31
Largest element = 72
Use of Pointers — Exercise 8
Problem
Write a C program to count the even and odd elements in an array using
a pointer.
Program
#include <stdio.h>
int main()
{
int arr[6];
int *ptr;
int i;
int even = 0;
int odd = 0;
printf("Enter 6 numbers:\n");
for (i = 0; i < 6; i++)
{
scanf("%d", &arr[i]);
}
ptr = arr;
for (i = 0; i < 6; i++)
{
if (*(ptr + i) % 2 == 0)
even++;
else
odd++;
}
printf("Even numbers = %d\n", even);
printf("Odd numbers = %d\n", odd);
return 0;
}
Explanation
Each array element is accessed through pointer arithmetic. The modulo
operator determines whether the value is even or odd.
Expected Output
Enter 6 numbers:
10 15 20 25 30 35
Even numbers = 3
Odd numbers = 3
Use of Pointers — Exercise 9
Problem
Write a C program to reverse an array using two pointers.
Program
#include <stdio.h>
int main()
{
int arr[5];
int *left;
int *right;
int temp;
int i;
printf("Enter 5 numbers:\n");
for (i = 0; i < 5; i++)
{
scanf("%d", &arr[i]);
}
left = arr;
right = arr + 4;
while (left < right)
{
temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
printf("Reversed array:\n");
for (i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
Explanation
One pointer starts at the first element and another at the last element.
Their values are swapped while the pointers move toward each other.
Expected Output
Enter 5 numbers:
10 20 30 40 50
Reversed array:
50 40 30 20 10
Use of Pointers — Exercise 10
Problem
Write a C program to calculate the average of array elements using
a pointer and a function.
Program
#include <stdio.h>
float calculateAverage(int *ptr, int size)
{
int i;
int sum = 0;
for (i = 0; i < size; i++)
{
sum += *(ptr + i);
}
return (float)sum / size;
}
int main()
{
int arr[5];
int i;
float average;
printf("Enter 5 numbers:\n");
for (i = 0; i < 5; i++)
{
scanf("%d", &arr[i]);
}
average = calculateAverage(arr, 5);
printf("Average = %.2f\n", average);
return 0;
}
Explanation
The array address is passed to the function through a pointer.
The function uses pointer arithmetic to access every element and
calculates the average.
Expected Output
Enter 5 numbers:
70 80 90 60 100
Average = 80.00