C programs on Pointers

Practice programs on Pointers

1. Program in C to demonstrate how to handle the pointers in the program:

#include <stdio.h>
int main()
{
   int* ab;
   int m;
   m=29;
   printf("\n\n Pointer : How to  handle the pointers in the program :\n"); 
   printf("------------------------------------------------------------\n");
   printf(" Here in the declaration ab = int pointer, int m= 29\n\n");
    
   printf(" Address of m : %p\n",&m);
   printf(" Value of m : %d\n\n",m);
   ab=&m;
   printf(" Now ab is assigned with the address of m.\n");
   printf(" Address of pointer ab : %p\n",ab);
   printf(" Content of pointer ab : %d\n\n",*ab);
   m=34;
   printf(" The value of m assigned to 34 now.\n");
   printf(" Address of pointer ab : %p\n",ab);
   printf(" Content of pointer ab : %d\n\n",*ab);
   *ab=7;
   printf(" The pointer variable ab is assigned the value 7 now.\n");
   printf(" Address of m : %p\n",&m);//as ab contain the address of m
                                     //so *ab changed the value of m and now m become 7
   printf(" Value of m : %d\n\n",m);
   return 0;
}

*********************************************************************
2. Add two numbers using call by reference:

#include <stdio.h>
long addTwoNumbers(long *, long *);
 
int main()
{
   long fno, sno, sum;
   
   printf("\n\n Pointer : Add two numbers using call by reference:\n"); 
   printf("-------------------------------------------------------\n");   
 
   printf(" Input the first number : ");
   scanf("%ld", &fno);
   printf(" Input the second  number : ");
   scanf("%ld", &sno);   
   sum = addTwoNumbers(&fno, &sno);
   printf(" The sum of %ld and %ld  is %ld\n\n", fno, sno, sum);
   return 0;
}
long addTwoNumbers(long *n1, long *n2) 
{
   long sum;
   sum = *n1 + *n2;
   return sum;
}

**************************************************************
3.Generate permutations of a given string:

#include <stdio.h>
#include <string.h>

void changePosition(char *ch1, char *ch2)
{
    char tmp;
    tmp = *ch1;
    *ch1 = *ch2;
    *ch2 = tmp;
}
void charPermu(char *cht, int stno, int endno)
{
   int i;
   if (stno == endno)
     printf("%s  ", cht);
   else
   {
       for (i = stno; i <= endno; i++)
       {
          changePosition((cht+stno), (cht+i));
          charPermu(cht, stno+1, endno);
          changePosition((cht+stno), (cht+i)); 
       }
   }
}
 
int main()
{
   char str[] = "abcd";
   printf("\n\n Pointer : Generate permutations of a given string :\n"); 
   printf("--------------------------------------------------------\n"); 
   int n = strlen(str);
   printf(" The permutations of the string are : \n");
   charPermu(str, 0, n-1);
   printf("\n\n");
   return 0;
}

*******************************************************
4. Store and retrieve elements from an array:

#include <stdio.h>
int main()
{
   int arr1[25], i,n;
   printf("\n\n Pointer : Store and retrieve elements from an array :\n"); 
   printf("------------------------------------------------------------\n");    
   printf(" Input the number of elements to store in the array :");
   scanf("%d",&n);
   
   printf(" Input %d number of elements in the array :\n",n);
   for(i=0;i<n;i++)
      {
	  printf(" element - %d : ",i);
	  scanf("%d",arr1+i);
	  }
   printf(" The elements you entered are : \n");
   for(i=0;i<n;i++)
      {
	  printf(" element - %d : %d \n",i,*(arr1+i));
	  }
	   return 0;
}

*****************************************************
5. Calculate the length of a string:

#include <stdio.h>
int calculateLength(char*);
 
void main() 
{
   char str1[25];
   int l;
	printf("\n\n Pointer : Calculate the length of the string :\n"); 
	printf("---------------------------------------------------\n");
   
   printf(" Input a string : ");
   fgets(str1, sizeof str1, stdin);
   
   l = calculateLength(str1);
   printf(" The length of the given string %s is : %d ", str1, l-1);
   printf("\n\n");

}
 
