C Programs Fuctions and Pointers
1. Find GCD and LCM
#include<stdio.h>
int GCD(int a,int b)
{
int rem=a%b;
while(rem!=0)
{
a=b;
b=rem;
rem=a%b;
}
return b;
}
int LCM(int a,int b)
{
return ((a*b)/GCD(a,b));
}
int main()
{
int a,b,g,l;
printf("Enter two integers:\n");
scanf("%d%d",&a,&b);
g=GCD(a,b);
l=LCM(a,b);
printf("Greatest common divisor of %d and %d = %d\nLeast common multiple of %d and %d = %d",a,b,g,a,b,l);
return 0;
}2. Expression Evaluation
#include<stdio.h>
#include<math.h>
int calculate(int x,int n)
{
int sum=x;
for(int i=2;i<=n;i++)
{
sum=sum+pow(x,i);
}
return sum;
}
int main()
{
int x,n,y;
printf("Enter the value of x\n");
scanf("%d",&x);
printf("Enter the value of n\n");
scanf("%d",&n);
y=calculate(x,n);
printf("The result is\n%d",y);
return 0;
}3. Simplified Fraction
#include<stdio.h>
int GCD(int a,int b)
{
if(b==0)
return a;
return GCD(b,a%b);
}
void fun(int a,int b)
{
int d=1;
if(a/b==0)
{
if(a<b)
d=GCD(a,b);
else if(b<a)
d=GCD(a,b);
printf("%d/%d",a/d,b/d);
}
else
{
int m=1;
if((a%b)/b==0)
{
if((a%b)<b)
m=GCD(a%b,b);
else if((a%b)>b)
m=GCD(a%b,b);
}
printf("%d %d/%d",a/b,(a%b)/m,b/m);
}
}
void printValue(int a,int b)
{
if(a%b==0)
printf("%d",a/b);
else
fun(a,b);
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printValue(a,b);
return 0;
}4. Array Median
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,*arr,temp;
printf("Enter the number of elements in the array\n");
scanf("%d",&n);
arr=(int*)malloc(n*sizeof(int));
printf("Enter the elements in the array\n");
for(int i=0;i<n;i++)
{
scanf("%d",arr+i);
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(*(arr+i)> *(arr+j))
{
temp =*(arr +i);
*(arr+i)=*(arr+j);
*(arr+j)=temp;
}
}
}
float median;
if(n%2==0)
{
int mid=n/2;
median=(float)(*(arr+mid-1)+ *(arr+mid))/2;
}
else
median=*(arr+(n/2));
printf("The median of the array is %.2f",median);
return 0;
}5. Array Range
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *arr;
int n;
printf("Enter the numbe of elements in the array\n");
scanf("%d",&n);
arr=(int*)malloc(n*sizeof(int));
printf("Enter the elements in the array\n");
for(int i=1;i<=n;i++)
{
scanf("%d\n",arr+i);
}
int min=*(arr+1);
for(int i=2;i<=n;i++)
{
if(*(arr+i)<min)
{
min=*(arr+i);
}
}
int max=*(arr+1);
for(int i=2;i<=n;i++)
{
if(*(arr+i)>max)
max=*(arr+i);
}
int c=max-min;
printf("The range of the array is %d",c);
return 0;
}6. No of Distinct Elements in an unsorted array
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a,n;
scanf("%d",&n);
a=(int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++)
{
scanf("%d",a+i);
}
int count=1;
for(int i=1;i<n;i++)
{
int j=0;
for( j=0;j<i;j++)
{
if(a[i]==a[j])
break;
}
if(i==j)
count++;
}
printf("%d",count);
return 0;
}7. Inversion Count
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,*arr,count=0;
scanf("%d",&n);
arr=(int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++)
{
scanf("%d",arr+i);
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(*(arr+i)>*(arr+j))
{
int temp=*(arr+i);
*(arr+i)=*(arr+j);
*(arr+j)=temp;
count++;
}
}
}
printf("%d",count);
return 0;
}8. Maximum Difference
#include<stdio.h>
int maxdiff(int a[],int n)
{
int max_diff=a[1]-a[0];
int i,j;
for( i=0;i<n;i++)
{
for( j=i+1;j<n;j++)
{
if(a[j]-a[i]>max_diff)
{
max_diff=a[j]-a[i];
}
}
}
return max_diff;
}
int main()
{
int x,temp;
scanf("%d",&x);
int a[x];
for(int i=0;i<x;i++)
{
scanf("%d",&a[i]);
}
temp=maxdiff(a,x);
printf("%d",temp);
}9. Array Type
#include<stdio.h>
#include<stdlib.h>
int findType(int n,int *arr)
{
int even=0,odd=0;
for(int i=0;i<n;i++)
{
if(*(arr+i)%2==0)
even++;
else
odd++;
}
if(even==n)
return 1;
else if(odd==n)
return 2;
else
return 3;
}
int main()
{
int *arr,n;
printf("Enter the number of elements in the array\n");
scanf("%d",&n);
arr=(int*)malloc(n*sizeof(int));
printf("Enter the elements in the array\n");
for(int i=0;i<n;i++)
{
scanf("%d",arr+i);
}
int a=findType(n,arr);
switch(a)
{
case 1:printf("The array is Even");break;
case 2:printf("The array is Odd");break;
case 3:printf("The array is Mixed");break;
}
return 0;
}10. Fruit Yielding Tree
#include<stdio.h>
#include<stdlib.h>
void find(int *a,int *max,int n)
{
int maxx = -1,i,v,s;
for(i=0;i<n;i++)
{
v=*(a+i);
if(v>maxx)
{
s=i;
maxx=v;
}
}
*max=maxx;
*(a+s)=-1;
}
int main()
{
int *a,n,i,max=-1;
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",a+i);
}
find(a,&max,n);
find(a,&max,n);
printf("%d",max);
return 0;
}