↓↑ Program to count Number of 1's in binary number.
#include<stdio.h>
void bin(int);
static int c=0;
int main()
{
int n;
printf("enter decimal number :");
scanf("%d",&n);
printf("\nbinary number is:");
bin(n);
printf("\nno of one=%d\n",c);
return 0;
}
void bin(int n)
{
int r;
if(n!=0)
{
r=n%2;
if(r)c++;
n=n/2;
bin(n);
printf("%d",r);
}
else
printf(" ");
}
↓↑ Program to Find evaluation order of function parameters.
#include<stdio.h>
void test(int,int,int);
int main()
{
int i=6;
test(i++,i++,i++); // Although behaviour undefined but most compilers follow right-to-left evaluation order.
printf("\nAfter post:\n");
test(++i,++i,++i);
return 0;
}
void test(int a,int b,int c)
{
printf("value:a=%d\tb=%d\tc=%d\n",a,b,c);
printf("address:a=%u\tb=%u\tc=%u\n",&a,&b,&c);
}
↓↑ Program to calculate factorial of number correctly till 1...20.
#include<stdio.h>
long long int fact(int n);
int main()
{
int n;
long long int factN;
printf("enter number:");
scanf("%d",&n);
factN=fact(n);
printf("value of factorial %d is:%lld\n",n,factN);
return 0;
}
long long int fact(int n)
{
if(n==0)
return 1;
else
return n*fact(n-1);
}
↓↑ Program to calculate factorial of very large number(with math lib).
#include <stdio.h>
#include <math.h>
#include <string.h>
void multd(char * s, size_t len, unsigned n)
{
unsigned values[len];
size_t i;
memset(values, 0, sizeof(unsigned) * len);
for(i = len; i--; )
{
unsigned x = values[i] + (s[i] - '0') * n;
s[i] = '0' + x % 10;
if(i) values[i - 1] += x / 10;
}
}
void factd(char * s, size_t len, unsigned n)
{
memset(s, '0', len - 1);
s[len - 1] = '1';
for(; n > 1; --n) multd(s, len, n);
}
int main(void)
{
unsigned num = 5;
size_t len = ceill(log10l(tgammal(num + 1)));
char dstr[len + 1];
dstr[len] = 0;
factd(dstr, len, num);
puts(dstr);
}
↓↑ Program to calculate factorial of very large number(with gmp lib).
// There is no practical limit to the precision except the ones implied
// by the available memory in the machine GMP runs on.
#include <stdio.h>
#include <gmp.h>
void fact(mpz_t r,int n){
unsigned int i;
mpz_t temp;
mpz_init(temp);
mpz_set_ui(r,1);
for(i=1;i<=n;i++){
mpz_set_ui(temp,i);
mpz_mul(r,r,temp);
}
mpz_clear(temp);
}
int main(void) {
mpz_t r;
mpz_init(r);
// fact(r,188315);
fact(r,100);
gmp_printf("%Zd\n",r);
mpz_clear(r);
return(0);
}
//https://gmplib.org/
//sudo apt-get install libgmp3-dev or sudo yum install libgmp3-dev
//gcc factlargernumber.c -lgmp
↓↑ Program to print fibonacci series upto given length.
#include<stdio.h>
void fib(int,int,int);
int main()
{
int f0=0,f1=1,len;
printf("Enter fibonaci series length: ");
scanf("%d",&len);
fib(f0,f1,len);
printf("\n");
return 0;
}
void fib(int current,int old,int l)
{
static int i=0;
int new;
if(i<l)
{
new=current+old;
printf("%d ",new);
old=current;
current=new;
i++;
fib(current,old,l);
}
else
return;
}
↓↑ Program to demonstrate function pointer.
#include<stdio.h>
int test(int,int,int (*fp)(int,int));
int (*fp)(int,int);
int sum(int,int);
int main()
{
int a=3,b=4,sm;
fp=sum;
sm=test(a,b,sum);
printf("sum=%d\n",sm);
return 0;
}
int sum(int a,int b)
{
return (a+b);
}
int test(int a,int b,int (*fp)(int a,int b))
{
return fp(a,b);
}
↓↑ Menu based Program using function pointer.
#include<stdio.h>
int test(int,int,int (*fp)(int,int));
int sum(int,int);
int prod(int,int);
int div(int,int);
int sub(int,int);
int main()
{
int a=4,b=2,choice,result,(*fp[4])(int,int);
fp[0]=sum;
fp[1]=sub;
fp[2]=prod;
fp[3]=div;
printf("enter your choice.\n0.addition\n1.substraction\n2.multiplication\n3.division\n");
scanf("%d",&choice);
result=test(a,b,fp[choice]);
printf("%d\n",result);
return 0;
}
int sum(int a,int b)
{
printf("\nsum=");
return (a+b);
}
int prod(int a,int b)
{
printf("\nproduct=");
return(a*b);
}
int sub(int a,int b)
{
printf("\nsubstraction=");
return (a-b);
}
int div(int a,int b)
{
printf("\ndivision=");
return(a/b);
}
int test(int a,int b,int (*fp)(int a,int b))
{
return fp(a,b);
}
↓↑ Program to calculate GCD of two number using recursion.
#include<stdio.h>
int gcd(int,int);
int main()
{
int x,y,gcd1;
printf("enter two no.");
scanf("%d%d",&x,&y);
gcd1=gcd(x,y);
printf("gcd of two no is:%d\n",gcd1);
return 0;
}
int gcd(int x,int y)
{
if(x==y)
return x;
else if(x>y)
return gcd(x-y,y);
else
return gcd(x,y-x);
}
↓↑ Make file demonstration
//copy all parts in different files and keep in same directory
// then simply type ( make ) on terminal
makefile ->
all.out:mainp.o sump.o squarep.o
gcc main16.o sum16.o square16.o -o all.out
mainp.o:mainp.c
gcc main16.c -c
sump.o:sump.c
gcc sum16.c -c
squarep.o:squarep.c
gcc square16.c -c
mainp.c ->
#include<stdio.h>
#include<math.h>
int sum(int,int);
int square(int);
int main()
{
int a=3,b=8,sm,sqr;
sm=sum(a,b);
printf("sum=%d\n",sm);
sqr=square(a);
printf("sqr=%d\n",sqr);
return 0;
}
sump.c ->
int sum(int x,int y)
{
return x+y;
}
squarep.c ->
int square(int x)
{
return x*x;
}
↓↑ Program to pass 1 D array as function argument.
#include<stdio.h>
int sumall(int*,int);
int min(int*,int);
int max(int*,int);
int main()
{
int a[7]={10,12,19,14,9,18,11},s,mn,mx;
s=sumall(a,7);
mn=min(a,7);
mx=max(a,7);
printf("\nsum of 1-D array element is=%d\n",s);
printf("\nmin of 1-D array element is=%d\n",mn);
printf("\nmax of 1-D array element is=%d\n",mx);
return 0;
}
int sumall(int*p,int n)
{
int i,sm=0;
for(i=0;i<n;i++)
{
sm+=*(p+i);
printf("%d ",*(p+i));
}
return sm;
}
int min(int *p,int n)
{
int a=12323,i;
for(i=0;i<n;i++)
{
if(*(p+i)<a)
{
a=*(p+i);
}
}
return a;
}
int max(int *p,int n)
{
int a=-32452,i;
for(i=0;i<n;i++)
{
if(*(p+i)>a)
{
a=*(p+i);
}
}
return a;
}
↓↑ Program to pass 2 D array as function argument.
#include<stdio.h>
int summatrix(int nr,int nc,int (*p)[7]);
int main()
{
int a[2][7]={10,12,13,23,34,32,33,26,13,19,14,9,18,11},s;
s=sumall(2,7,a);
printf("\nsum of 2-D array element is=%d\n",s);
return 0;
}
int sumall(int nr,int nc,int (*p)[7])
{
int i,j,sm=0;
for(i=0;i<nr;i++)
{
printf("\n");
for(j=0;j<nc;j++)
{
sm+=*(*(p+i)+j);
// printf("%d ",*(*(p+i)+j));
}
}
return sm;
}
↓↑ Program to return array from function.
#include<stdio.h>
int* fun(int[],int);
int main()
{
int c[5]={4,7,8,9,6},i,*p;
p=fun(c,5);
for(i=0;i<5;i++)
printf("%d\t",*(p+i));
printf("\n");
return 0;
}
int* fun(int x[],int n)
{
int i;
for(i=0;i<n;i++)
{
x[i]=x[i]+1;
// printf("%d\t",x[i]);
}
printf("\n");
return x;
}
↓↑ Program to calculate sum of N natural number usung recursion.
#include<stdio.h>
int sum(int);
int main()
{
int n,n1;
printf("enter no.");
scanf("%d",&n);
n1=sum(n);
printf("sum of %d numbers is:%d\n1",n,n1);
return 0;
}
int sum(int n)
{
if(n==0)
return 0;
else
return n+sum(n-1);
}
↓↑ Program to demonstrate typedef for function pointer.
#include<stdio.h>
typedef int (*pftype)();
int sum(int,int);
int main()
{
int a=4,b=7;
pftype pf1;
pf1=sum;
pf1(a,b);
return 0;
}
int sum(int x,int y)
{
printf("sum=%d\n",x+y);
}