int calculateLength(char* ch) // ch = base address of array str1 ( &str1[0]  )
{
   int ctr = 0;
   while (*ch != '\0') 
   {
      ctr++;
      ch++;
   }
   return ctr;
}

********************************************************************
6. Find the factorial of a given number:

#include <stdio.h>
void findFact(int,int*);
int main()
{
         int fact;
         int num1;
		printf("\n\n Pointer : Find the factorial of a given number :\n"); 
		printf("------------------------------------------------------\n");	
		printf(" Input a number : ");
		scanf("%d",&num1);		 

         findFact(num1,&fact);
         printf(" The Factorial of %d is : %d \n\n",num1,fact);
         return 0;
        }

void findFact(int n,int *f)
		{
        int i;

       *f =1;
       for(i=1;i<=n;i++)
       *f=*f*i;
       }

****************************************************************
7. Sort an array using pointer:

#include <stdio.h>
void main()
{
   int *a,i,j,tmp,n;
 	printf("\n\n Pointer : Sort an array using pointer :\n"); 
	printf("--------------------------------------------\n");	   
   
   printf(" Input the number of elements to store in the array : ");
   scanf("%d",&n);
   
   printf(" Input %d number of elements in the array : \n",n);
   for(i=0;i<n;i++)
      {
	  printf(" element - %d : ",i+1);
	  scanf("%d",a+i);
	  }   
   for(i=0;i<n;i++)
   {
    for(j=i+1;j<n;j++) { if( *(a+i) > *(a+j))
       {
      tmp = *(a+i);
      *(a+i) = *(a+j);
      *(a+j) = tmp;
       }
    }
   }
   printf("\n The elements in the array after sorting : \n");
   for(i=0;i<n;i++)
      {
	  printf(" element - %d : %d \n",i+1,*(a+i));
	  }         
printf("\n");
}

***************************************************************
8. Show a function returning pointer:

#include <stdio.h>
int* findLarger(int*, int*);
void main()
{
 int numa=0;
 int numb=0;
 int *result;
 	printf("\n\n Pointer : Show a function returning pointer :\n"); 
	printf("--------------------------------------------------\n");
   printf(" Input the first number : ");
   scanf("%d", &numa);
   printf(" Input the second  number : ");
   scanf("%d", &\numb); 	

 result=findLarger(&numa, &numb);
 printf(" The number %d is larger.  \n\n",*result);
}

int* findLarger(int *n1, int *n2)
{
 if(*n1 > *n2)
  return n1;
 else
  return n2;
}

****************************************************************
9. Sum of all elements in an array:

#include <stdio.h>
void main() 
{
   int arr1[10];
   int i,n, sum = 0;
   int *pt;
   
 	printf("\n\n Pointer : Sum of all elements in an array :\n"); 
	printf("------------------------------------------------\n"); 
	
   printf(" Input the number of elements to store in the array (max 10) : ");
   scanf("%d",&n);
   
   printf(" Input %d number of elements in the array : \n",n);
   for(i=0;i<n;i++)
      {
	  printf(" element - %d : ",i+1);
	  scanf("%d",&arr1[i]);
	  } 	

   pt = arr1; // pt store the base address of array arr1
 
   for (i = 0; i < n; i++) {
      sum = sum + *pt;
      pt++;
   }
 
   printf(" The sum of array is : %d\n\n", sum);
}

****************************************************************
10. Print all the alphabets:

#include <stdio.h>;

int main()
{
    char alph[27];
    int x;
    char *ptr;
 	printf("\n\n Pointer : Print all the alphabets:\n"); 
	printf("----------------------------------------\n");
    ptr = alph;     

    for(x=0;x<26;x++)
    {
        *ptr=x+'A';
        ptr++;
    }
    ptr = alph;

printf(" The Alphabets are : \n");
    for(x=0;x<26;x++)
    {
       printf(" %c ", *ptr);
        ptr++;
    }
    printf("\n\n");
    return(0);
}

****************************************************************************

For more practice questions, go to  Questionnare.

Sharing is Caring!!

Leave a Reply

Your email address will not be published. Required fields are marked *