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; }