↓↑ Program to count Number of 1's in binary number.↓↑ Program to Find evaluation order of function parameters.#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 calculate factorial of number correctly till 1...20.#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 very large number(with math lib).#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 gmp 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 print fibonacci series upto given length.// 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 demonstrate function pointer.#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; }↓↑ Menu based Program using 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); }↓↑ Program to calculate GCD of two number using recursion.#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); }↓↑ Make file demonstration#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); }↓↑ Program to pass 1 D array as function argument.//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 2 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 return array from function.#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 calculate sum of N natural number usung recursion.#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 demonstrate typedef for function pointer.#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); }#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); }
This blog focus on systematic learning of c language for that i have added very basic assignments from low difficulty level to high difficulty level and advance and basic c concept which will be helpful for fresher as well as experienced.
Monday, July 28, 2014
c assignment 4
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment