Uploaded by arun kumar

C Programming language for beginners

advertisement
C
Programming
Online Tutorials
Arun Kumar
Introduction to c
Contents
1. Introduction to c ................................................................................................................................. 5
2. Structure of C ...................................................................................................................................... 6
3. Keywords and Identifiers .................................................................................................................... 7
Data Types............................................................................................................................................... 7
4.Data Types............................................................................................................................................ 8
5.Format Specifiers ................................................................................................................................. 9
6.Variables In c ...................................................................................................................................... 10
What is local variable ........................................................................................................................ 11
What is the default value of local variable ........................................................................................... 11
Global variable ...................................................................................................................................... 11
What is global variable? .................................................................................................................... 11
7.Operators In C .................................................................................................................................... 13
How to print the range of values of each and every data type ............................................................ 15
7.1Arithmetic Operator..................................................................................................................... 15
Division .......................................................................................................................................... 16
Modulus ........................................................................................................................................ 17
7.2Relational Operators .................................................................................................................... 18
When to use relational operator? ........................................................................................................ 18
Relational operator returns true or false .............................................................................................. 18
Now while comparing float with float or double be cautious .............................................................. 19
What is the associativity of relational operator ................................................................................... 20
7.3Logical Operator........................................................................................................................... 21
Short circuited operation ...................................................................................................................... 21
7.4BitWise Operator -> &,|,^,>>,<<,~ ............................................................................................... 23
How to swap two numbers using bit wise operator ............................................................................. 24
7.5Assignment Operator ................................................................................................................... 25
What is the associativity of assignment operartor ............................................................................... 25
7.5Ternary Operator ......................................................................................................................... 27
Find largest of two numbers ................................................................................................................. 27
Find the largest of three numbers ........................................................................................................ 27
Difference between logical and and bitwise and.................................................................................. 27
2
Introduction to c
7.6Unary Operator ............................................................................................................................ 28
Decrement -> pre decr ->--a -> decrement first assign next ................................................................ 28
Comma operator ............................................................................................................................... 30
Example 5 .............................................................................................................................................. 31
7.7Operator Precedence ................................................................................................................... 32
30 | 135 ( 4 months .............................................................................................................................. 34
How to convert celcius to farenheat .................................................................................................... 35
#include <stdio.h> ................................................................................................................................. 35
#include <stdio.h> ................................................................................................................................. 36
8.Constructs or Control Statements ..................................................................................................... 37
8.1If Statements ................................................................................................................................ 37
How to check the eligibility for vote ..................................................................................................... 38
We will work with characters ............................................................................................................... 41
While working with characters we should know its ascii values .......................................................... 41
How to check whether a year is leap year or not ................................................................................. 49
8.2Switch Case .................................................................................................................................. 52
8.2Loops ............................................................................................................................................ 57
Example 1: print natural numbers between 1 to 10 ............................................................................. 57
Example 2: print factorial of 5 using all three loops ............................................................................. 58
8.2.1While ..................................................................................................................................... 59
Find the first digit and last digit of a number ....................................................................................... 59
Example of pow function ...................................................................................................................... 61
How to print the digits of a number in reverse .................................................................................... 62
How to print the digits of a number in words ...................................................................................... 62
Print along with place value .................................................................................................................. 63
8.2.2do while................................................................................................................................. 65
8.2.3for .......................................................................................................................................... 67
We can use characters also inside for loop .......................................................................................... 68
How to print the factors of a number ................................................................................................... 70
Example 7: Fibonnoci series .................................................................................................................. 71
How to get inverted half pyramid ......................................................................................................... 72
How to print full pyramid...................................................................................................................... 73
How to print the given pattern ............................................................................................................. 75
How to print the following pattern ....................................................................................................... 76
3
Introduction to c
} ............................................................................................................................................................. 77
Statements in C language ..................................................................................................................... 78
How to use break and continue ........................................................................................................ 78
How to use goto ................................................................................................................................ 79
Arrays in C language.............................................................................................................................. 80
How to insert an element into an array............................................................................................ 87
How to delete an element in array ................................................................................................... 88
How to sort an element in an array ? ............................................................................................... 89
Linear search technique .................................................................................................................... 90
Two dimensional array.......................................................................................................................... 91
Three dimensional array ....................................................................................................................... 95
Strings in c ............................................................................................................................................. 97
Functions ............................................................................................................................................. 106
call by value..................................................................................................................................... 109
call by reference.............................................................................................................................. 110
Recursive function .......................................................................................................................... 113
Storage classes in c ......................................................................................................................... 117
Strucuture in C .................................................................................................................................... 121
Union ................................................................................................................................................... 128
Enumerated data type ........................................................................................................................ 129
Pointers ............................................................................................................................................... 131
Dynamic memory allocation ............................................................................................................... 138
Graphics programming ....................................................................................................................... 144
File Handling........................................................................................................................................ 147
4
Introduction to c
1. Introduction to c
NEXT
5
Structure of C
2. Structure of C
While using print function we will use some of the escape sequences or backslash character to
format our output
Escape sequences or backslash character
\n -> new line
\t -> tab space
\v -> vertical tab
\b -> backspace
\r -> carriage return
\a -> alert bell sound
\’ -> print single quotes
NEXT
6
Keywords and Identifiers
3. Keywords and Identifiers
Data Types
NEXT
7
Data Types
4.Data Types
NEXT
8
Format Specifiers
5.Format Specifiers
Example 1:
#include <stdio.h>
int main()
{
char ch;
int a;//declaration
float b;
double d;
printf("Input a character,integer,float and double : ");
scanf("%c%d%f%lf",&ch,&a,&b,&d);
printf("ch = %c\na = %d\nb = %3.2f\nd = %3.2lf\n",ch,a,b,d);
return 0;
}
NEXT
9
Variables in C
6.Variables In c
What are variables in c?
A variable is one whose values can change at any time so we are going to store some data in the
variables and use in our progam
What are the types of variables
Local variable
Example 1:
#include <stdio.h>
int main()
{
int a = 10;//local variable
printf("a = %d\n",a);
return 0;
}
Example 2:
#include <stdio.h>
int a = 10;//global variable
int main()
{
int b = 20;
{
int c = 30;//local variable
printf("c = %d\n",c);
}
printf("a = %d\nb = %d\n",a,b);
return 0;
}
NEXT
10
Variables in C
What is local variable
Anything declared within the function or within the block we call it as local variable
Scope -> its scope is local to the function in which it is defined ie available only within the function or
block
What is the default value of local variable
It will be garbage value so local variable if uninitalized takes garbage value so only when we find sum
and if it is local variable sum=0, why?
Global variable
Example 3:
#include <stdio.h>
int a = 10;//global variable
int main()
{
printf("a = %d\n",a);
return 0;
}
What is global variable?
Anything declared outside all functions and outside main become global
Scope -> its scope is till the program exits
What is the default value of gloable variable
It will be assigned default values of the data type
-int -> 0
-flaot -> 0.0
-double -> 0.0
-char ->’\0’
NEXT
11
Variables in C
Example 4:
#include <stdio.h>
int a = 10;
int main()
{
int a = 20;
{
int a = 30;
printf("a = %d\n",a);
}
printf("a = %d\n",a);
return 0;
}
So if local variable and global variable has same name then local variable will be given priority ie
local variable preceeds over the global variable
Example 5:
#include <stdio.h>
int main()
{
int a = printf("Hello world\n");//Hello world
printf("a = %d\n",a);
//a = 12
return 0;//printf returns number of successfult characters printed
}
NEXT
12
Operators in C
7.Operators In C
Example 1:
#include <stdio.h>
int main()
{
int a;
char ch;
float f;
double d;
printf("Size of integer is %d\n",sizeof(a));//4 bytes
printf("Size of float is %d\n",sizeof(f));//4 bytes
printf("Size of character is %d\n",sizeof(ch));//1 bytes
printf("Size of double is %d\n",sizeof(d));//8 bytes
return 0;
}
13
Operators in C
NEXT
14
Relational Operators in C
How to print the range of values of each and every data type
Example 7:
#include <stdio.h>
#include <limits.h>
#include <float.h>
int main()
{
printf("Minimum value of character is %d and maximum value is %d\n",CHAR_MIN,CHAR_MAX);
printf("Minimum value of Integer is %d and maximum value is %d\n",INT_MIN,INT_MAX);
printf("Minimum value of float is %g and maximum value is %g\n",FLT_MIN,FLT_MAX);
return 0;
}
7.1Arithmetic Operator
NEXT
15
Relational Operators in C
Example 1:
#include <stdio.h>
int main()
{
int a,b,c;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
c = a * b;
printf("c = %d\n",c);
return 0;
}
Division
Example 2:
#include <stdio.h>
int main()
{
int a,b;
float c;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
c = a / b;//5.0/2.0 -> 2.5
printf("c = %f\n",c);
return 0;
}
NEXT
16
Relational Operators in C
Modulus
#include <stdio.h>
int main()
{
int a,b,c;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
c = a % b;//-5%2 -> -1
printf("c = %d\n",c);
return 0;
}
Now modulus operator does not work on float data types now how to get remainder for float values
For this we have function called fmod() in math.h this returns remainder for float values
So directly using modulus operator on float values not allowed so we can call the function fmod
from math.h to get remainder of float values
Example 4:
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c;
printf("Input the two values : ");
scanf("%f%f",&a,&b);
c = fmod(a,b);
printf("c = %f\n",c);
return 0;
}
In arithmetic operator highest precedence will be given to * / % next precedence will be given to + If all of same precedence occurs we have to go for associativity for arithmetic operator associativity
is from L->R
NEXT
17
Relational Operators in C
7.2Relational Operators
>,<,>=,<=,==,!=
When to use relational operator?
When you want to compare two things or test a condition we go for relational operator
Relational operator returns true or false
In c language anything zero is false and anything other than zero is true
-5,-4,-0.2,0.2,3,10,20 all are true
0 -> false
Returns 1 if condition is true else it returns 0 ie false
Int a =20,b=20
a>b -> 0
a<b -> 0
a>=b -> 1
a<=b -> 1
a==b -> 1
a!=b -> 0
“abc”==”abc” when we write character within double quotes it becomes string and don’t use == for
comparing two strings there is a separate way of comparing two strings
Example 1:
#include <stdio.h>
int main()
{
int a=20,b=20;
printf("a>b = %d\n",(a>b));//0
printf("a<b = %d\n",(a<b));//0
printf("a>=b = %d\n",(a>=b));//1
printf("a<=b = %d\n",(a<=b));//1
printf("a==b = %d\n",(a==b));//1
NEXT
18
Relational Operators in C
printf("a!=b = %d\n",(a!=b));//0
return 0;
}
Now while comparing float with float or double be cautious
Default data type for float and double is double float is single precision and double is double
precision
So when we give 0.2 compiler considers this as double and left value is float so it is comparing with
float and double so we get undesired result so make 0.2 and 0.5 as float how? 0.2f and 0.5f so it is
comparing float with float
#include <stdio.h>
int main()
{
float a = 0.2,b = 0.5;
if(a==0.2f){printf("EQUAL\n");}
else{printf("NOT EQUAL\n");}
if(b==0.5f){printf("EQUAL\n");}
else{printf("NOT EQUAL\n");}
return 0;
}
NEXT
19
Relational Operators in C
What is the associativity of relational operator
It is left to right
Example 3:
#include <stdio.h>
int main()
{
int a = 9,b=10,c=1;
int d = a>b==c;//L->R a>b(1)1==1 d=1
printf("d = %d\n",d);
return 0;
}
Example 4:
#include <stdio.h>
int main()
{
int a = 10,b = 10,c = 10;
int d = a==b==c;//1st a==b performed 1 == c performed 1 == 10 (0)
printf("d = %d\n",d);
return 0;
}
NEXT
20
Logical Operators in C
7.3Logical Operator
&&,||,!
Example 1:
#include <stdio.h>
int main()
{
int a = 10,b = 15,c = 9;
int d = a<b && b>c;
int e = a>b || b>c;
int f = !a;
printf("d = %d\te = %d\t f = %d\t",d,e,f);
return 0;
}
Short circuited operation
NEXT
21
Logical Operators in C
Example 2:
#include <stdio.h>
int main()
{
int a =10,b = 10,c = 10;
int d = a==b&&a==c;
printf("d = %d\n",d);
return 0;
}
NEXT
22
BitWise Operators in C
7.4BitWise Operator -> &,|,^,>>,<<,~
Example 1:
#include <stdio.h>
int main()
{
int a = 20,b = 16;
printf("a&b = %d\n",(a&b));//16
printf("a|b = %d\n",(a|b));//20
printf("a^b = %d\n",(a^b));//4
printf("a>>3 = %d\n",(a>>3));//2
printf("31>>3 = %d\n",(31>>3));//3
printf("a<<3 = %d\n",(a<<3));//160
printf("~5 = %d\n",(~5));//-6
printf("~-5 = %d\n",(~-5));//4
return 0;
}
NEXT
23
BitWise Operators in C
How to swap two numbers using bit wise operator
Example 2:
#include <stdio.h>
int main()
{
int a = 20,b = 16;
printf("Before swapping a = %d and b = %d\n",a,b);
a = a^b;//16
b = a^b;//20
a = a^b;//16
printf("After swapping a = %d and b = %d\n",a,b);
return 0;
}
NEXT
24
Assignment Operators in C
7.5Assignment Operator
It is called as compound assignment +=,-=,/=,%=,>>=
Int a = 10;
->a+=5;//a = a+5->a = 10+5->a=15
What is the advantage of assignment operator here the expression length gets reduced and also it is
faster in execution
Example 1:
#include <stdio.h>
int main()
{
int a = 10;
a/=5;
printf("a = %d\n",a);
return 0;
}
What is the associativity of assignment operartor
Assocciativity is Right to left
#include <stdio.h>
int main()
{
int a = 10,b = 15,c = 5;
a+=b-=c;
printf("a = %d\tb = %d\tc = %d\n",a,b,c);
return 0;
}
//c = 5
//1st b-=c -> b = b - c-> b = 15-5 -> b = 10
//a+=b -> a = a+b -> a = 10 + 10->a = 20
NEXT
25
Assignment Operators in C
Example 2:
#include <stdio.h>
int main()
{
int a = 10;
a+=a+=a-=5;
printf("a = %d\n",a);
return 0;
}
//a-=5 -> a = a - 5 -> a = 10-5 a->5
//a+=a -> a = a + a -> a = 5 + 5->10
//a+=a -> a = a + a -> a = 10 + 10 ->20
Example 3:
#include <stdio.h>
int main()
{
int a = 10,b = 15,c = 18;
int d = a<b && (b+=2)<c;//d = 0 b+=2 will not be executed
printf("d = %d\nb = %d\n",d,b);
return 0;
}
NEXT
26
Ternary Operators in C
7.5Ternary Operator
Ternary (or) conditional opearator -> ? :
->int a = 15,b = 12,c = 18;
Find largest of two numbers
->int d = a>b?a:b
->if(a>b){return a;}else{return b;}
Find the largest of three numbers
->int e = (a>b)? (a>c?a:c) : (b>c?b:c);
Example 1:
#include <stdio.h>
int main()
{
int a = 15,b = 12,c = 18;
int d = a>b?a:b;
int e = (a>b)?(a>c?a:c):(b>c?b:c);
printf("d = %d\ne = %d\n",d,e);
return 0;
}
Difference between logical and and bitwise and
#include <stdio.h>
int main()
{
int a = 3,b = 20;
(a&&b)?printf("TRUE\n"):printf("FALSE\n");
(a&b)?printf("TRUE\n"):printf("FALSE\n");
return 0;
}
//20 -> 0 0 0 1 0 1 0 0
//5 -> 0 0 0 0 0 0 1 1 result of 20&5 0
NEXT
27
Unary Operators in C
Example 3:
#include <stdio.h>
int main()
{
int num;
printf("Input a number : ");
scanf("%d",&num);
(num%2==0)?printf("EVEN\n"):printf("ODD\n");
((num&1)==0)?printf("EVEN\n"):printf("ODD\n");
return 0;
}
7.6Unary Operator
Increment -> pre incr -> ++a ->increment first assign next
Post incr -> a++ -> assign first increment next
Decrement -> pre decr ->--a -> decrement first assign next
Post decr -> a-- -> assign and then decrement
#include <stdio.h>
int main()
{
int a = 10,b = 20;//a -> 11//a->12 b=19 b=18
printf("a++ = %d\n",a++);//10
printf("++a = %d\n",++a);//12
printf("--b = %d\n",--b);//19
printf("b-- = %d\n",b--);//19
printf("a = %d\nb = %d\n",a,b);
return 0;
}
NEXT
28
Unary Operators in C
Example 2:
#include <stdio.h>
int main()
{
int a = 10,b = 20;
int c = a++ + a++ + ++a;
int d = --b + --b + b--;
printf("c = %d\na = %d\n",c,a);
printf("d = %d\nb = %d\n",d,b);
return 0;
}
//a->11->12->13
//a++ + a++ + ++a
//10 + 11 + 13 -> 34
//b->20->19->18 -> 17
//--b + --b + b-//19 + 18 + 18
//54
Example 3:
#include <stdio.h>
int main()
{
int a = 10;
printf("%d\t%d\t%d\n",a++ + a++ + ++a,a++ + ++a,++a + ++a + a++);
printf("a = %d\n",a);
return 0;
}
NEXT
29
Unary Operators in C
//In print expressions are valuated from right to left
//a 10->11->12->13->14->15->16->17->18
//++a + ++a + a++
//11 + 12 + 12
//35
//a++ + ++a
//13 + 15
//28
//a++ + a++ + ++a
//15 + 16 + 18
//49
Comma operator
Expressions valuated from left to right and right most value assigned
#include <stdio.h>
int main()
{
int a = 10;//a->10->11->12->13
int b = (a++,++a,a++);//(10,12,12)
printf("b = %d\ta = %d\n",b,a);
return 0;
Example 4:
#include <stdio.h>
int main()
{
int a,b,c,d;
a = printf("Hello world\n");//12
//print returns number of successfull character printed on console screen
b = scanf("%d%d",&c,&d);//2
NEXT
30
Unary Operators in C
//scanf returns number of successfull inputs read
printf("a = %d\nb = %d\n",a,b);
return 0;
}
Example 5
#include <stdio.h>
int main()
{
int a = (printf("%d",4556),printf("%d",846),printf("%d",57));
printf("\na = %d\n",a);
return 0;
}
//a=(4,3,2)
//455684657
//a = 2
Sizeof operator it does not valuate any expressions it just returns the size of argument passed
Example 1:
#include <stdio.h>
int main()
{
int a = 10;
int b = sizeof(printf("Hello world\n"));
//size of operator does not valuate any expressions
printf("a = %d\nb = %d\n",a,b);
return 0;
}
NEXT
31
Operator Precedence in C
7.7Operator Precedence
#include <stdio.h>
int main()
{
int y=-2,x=1,z=0;
z += ~y==x;
printf("z = %d\n",z);
return 0;
}
//first it performs ~y -> ~y = -(y+1)->~-2 -> -(-2+1)->-(-1)->1
//1 == 1 ->true so it returns 1
//z+=1 -> z = z + 1 -> z = 0 + 1 -> z=1
Example 2:
#include <stdio.h>
int main()
{
int y=-2,x=10,z=5;
z += ~y+2>x>>3;
printf("z = %d\n",z);
NEXT
32
Operator Precedence in C
return 0;
}
//~y -> ~-2 -> 1
//~y+2 -> 1 + 2 -> 3
//x>>3 -> 10>>3 -> 10/2->5/2->2/2->1
//3>1 -> 1
//z += 1 -> z = 0+1->1
Example 2:
#include <stdio.h>
int main()
{
int z = 5;
z += 4*6+2%3>>2+1+~-2;
printf("z = %d\n",z);
return 0;
}
//~-2 -> -(-2+1)->1
//z = 4*6+2%3>>2+1+1
//z = 24+2%3>>2+1+1
//z = 24+2>>2+1+1
//z = 26>>2+1+1
//z = 26>>4
//z += 26/2->13/2->6/2->3/2->1
//z = z+1->5+1->6
NEXT
33
Operator Precedence in C
Example 3:
#include <stdio.h>
int main()
{
int i=10;
int j = ++i++;//throw error
printf("j = %d\ni = %d\n",j,i);
return 0;
}
//we can assign a = 10 it is correct
//can we write 10 = a not possible
//increment operator throwing lvalue required
//i++ it will increment i and returns rvalue
Input is babies age in number of days we have to calculate babies age in number of years months
and days
Banod = 500, y=500/365, m= 500%365/30, d=500%365%30
1 year = 365days, 1month = 30 days
365 | 500 ( 1 year
365
30 | 135 ( 4 months
120
15 days
Example 1:
#include <stdio.h>
int main()
{
int banod,y,m,d;
printf("Input the babies age in number of days : ");
NEXT
34
Operator Precedence in C
scanf("%d",&banod);
y = banod/365;
m = banod%365/30;
d = banod%365%30;
printf("Babies age is %d years %d months and %d days\n",y,m,d);
return 0;
}
How to convert celcius to farenheat
Fh = (1.8*c)+32
Example 3:
#include <stdio.h>
int main()
{
float cel,fh;
printf("Input the celcius : ");
scanf("%f",&cel);
fh = (1.8*cel)+32;
printf("%.2f%cC = %.2f%cF\n",cel,248,fh,248);
return 0;
}
Area of circle here we are going to use macros or pre-processor directives or we can also call it as
symbolic constants
Example 4:
#include <stdio.h>
#define PI 3.14//macro or preprocessor directive or symbolic constant
int main()
{
float rad,area;
NEXT
35
Operator Precedence in C
printf("Input the radius : ");
scanf("%f",&rad);
area = PI * rad * rad;
printf("Area = %.2f\n",area);
return 0;
}
Example 5:
#include <stdio.h>
#define PI 3.14//macro or preprocessor directive or symbolic constant
#define area(r) PI*rad*rad
int main()
{
float rad,area;
printf("Input the radius : ");
scanf("%f",&rad);
printf("Area = %.2f\n",area(rad));
return 0;
}
NEXT
36
Control Statements or Constructs in C
8.Constructs or Control Statements
8.1If Statements
#include <stdio.h>
int main()
{
int num;
printf("Input a number : ");
scanf("%d",&num);
if(num>=0){printf("Positive number\n");}
return 0;
}
NEXT
37
if statement in C
Example 2:
#include <stdio.h>
int main()
{
int num;
printf("Input a number : ");
scanf("%d",&num);
if(num%2==0){printf("EVEN\n");}
else{printf("ODD\n");}
if((num&1)==0){printf("EVEN\n");}
else{printf("ODD\n");}
return 0;
}
How to check the eligibility for vote
#include <stdio.h>
int main()
{
int age;
printf("Input the age : ");
scanf("%d",&age);
if(age>=18){printf("Elgible to vote\n");}
else{printf("Not eligible to vote\n");}
return 0;
}
NEXT
38
if statement in C
Example 4:
#include <stdio.h>
int main()
{
int y = -1,x=0;
if(~y==x){printf("Hai");}
else{printf("Bye");}
return 0;
}
//`y -> ~(-1)->-(-1+1)->0
//0 == 2 false Bye
//0 < 2 true hai
Example 5:
#include <stdio.h>
int main()
{
if(printf("%d",4556),printf("%d",768),printf("%d",0)){printf("Hai");}
else{printf("Bye");}
return 0;
}
//(4,3,1)right most value assigned
//45567680Hai
NEXT
39
if statement in C
Example 6:
#include <stdio.h>
int main()
{
int y = 3;
if(y--,--y,--y){printf("Hai");}
else{printf("Bye");}
return 0;
}
//y = 3->2->1->0
//(3,1,0)if(0)
//y--,--y,--y
Input is 3 sides of a triangle and we have to print whether the triangle is isoceles scalene or
equilateral
Equilateral -> all 3 sides equal
Isoceles -> any 2 sides equal
Scalene -> none of the sides equal
Three sides are sa,sb,sc
Equilateral -> sa==sb==sc(not possible)
 (sa==sb)&&(sb==sc) -|> codition to test equilateral
Isoclees -> (sa==sb)||(sa==sc)||(sb==sc)
Scalene
Here we are going to use if else if when ever we test more than one condition we go for if else if else
Example 5:
#include <stdio.h>
int main()
{
int sa,sb,sc;
NEXT
40
if statement in C
printf("Inupt the three sides : ");
scanf("%d%d%d",&sa,&sb,&sc);
if(sa==sb&&sa==sc){printf("EQUILATERAL\n");}
else if(sa==sb||sa==sc||sb==sc){printf("ISOCELES\n");}
else{printf("SCALENE\n");}
return 0;
}
We will work with characters
While working with characters we should know its ascii values
‘A’ - >65
‘Z’ -> 90
‘a’ -> 97
‘z’->122
‘0’->48
‘9’->57
Example 5:
#include <stdio.h>
int main()
{ char lch1='a',lch2='z',uch1='A',uch2='Z',dch1='0',dch2='9';
printf("'A' = %d\t'Z' = %d\n",uch1,uch2);
printf("'a' = %d\t'z' = %d\n",lch1,lch2);
printf("'0' = %d\t'9' = %d\n",dch1,dch2);
return 0;
}
Example 6:
How to convert the case of character
#include <stdio.h>
int main()
{
char ch;
NEXT
41
if statement in C
printf("Input a character : ");
scanf("%c",&ch);
if(ch>='a'&&ch<='z'){ch = ch - 32;}
else{ch = ch + 32;}
printf("Coverted character is %c\n",ch);
return 0;
}
How to check whether a character is vowel or not
Example 7:
#include <stdio.h>
int main()
{
char ch;
printf("Input a character : ");
ch = getchar();//scanf("%c",&ch);
if(ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u'){printf("Vowels\n");}
else{printf("Not a vowel\n");}
return 0;
}
How to check whether the character is digit, lowercase, upper case or special character
Example 8:
#include <stdio.h>
int main()
{
char ch;
NEXT
42
if statement in C
printf("Input a character : ");
ch = getchar();//scanf("%c",&ch);
if(ch>='a'&&ch<='z'){printf("Lower case\n");}
else if(ch>='A'&&ch<='Z'){printf("Upper case\n");}
else if(ch>='0'&&ch<='9'){printf("Digit\n");}
else{printf("Special character\n");}
return 0;
}
There is a special header file called ctype.h specially for characters it contains built in function to
work with characters
->isalpha(ch) if ch is alphabet it returns true else false
->isalnum(ch)
->isdigit(ch)
->ispunt(ch)
->islower(ch)
->isupper(ch)
->tolower(ch)
->toupper(ch)
Example 9:
#include <stdio.h>
#include <ctype.h>
int main()
{ char ch;
printf("Input a character : ");
ch = getchar();//scanf("%c",&ch);
if(isalpha(ch)&&islower(ch)){ch=toupper(ch);}
else{ch=tolower(ch);}
printf("Converted character is %c\n",ch);
NEXT
43
if statement in C
return 0;
}
Example 10
Check whether the character is lower , upper or digit or special character
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch;
printf("Input a character : ");
ch = getchar();//scanf("%c",&ch);
if(isalpha(ch)&&islower(ch)){printf("Lower case\n");}
else if(isalpha(ch)&&isupper(ch)){printf("Upper case\n");}
else if(isalnum(ch)&&isdigit(ch)){printf("Digit\n");}
else{printf("Special character\n");}
return 0;
}
Input is age and gender of the employee if age is greater than 30 and gender is male then print he
needs insurance else if age is greater than 25 and gender is female then print she needs insurance
Else print no need insurance
NEXT
44
if statement in C
#include <stdio.h>
int main()
{
int age;
char gen;
printf("Input the gender(m/f) : ");
scanf("%c",&gen);
printf("Input the age : ");
scanf("%d",&age)
if(age>=30&&gen=='m'){printf("He needs insurance\n");}
else if(age>=25&&gen=='f'){printf("She needs insurance\n");}
else{printf("No need insurance\n");}
return 0;
}
NEXT
45
if statement in C
How to find the roots of quadratic equaiton
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c,d;
float x1,x2;
printf("Input the coefficients a,b and c : ");
scanf("%d%d%d",&a,&b,&c);
d = b*b-4*a*c;
if(d==0){
printf("Roots are real and equal\n");
x1=x2=-b/(2*a);
printf("Roots are x1 = %.2f and x2 = %.2f\n",x1,x2);
}
else if(d>0){
printf("Roots are real and different\n");
NEXT
46
if statement in C
x1 = -b+sqrt(d)/(2*a);
x2 = -b-sqrt(d)/(2*a);
printf("Roots are x1 = %.2f and x2 = %.2f\n",x1,x2);
}
else{
printf("Roots are imaginary\n");
}
return 0;
}
Calculate the electricity bill
Units<200
Units>200 and units<400
Units>400 and units<600
Units>600
#include <stdio.h>
#include <math.h>
int main()
{
int units;
Charges = units*0.50f
Charges = 150+(units-200)*0.65f
Charges =350 + (untis-400)*0.75f
Charges = 550 + (units-400)*0.95f
float charges;
printf("Input the units consumed : ");
scanf("%d",&units);
if(units<200){charges = units*0.50f;}
else if(units>200&&units<400){charges = 150+(units-200)*0.65f;}
else if(units>400&&units<600){charges = 350+(units-400)*0.75f;}
else{charges = 550+(units-600)*0.95f;}
printf("Charges are %.2f for %d units consumed\n",charges,units);
return 0;
}
NEXT
47
if statement in C
Get 6 subjeccts mark of the student and find the average and if avg is greater than 90 then print gold
medal else if avg is greater than 75 and less than 90 the print first cclass with distinction else if avg is
greater than 60 and avg less than 75 print first class else if avg greater than 45 and less than 60 print
second class else print fail
Nested if
How to find the largest of three numbers
#include <stdio.h>
int main()
{
int a,b,c,d,e;
printf("Input the three numbers : ");
scanf("%d%d%d",&a,&b,&c);
d = (a>b)?(a>c?a:c):(b>c?b:c);
printf("Largest of three numbers is %d\n",d);
if(a>b){
if(a>c){
printf("Largest of three numbers is %d\n",a);
}else{
printf("Largest of three numbers is %d\n",c);
}
}else{
if(b>c){
printf("Largest of three numbers is %d\n",b);
}else{
printf("Largest of three numbers is %d\n",c);
}
}
return 0;
}
NEXT
48
if statement in C
How to check whether a year is leap year or not
#include <stdio.h>
int main()
{
int year;
printf("Input the year : ");
scanf("%d",&year);
if(year%4==0){
if(year%100==0){
if(year%400==0){
printf("It is a leap year\n");
}else{
printf("Not a leap year\n");
}
}else{
printf("It is a leap year\n");
}
}else{
printf("Not a leap year\n");
}
return 0;
}
NEXT
49
if statement in C
Input is pin number of an ATM validate the pin number if it is correct then print authorized entry and
get the amount else print unauthorized entry if amount is in multiples of 100 then print amount
withdrawn else print unable to dispense cash
#include <stdio.h>
int main()
{
int amount,pinNum;
printf("Input the pin Number : ");
scanf("%d",&pinNum);
if(pinNum>=1111&&pinNum<=9999){
printf("Authorized entry\n");
printf("Input the amount : ");
scanf("%d",&amount);
if(amount%100==0){
printf("%d withdrawn\n",amount);
}else{
printf("Unable to dispense cash\n");
}
}else{
printf("UnAuthroized entry\n");
}
return 0;
}
Input is three sides of a triangle find the largest side and if largest side is greater than addition of
other two sides then print sides form a triangle else print sides do nor form a triangle
#include <stdio.h>
int main()
{
int sa,sb,sc,ls,aots;
NEXT
50
if statement in C
printf("Input the three sides of a triangle : ");
scanf("%d%d%d",&sa,&sb,&sc);
ls = (sa>sb)?(sa>sc?sa:sc):(sb>sc?sb:sc);
if(ls==sa){
aots = sb+sc;
if(ls>aots){
printf("Sides form a triangle\n");
}else{
printf("Sides do not form a triangle\n");
}
}else if(ls==sb){
aots = sa+sc;
if(ls>aots){
printf("Sides form a triangle\n");
}else{
printf("Sides do not form a triangle\n");
}
}else{
aots = sa+sb;
if(ls>aots){
printf("Sides form a triangle\n");
}else{
printf("Sides do not form a triangle\n");
}
}
return 0;
}
NEXT
51
switch case statement in C
8.2Switch Case
#include <stdio.h>
int main()
{
int day;
printf("Input a day (1-7) : ");
scanf("%d",&day);
switch(day){
printf("Inside swith case\n");
case 1:
printf("Monday\n");
break;
case 4+1:
printf("Friday\n");
break;
case 2+1:
printf("Wednesday\n");
NEXT
52
switch case statement in C
break;
case 4:
printf("Thursday\n");
break;
case 2:
printf("Tuesday\n");
break;
default:
printf("None of case matches input (1-7)\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
}
return 0;
}
Example 2:
#include <stdio.h>
#define MAX 4
int main()
{
int a = 3;
switch(MAX>>1+~-1){//MAX>>1+~-1->4>>1+~-1->~-1->-(-1+1)->0->MAX>>1+0->MAX>>1->4/2->2
NEXT
53
switch case statement in C
case MAX>>1+~-3:
printf("ZERO\n");
break;
case 1:
printf("ONE\n");
break;
case MAX>>1:
printf("TWO\n");
break;
case (MAX>>1+~-3)+3://~-3->-(-3+1)->2->MAX>>1+2->MAX>>3->4/2->2/2->1/2->0
printf("THREE\n");
break;
case MAX:
printf("FOUR\n");
break;
case 5:
printf("FIVE\n");
break;
case 6:
printf("SIX\n");
break;
}
return 0;
}
NEXT
54
switch case statement in C
Example 3:
#include <stdio.h>
int main()
{
char ch;
printf("Input a character : ");
ch = getchar();
switch(ch){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("Vowels\n");
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
printf("Digit\n");
break;
NEXT
55
switch case statement in C
default:
printf("Input only vowels and digits\n");
}
return 0;
}
NEXT
56
Loops in C
8.2Loops
Example 1: print natural numbers between 1 to 10
#include <stdio.h>
int main()
{
int i=1;
while(i<=10){
printf("%d\t",i);
i++;
}
i=1;
printf("\n");
do{
printf("%d\t",i);
i++;
}while(i<=10);
printf("\n");
NEXT
57
Loops in C
for(i=1;i<=10;i++){
printf("%d\t",i);
}
return 0;
}
Example 2: print factorial of 5 using all three loops
5! = 5*4*3*2*1 = 120
6! = 6 * 5! = 6 * 120 = 720
#include <stdio.h>
int main()
{
int num=6,fact=1;
while(num>=1){
fact *= num;//1 * 5->5*4->20 * 3->60 * 2->120 * 1->120
num--;
}
printf("Factorial = %d\n",fact);
num = 6,fact = 1;
do{
fact *= num;
num--;
}while(num>=1);
printf("Factorail = %d\n",fact);
for(num=6,fact=1;num>=1;num--){
fact *= num;
}
printf("Factorail = %d\n",fact);
NEXT
58
While Loop in C
return 0;
}
8.2.1While
Find the first digit and last digit of a number
#include <stdio.h>
int main()
{
int num,fd,ld;
printf("Input any digit number greater than 2 : ");
scanf("%d",&num);
ld = num%10;
while(num>=10){
num/=10;//num = num / 10->456/10 -> 45(num)45>=10(t)->45/10->4 4>=10(f) come out of loop
}
fd = num;
printf("First digit = %d\nLast digit = %d\n",fd,ld);
return 0;
NEXT
59
While Loop in C
}
Example 4:
#include <stdio.h>
int main()
{
int i = 20;
while(i){//in c we know anything zero is false and other than zero is true
//i -> 20 i->10 i->5 i->2 i->1 i->0 false exits the loop
printf("%d\t",i);//20 10 5 2 1
i>>=1;//i = i/2->20/2->10(i)->10/2->5(i)->5/2->2(i)->2/2->1(i)->1/2->0(i)
}
return 0;
}
Example 5:
How to find the count of digits of a number
How to find the sum and product of digits of a number
How to check whether a number is Armstrong or not
#include <stdio.h>
#include <math.h>
int main()
{
int num,rem,anum=0,count=0,sum=0,prod=1,onum;
printf("Input any digit number : ");
scanf("%d",&num);
onum = num;
while(num!=0){
count++;
NEXT
60
While Loop in C
num/=10;
}
printf("Count = %d\n",count);
num = onum;
while(num!=0){
rem = num%10;
sum += rem;
prod *=rem;
anum += pow(rem,count);
num/=10;
}
printf("Sum = %d\tProdcut = %d\n",sum,prod);
if(anum==onum){printf("It is an armstrong number\n");}
else{printf("It is not an arsmtrong number\n");}
return 0;
}
Example of pow function
#include <stdio.h>
#include <math.h>
int main()
{
int a = 5,b = 2;
int c = (pow(a,b)+0.5);//pow(5,2)->24.567 so when we store in int rounding happens it gives
//24 instead of 25
printf("c = %d\n",c);
NEXT
61
While Loop in C
return 0;
}
How to print the digits of a number in reverse
Input -> 5698
Output -> 8965
How to check whether the number is palindrome or not
Forward and reverse should be same
#include <stdio.h>
int main()
{
int num,rnum=0,rem,onum;//num = 4598
printf("Input a number : ");
scanf("%d",&num);
onum = num;
while(num!=0){//459!=0(t) 45!=0(t) 4!=0(t) 0 !=0 (f)
rem = num%10;//this gives each time last digit of num 8 9 5 4
rnum = rnum*10+rem;// 0 * 10+8->8 -> 8*10+9->89 ->89*10+5->895->895*10+4->8954
num/=10;//num = num/10 this removes last digit from num 459 45 4 0
}
printf("Reverse of the number is %d\n",rnum);
if(rnum==onum){printf("It is a palindrome number\n");}
else{printf("Not a palindrome number\n");}
return 0;
}
How to print the digits of a number in words
Input : 87564
Output : EIGHT SEVEN FIVE SIX FOUR
NEXT
62
While Loop in C
STEP 1: Find reverse of the number rnum=46578 count = 5
STEP 2: Find the count of digits of a number
STEP 3: create a loop get each digit and print in words while printing in words decrement count
depending on count place the place value
Print along with place value
Output: EIGHTY SEVEN THOUSAND FIVE HUNDRED SIXTY FOUR
Count ->5 and count ->2 then print TY
Count ->4 -> print thousand
Count->3->print hundered
Count->1 -> print “ “
#include <stdio.h>
int main()
{
int num,rnum=0,rem,onum,count=0;//num = 4598
printf("Input a number : ");
scanf("%d",&num);
onum = num;
while(num!=0){
rem = num%10;
count++;
rnum = rnum*10+rem;
num/=10;
}
while(rnum!=0){
switch(rnum%10){
case 0:
NEXT
63
While Loop in C
printf(" ZERO");
break;
case 1:
printf(" ONE");
break;
case 2:
printf(" TWO");
break;
case 3:
printf(" THREE");
break;
case 4:
printf(" FOUR");
break;
case 5:
printf(" FIVE");
break;
case 6:
printf(" SIX");
break;
case 7:
printf(" SEVEN");
break;
case 8:
printf(" EIGHT");
break;
case 9:
NEXT
64
While Loop in C
printf(" NINE");
}
switch(count){
case 5:
case 2:
printf("TY");
break;
case 4:
printf(" THOUSAND");
break;
case 3:
printf(" HUNDRED");
break;
case 1:
printf(" ");
}
count--;
rnum/=10;
}
return 0;
}
8.2.2do while
Even when condition is false loop gets executed atleast once so we use do while loop for menu
driven application where menu has to be displayed atleast once and then the user can select the
menu or exit the application
#include <stdio.h>
int main()
{
NEXT
65
Do while in C
int i = 20;
do{
printf("%d\t",i);//20 10 5 2 1
i>>=1;//i = i >> 1;//20>>1->20/2->10(i)->10/2->5 -> 5/2-> 2 -> 2/2->1->1/2->0
}while(i);//10(t) 5(t) 2(t) 1(t) 0(f) exits the loop
return 0;
}
Example 2:
#include <stdio.h>
int main()
{
char ch;
int a,b;
do{
fflush(stdin);
printf("\n\t1.Press '+' for addition ");
printf("\n\t2.Press '-' for subtraction ");
printf("\n\t3.Press '*' for multiplication ");
printf("\n\t3.Press '/' for division ");
printf("\n\t5.Press 'e' to exit the application ");
printf("\nSelect your choice");
ch = getchar();
switch(ch){
case '+':
printf("Input the two values : ");
NEXT
Do while in C
scanf("%d%d",&a,&b);
printf("Addition = %d\n",(a+b));
break;
case '-':
printf("Input the two values : ");
scanf("%d%d",&a,&b);
printf("Subtraction = %d\n",(a-b));
break;
case '*':
printf("Input the two values : ");
scanf("%d%d",&a,&b);
printf("Multiplication = %d\n",(a*b));
break;
case '/':
printf("Input the two values : ");
scanf("%d%d",&a,&b);
printf("Divison = %.2f\n",((float)a/b));
default:
printf("\nPresss e to exit the application");
}
}while(ch!='e');
return 0;
}
8.2.3for
How to get this output only one for loop to be used
1
2
3
4
10
9
8
7
NEXT
For loop in C
5
6
7
8
9
10
6
5
4
3
2
1
Example 1:
#include <stdio.h>
int main()
{
int i,j;
for(i=1,j=10;i<=10&&j>=1;i++,j--){//for(;;)->infinte loop
printf("%d\t%d\n",i,j);
}
return 0;
}
We can use characters also inside for loop
Example 2:
#include <stdio.h>
int main()
{
char ch;
for(ch='a';ch<='z';ch++){
printf("%c\n",ch);
}
return 0;
}
Example 3:
Print the multiplication table of any given number
Num = 5
5*1=5
5 * 2 = 10
NEXT
For loop in C
5 * 3 = 15
...
...
5 * 10 = 50
#include <stdio.h>
int main()
{
int num,i;
printf("Input a number : ");
scanf("%d",&num);
for(i=1;i<=10;i++){
printf("%d * %d = %d\n",num,i,(num*i));
}
return 0;
}
Example 4:
#include <stdio.h>
int main()
{
int i;
for(i=20;i;i>>=1){
printf("%d\t",i);
}
return 0;
}
NEXT
For loop in C
How to print the factors of a number
Example 5:
24 -> 1,2,3,4,6,8,12,24
36 -> 1,2,3,4,6,9,12,18,36
How to find count of number of factors
How to check whether it is prime or not
Prime numbers factors are 1 and itself so for prime numbers count of number of factors should be 2
#include <stdio.h>
int main()
{
int num,i,count=0;
printf("Input a number : ");
scanf("%d",&num);
for(i=1;i<=num;i++){
if(num%i==0){count++;printf("%d\t",i);}
}
printf("\nCount of number of factors is %d\n",count);
if(count==2){printf("It is a prime number\n");}
else{printf("Not a prime number\n");}
return 0;
}
Example 6:
How to find the GCD of two numbers
24-> 1,2,3,4,6,8,12,24
36-> 1,2,3,4,6,9,12,18,36
GCD->12
NEXT
For loop in C
#include <stdio.h>
int main()
{
int num1,num2,i,gcd;
printf("Input num1 and num2 : ");
scanf("%d%d",&num1,&num2);
for(i=1;i<=num1&&i<=num2;i++){
if(num1%i==0&&num2%i==0){gcd=i;}
}
printf("GCD = %d\n",gcd);
return 0;
}
Example 7: Fibonnoci series
1
1
2
3
#include <stdio.h>
int main()
5
8
13
21
34
{
int nos,i,t1=1,t2=1,nt;
printf("Input the number of series to be printed : ");
scanf("%d",&nos);
for(i=1;i<=nos;i++){
printf("%d\t",t1);
nt = t1 + t2;
t1 = t2;
t2 = nt;
}
return 0;
}
NEXT
55
For loop in C
Pattern printing
How to print half pyramid
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
#include <stdio.h>
int main()
{
int rows,i,j;
printf("Input the number of rows : ");
scanf("%d",&rows);
for(i=1;i<=rows;i++){
for(j=1;j<=i;j++){
printf("*");
}
printf("\n");
}
return 0;
}
How to get inverted half pyramid
#include <stdio.h>
int main()
{
int rows,i,j;
NEXT
For loop in C
printf("Input the number of rows : ");
scanf("%d",&rows);
for(i=rows;i>=1;i--){
for(j=1;j<=i;j++){
printf("*");
}
printf("\n");
}
return 0;
}
How to print full pyramid
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
NEXT
For loop in C
#include <stdio.h>
int main()
{
int rows,i,j,k=0,sp;
printf("Input the number of rows : ");
scanf("%d",&rows);
for(i=rows;i>=1;i--,k=0){
for(sp=1;sp<=rows-i;sp++){
printf(" ");
}
while(k!=2*i-1){
printf("*");
k++;
}
printf("\n");
}
return 0;
}
NEXT
For loop in C
How to print the given pattern
#include <stdio.h>
int main()
{
int rows,i,j,k=0,l;
printf("Input the number of rows : ");
scanf("%d",&rows);
for(i=rows,l=0;i>=1;i--,l++,k=0){
for(j=1;j<=2*i;j++){
printf("*");
while(i==j&&k!=2*l){
printf(" ");
k++;
}
}
printf("\n");
}
NEXT
For loop in C
for(i=1,l=rows-1;i<=rows;i++,l--,k=0){
for(j=1;j<=2*i;j++){
printf("*");
while(i==j&&k!=2*l){
printf(" ");
k++;
}
}
printf("\n");
}
return 0;
}
How to print the following pattern
1
2
6
3
7
10
4
8
11
13
5
9
12
14
15
NEXT
For loop in C
#include <stdio.h>
int main()
{
int rows,i,j,n,af=0;
printf("Input the number of rows : ");
scanf("%d",&rows);
for(i=1;i<=rows;i++){
for(j=1,n=rows;j<=i;j++,n--){
if(j==1){af=0;}
if(j>=2){af+=n;}
printf("%d\t",(i+af));
}
printf("\n");
}
return 0;
}
Statements in C
Statements in C language
1) –break -> it takes control out of the loop ie it breaks the loop
2) –continue -> it skips particular iteration but will be within the loop
3) –goto -> Unconditional transfer developers will avoid using goto since it may create infinite
loop or may cause bugs in the code it is advisable not to use goto since it branches from one
location to another location without any condition
How to use break and continue
Example 1:
#include <stdio.h>
int main()
{
int i=1;
for(;;){//infinite loop
if(i>30){break;}
if(i>=11&&i<=20){i++;continue;}
printf("%d\n",i);
i++;
}
return 0;
}
Pronic number
12 = 3*4
20 = 4*5
30 = 5*6
Example 2:
#include <stdio.h>
int main()
Statements in C
{
int num,pnum,i=1;
printf("Input a number : ");
scanf("%d",&num);
while(1){
pnum = i * (i+1);
if(pnum==num){printf("It is a pronic number\n");break;}
else if(pnum<num){i++;continue;}
else{printf("It is not a pronic number\n");break;}
}
return 0;
}
How to use goto
Without loop get 5 numbers find the sum and print it now if any number is negative then stop
getting the number and print its sum
Example 3:
#include <stdio.h>
int main()
{
int num,sum=0,i=1;
Loop1: printf("Input a number : ");
scanf("%d",&num);
if(num<0){goto Loop2;}
sum+=num;
if(++i<=5){goto Loop1;}
Loop2: printf("Sum = %d\n",sum);
return 0;
}
Arrays in C
Arrays in C language
What is an array and how to declare and initialize an array?
Example 1:
#include <stdio.h>
int main()
{
int arr[5]={10,20};
//when we intialize an array to less than its size rest of the elements
//will be intialized to zero
//there in no bound checking for arrays in c we can exceed the limits
//of array in c
int i;
for(i=0;i<8;i++){
printf("%d\t",i[arr]);
}
return 0;
}
Arrays in C
Example 2: finding size of an array
#include <stdio.h>
int main()
{
int arr[5]={10,20,30,40,50};
//when we intialize an array to less than its size rest of the elements
//will be intialized to zero
//there in no bound checking for arrays in c we can exceed the limits
//of array in c
int i;
int size = sizeof(arr)/sizeof(arr[0]);
printf("Size of an array is %d\n",size);
for(i=0;i<size;i++){
printf("%d\t",i[arr]);
}
return 0;
}
Example 3:
#include <stdio.h>
int main()
{
int arr[]={1,2,3,4,5};//arr[0]-2 arr[1]-3
int l;
int i = arr[0]++;//assign and then increment i = 1->i=2
int j = ++arr[1];//increment first assign next arr[1]=2 j=3
int k = arr[i++];//arr[1] k = 3
printf("i = %d\nj = %d\nk = %d\n",i,j,k);//i=2,j=3,k=3
Strings in c
for(l=0;l<5;l++){
printf("%d\t",l[arr]);//2 3 3 4 5
}
return 0;
}
Example 3
#include <stdio.h>
int main()
{
int arr[]={10,20,30,40,50};
int i;
int size = sizeof(arr)/sizeof(arr[0]);
for(i=0;i<size;i++){
arr[i]+=5;
}
printf("\n-------DISPLAYING ARRAY ELEMENTS---------\n");
for(i=0;i<size;i++){
printf("%d\t",arr[i]);
}
return 0;
}
How to find the sum and average of elements of an array
#include <stdio.h>
int main()
{
int arr[100],noe,i,sum=0;
float avg;
Arrays in C
printf("Input the number of elements of the array : ");
scanf("%d",&noe);
printf("Input the %d array elements : ",noe);
for(i=0;i<noe;i++){
scanf("%d",&arr[i]);
}
for(i=0;i<noe;i++){
sum+=arr[i];
}
avg = (float)sum/noe;//5/2->2 (float)5/2->2.5
printf("Sum = %d\nAverage = %.2f\n",sum,avg);
return 0;
}
How to find largest element and smallest element in an array
#include <stdio.h>
int main()
{
int arr[100],noe,i,le,se;
printf("Input the number of elements of the array : ");
scanf("%d",&noe);
printf("Input the %d elements of the array : ",noe);
for(i=0;i<noe;i++){
scanf("%d",&arr[i]);
}
le = arr[0];
se = arr[0];
83
Arrays in C
for(i=0;i<noe;i++){
if(arr[i]>le){le = arr[i];}
if(arr[i]<se){se = arr[i];}
}
printf("Largest element = %d\nSmallest element = %d\n",le,se);
return 0;
}
How to copy array elements
#include <stdio.h>
int main()
{
int arr1[5]={10,20,30,40,50};
int i,arr2[5];
for(i=0;i<5;i++){
arr2[i]=arr1[i];
}
printf("--------COPIED ARRAY IS--------\n");
for(i=0;i<5;i++){
printf("%d\t",arr2[i]);
}
return 0;
}
How to print only prime numbers of an element of an array
#include <stdio.h>
int main()
{
84
Arrays in C
int arr[100],noe,i,j,count=0;
printf("Input the number of elements of the array : ");
scanf("%d",&noe);
printf("Input %d elements of the array : ",noe);
for(i=0;i<noe;i++){
scanf("%d",&arr[i]);
}
printf("\n----------PRIME NUMBERS IN ARRAY IS---------\n");
for(i=0;i<noe;i++){
for(j=1;j<=arr[i];j++){
if(arr[i]%j==0){count++;}
}
if(count==2){printf("%d\t",arr[i]);count=0;}
else{count=0;continue;}
}
return 0;
}
How to store separately even numbers and odd numbers of an array and display it
#include <stdio.h>
int main()
{
int arr[100],noe,earr[100],oarr[100],coen=0,coon=0,i;
printf("Input the number of elements of the array : ");
scanf("%d",&noe);
printf("Input the %d elements of the array : ",noe);
for(i=0;i<noe;i++){
85
Arrays in C
scanf("%d",&arr[i]);
}
for(i=0;i<noe;i++){
if(arr[i]%2==0){earr[coen]=arr[i];coen++;}
else{oarr[coon]=arr[i];coon++;}
}
printf("\n---------DISPLAYING EVEN ELEMENTS OF ARRAY----------\n");
for(i=0;i<coen;i++){
printf("%d\t",earr[i]);
}
printf("\n---------DISPLAYING ODD ELEMENTS OF ARRAY----------\n");
for(i=0;i<coon;i++){
printf("%d\t",oarr[i]);
}
return 0;
}
86
Arrays in C
How to insert an element into an array
#include <stdio.h>
int main()
{
int arr[100],noe,pos,ele,i;
printf("Input the array elements : ");
scanf("%d",&noe);
printf("Input the %d elements of the array : ",noe);
for(i=0;i<noe;i++){
scanf("%d",&arr[i]);
}
printf("----------DISPLAYING ARRAY ELEMENTS-------------\n");
for(i=0;i<noe;i++){
printf("%d\t",arr[i]);
}
printf("\nInput the position where to insert : ");
scanf("%d",&pos);
printf("Input the element to be inserted : ");
scanf("%d",&ele);
for(i=noe-1;i>=pos-1;i--){
arr[i+1]=arr[i];
}
arr[pos-1]=ele;
printf("\n--------ARRAY AFTER INSERTION IS-----------\n");
for(i=0;i<=noe;i++){
printf("%d\t",arr[i]);
}
return 0;
}
87
Arrays in C
How to delete an element in array
#include <stdio.h>
int main()
{
int arr[100],noe,pos,i;
printf("Input the array elements : ");
scanf("%d",&noe);
printf("Input the %d elements of the array : ",noe);
for(i=0;i<noe;i++){
scanf("%d",&arr[i]);
}
printf("----------DISPLAYING ARRAY ELEMENTS-------------\n");
for(i=0;i<noe;i++){
printf("%d\t",arr[i]);
}
printf("\nInput the position where to delete : ");
scanf("%d",&pos);
for(i=pos-1;i<noe;i++){
arr[i]=arr[i+1];
}
printf("\n--------ARRAY AFTER DELETION IS-----------\n");
for(i=0;i<noe-1;i++){
printf("%d\t",arr[i]);
}
return 0;
}
88
Arrays in C
How to sort an element in an array ?
So for this we go for bubble sort it is the easiest sorting technique and effective also
#include <stdio.h>
int main()
{
int arr[6]={11,13,15,14,17,16};
int noe=6,i,j,flag=0;
for(i=0;i<noe-1;i++){
printf("\n%d pass\n",(i+1));
for(j=0;j<noe-1;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=1;
}
89
Arrays in C
}
if(flag){flag=0;continue;}
else{break;}
}
printf("\n------ARRAY AFTER SORTING----------\n");
for(i=0;i<noe;i++){
printf("%d\t",arr[i]);
}
return 0;
}
Linear search technique
#include <stdio.h>
int main()
{
int arr[10]={10,17,18,13,16,14},noe=6,i,se;
printf("Input the element to be searched : ");
scanf("%d",&se);
for(i=0;i<noe;i++){
if(arr[i]==se){printf("%d found at location %d\n",se,(i+1));break;}
}
if(i==noe){printf("%d not found in array\n",se);}
return 0;
}
90
Arrays in C
Two dimensional array
How to declare and initialize a two dimensional array and work with it
#include <stdio.h>
int main()
{
int arr[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int i,j;
printf("---------DISPLAYING ARRAY ELMENTS--------\n");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d\t",arr[i][j]);
}
printf("\n");
91
Arrays in C
}
return 0;
}
How to record two cities weekly temperature and display it
#include <stdio.h>
#define CITY 2
#define WEEK 7
int main()
{
int temp[CITY][WEEK];
int i,j;
for(i=0;i<CITY;i++){
printf("Input City %d weekly temperature : ",(i+1));
for(j=0;j<WEEK;j++){
scanf("%d",&temp[i][j]);
}
}
printf("\n---------DISPLAYING WEEKLY TEMPERATURE-----------\n");
for(i=0;i<CITY;i++){
printf("CITY %d Temp : ",(i+1));
for(j=0;j<WEEK;j++){
printf("%d\t",temp[i][j]);
}
printf("\n");
}
return 0;
}
92
Arrays in C
Two dimensional array we can all it as matrix or table
How to add two matrix, transpose of matrix and multiplication of matrix
#include <stdio.h>
int main()
{
int arr1[3][3],arr2[3][3],rarr[3][3],tarr[3][3],mofa[3][3]={0};
int i,j,k;
printf("Input the array 1 elements : ");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&arr1[i][j]);
}
}
printf("Input the array 2 elements : ");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&arr2[i][j]);
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
rarr[i][j]=arr1[i][j]+arr2[i][j];
}
}
printf("\n--------ARRAY AFTER ADDITION IS-----------\n");
for(i=0;i<3;i++){
93
Arrays in C
for(j=0;j<3;j++){
printf("%d\t",rarr[i][j]);
}
printf("\n");
}
printf("\n-----------TRASPOSE OF ADDITION ARRAY IS----------\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
tarr[i][j]=rarr[j][i];
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d\t",tarr[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
for(k=0;k<3;k++){
mofa[i][j]+=arr1[i][k]*arr2[k][j];
}
}
}
printf("\n--------ARRAY AFTER MULTIPLICATION------------\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
94
Arrays in C
printf("%d\t",mofa[i][j]);
}
printf("\n");
}
return 0;
}
Three dimensional array
#include <stdio.h>
int main()
{
int arr[2][3][3]={
{{1,2,3},{4,5,6},{7,8,9}},
{{10,11,12},{13,14,15},{16,17,18}},
};
int i,j,k;
printf("\n------DISPLAYING ARRAY----------\n");
for(i=0;i<2;i++){
for(j=0;j<3;j++){
for(k=0;k<3;k++){
printf("%d\t",arr[i][j][k]);
}
printf("\n");
}
printf("\n");
}
return 0;
95
Arrays in C
}
There are 2 departments with 2 students and 3 subjects find the total of marks of each student in
each department
#include <stdio.h>
#define DEPT 2
#define STUD 2
#define SUBJ 3
int main()
{
int arr[DEPT][STUD][SUBJ]={
{{67,78,65},{86,78,83}},
{{87,76,79},{94,78,95}}
};
int i,j,k,total=0;
printf("\n------DISPLAYING ARRAY----------\n");
for(i=0;i<DEPT;i++){
printf("DEPARTMENT %d : ",(i+1));
for(j=0;j<STUD;j++){
printf("STUDENT %d :",(j+1));
for(k=0;k<SUBJ;k++){
total += arr[i][j][k];
}
printf("TOTAL : %d\n",total);
total = 0;
}
printf("\n\t\t");
}
return 0;
}
96
Strings in c
Strings in c
Example 1:
#include <stdio.h>
int main()
{
char str1[]="Hello world";
char *str2="Hello world";
char str3[12]={'H','e','l','l','o',' ','w','o','r','l','d'};
char str4[12],*str5;
str5 = str2;
printf("String 1 is %s\n",str1);
printf("String 2 is %s\n",str2);
printf("String 3 is %s\n",str3);
printf("String 5 is %s\n",str5);
return 0;
}
Strings in c
How to read strings
Using scanf we can read a string but any white space will be marked as end of string in scanf
Then how to read a line of string using scanf so for this we go for width specifier
#include <stdio.h>
int main()
{
char str[50];
printf("Input a string : ");
scanf("%[^\n]s",str);
printf("String inputted is %s\n",str);
return 0;
}
There is a function called gets() and puts() which can read and print the string on the console screen
What is the difference between gets() and scanf()
We know scanf can be used to read any type of data gets is specially to read a string
Difference between puts and printf
Puts is used to print strings on console screen where as print to print any type of data
-puts will print and go to next line by default printf will print and wait in same line
How to read a string character by character
#include <stdio.h>
int main()
{
char str[50];
Strings in c
char ch;
int i=0;
printf("Input a string : ");
while((ch=getchar())!='\n'){
str[i]=ch;
i++;
}
str[i]='\0';
printf("String inputted is %s\n",str);
return 0;
}
How to print the length of the string with built in function and without built in function
-string.h and its built in function strlen(str)
#include <stdio.h>
#include <string.h>
int main()
{
char str1[50];
char str2[40];
int len;
printf("Input string 1 : ");
gets(str1);
printf("Length of string 1 is %d\n",strlen(str1));
printf("Input string 2 : ");
gets(str2);
printf("Length of string 2 is %d\n",strlen(str2));
//without built in function how to find the length
Strings in c
for(len=0;str1[len]!='\0';len++);
printf("Length of string 1 without built in funcntion is %d\n",len);
len=0;
while(str2[len]!='\0'){len++;}
printf("Length of string 2 without built in function is %d\n",len);
return 0;
}
How to copy one string into another string
-string.h has built in function strcpy(dest,src)
#include <stdio.h>
#include <string.h>
int main()
{
char str1[50];
char str2[40],str3[40];
int i;
printf("Input string 1 : ");
gets(str1);
strcpy(str2,str1);
printf("Copied string is %s\n",str2);
for(i=0;str1[i]!='\0';i++){
str3[i]=str1[i];
}
str3[i]='\0';
printf("Copied string is %s\n",str3);
return 0;
}
Strings in c
Whenever it is a pointer to character the string is stored in read only memory so modifications not
allowed
But when it is an array of character it is store in read write shared memory where modifications
allowed
#include <stdio.h>
#include <string.h>
int main()
{//3,0 right most value assigned
if(printf("%d",456),printf("%s","\0")){//456
printf("\nHai");
}else{
printf("\nBye");
}
return 0;
}
Example 5:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[20]="Hello world";
*(str1+5)='\0';
printf("%s",str1);
return 0;
}
How to reverse the string how to check palindrome or not
-malayalam
-madam
Strings in c
-radar
#include <stdio.h>
#include <string.h>
int main()
{
char str1[40],rstr[40];
int begin=0,len=0,end;
printf("Input a string :");
gets(str1);
while(str1[len]!='\0'){
len++;
}//end points to end f string 1
end = len-1;
for(begin=0;begin<len;begin++,end--){
rstr[begin]=str1[end];
}
rstr[begin]='\0';
printf("Reverse of string 1 is %s\n",rstr);
for(begin=0;begin<len;begin++){
if(rstr[begin]!=str1[begin]){printf("It is not a palindrome\n");break;}
}
if(begin==len){printf("It is a palindrome\n");}
return 0;
}
With built in function
#include <stdio.h>
#include <string.h>
Strings in c
int main()
{
char str1[40],rstr[40];
printf("Input a string : ");
gets(str1);
strcpy(rstr,str1);
strrev(rstr);
if(strcmp(rstr,str1)==0){printf("It is a palindrome\n");}
else{printf("Not a palindrome\n");}
return 0;
}
How to concatenate two strings
-char str1=”arun”;
-chat str2 =”kumar”;
-strcat(str1,str2)->pf(str1)->arunkumar as output
With built in function and without built in function
Here in concatenation destination size should be large enough to store both the strings
#include <stdio.h>
int main()
{
char str1[40],str2[20],str3[20];
int len=0,i;
printf("Input string 1 : ");
gets(str1);
printf("Input string 2 : ");
gets(str2);
Strings in c
printf("Input strinng 3 : ");
gets(str3);
strcat(str1,str2);
printf("Concatentaed string is %s\n",str1);
while(str2[len]!='\0'){len++;}
for(i=0;str3[i]!='\0';i++,len++){
str2[len]=str3[i];
}
str2[len]='\0';
printf("Concatenated string with out built in function is %s\n",str2);
return 0;
}
Find the frequency of occurrence of a character in a given string
-string str1 – “sachin is a sports person and was awarded”
-find frequency of occurrence of s ouput – 6
#include <stdio.h>
int main()
{
char str1[60],ch;
int i,foc=0;
printf("Input a string : ");
gets(str1);
printf("Input a character to find its frequency of occurence : ");
ch = getchar();
for(i=0;str1[i]!='\0';i++){
if(str1[i]==ch){foc++;}
Strings in c
}
printf("Frequency of occurence of %c is %d\n",ch,foc);
return 0;
}
How to find the count of vowels, digits, spaces and consonants in a given string
#include <stdio.h>
int main()
{
char str1[60];
int i,cov=0,cod=0,cosp=0,coc=0;
printf("Input a string : ");
gets(str1);
for(i=0;str1[i]!='\0';i++){
if(str1[i]=='a'||str1[i]=='e'||str1[i]=='i'||str1[i]=='o'||str1[i]=='u'){cov++;}
if(str1[i]>='0'&&str1[i]<='9'){cod++;}
if(str1[i]>='a'&&str1[i]<='z'){coc++;}
if(str1[i]==' '){cosp++;}
}
printf("Count of vowels is %d\n",cov);
printf("Count of digits is %d\n",cod);
printf("Count of spaces is %d\n",cosp);
printf("Count of cosonants is %d\n",coc);
return 0;
}
Functions in c
Functions
What is a function?
We divide the main task into subtask and achieve it individually and finally called so as to complete
the main task
When there are any repetitive codes we write it as function and call it as many times required
Need for function?
Number of lines of code is reduced and also easy to maintain
What is a function signature?
-returnvalue funname(arglist)
Based on signature we can classify the function into 4 types
1)
2)
3)
4)
1)
2)
3)
4)
function with return values and with arguments
function without return values and without arguments
function with return values and without arguments
function without return values and with arguments
function call?
What is function call?
Two types
1) call by value
2) call by reference
int add(int,int)
void add()
int add()
void add(int,int)
function with return values and with arguments
#include <stdio.h>
int add(int,int);//function prototype or function declaration
//it will be helpful in debugging the errors
int main()
{
int a,b,c;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
c=add(a,b);//call by value
printf("C = %d\n",c);
return 0;
}
int add(int a,int b){
return a+b;
Functions in c
}
function without return values and without arguments
#include <stdio.h>
void add();//function prototype or function declaration
//it will be helpful in debugging the errors
int main()
{
add();//call by value
return 0;
}
void add(){
int a,b,c;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
c=a+b;
printf("c = %d\n",c);
}
function with return values and without arguments
#include <stdio.h>
int add();//function prototype or function declaration
//it will be helpful in debugging the errors
int main()
{
int c;
c=add();//call by value
printf("c = %d\n",c);
Functions in c
return 0;
}
int add(){
int a,b;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
return a+b;
}
function without return values and with arguments
#include <stdio.h>
void add(int,int);//function prototype or function declaration
//it will be helpful in debugging the errors
int main()
{
int a,b;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
add(a,b);//call by value
return 0;
}
void add(int a,int b){
int c = a+b;
printf("c = %d\n",c);
}
Using call by value a function can return only one value
#include <stdio.h>
int display();
int main()
{
printf("%d\n",display());
return 0;
}
int display(){
int a=10;//11,12,13
return a++,++a,++a;//10,12,13
}
Functions in c
We can declare and call the function at the same place
#include <stdio.h>
int main()
{
void display();//function declaration
display();//call by value
printf("return to main\n");
return 0;
}
void display()
{
printf("Inside display function\n");
}
We cannot define one function within another function
call by value
Swap two numbers
#include <stdio.h>
void swap(int,int);
int main()
{
int a,b;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
printf("Before swapping a = %d and b = %d\n",a,b);
swap(a,b);
printf("After swapping a = %d and b = %d\n",a,b);
return 0;
}
void swap(int a,int b){
int temp = a;
a = b;
b = temp;
}
In call by value we pass the values directly so main does not get reflected with modifications
Functions in c
call by reference
we should know about pointers
#include <stdio.h>
int main()
{
int *ip;
char *cp;
float *fp;
double *dp;
printf("Size of integer pointer is %d\n",sizeof(ip));
printf("Size of char pointer is %d\n",sizeof(cp));
printf("Size of float pointer is %d\n",sizeof(fp));
printf("Size of double pointer is %d\n",sizeof(dp));
return 0;
}
Pointers
#include <stdio.h>
int main()
{
int a = 10;
int *ip;
ip = &a;
printf("Value of a is %d\n",a);
printf("Value of a is %d\n",*ip);
printf("Value of a is %d\n",*(&a));
printf("Address of a is %u\n",ip);
printf("Address of a is %u\n",&a);
return 0;
}
In call by reference changes get reflected on main
#include <stdio.h>
void swap(int *,int *);
int main()
{
int a,b;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
printf("Before swapping a = %d and b = %d\n",a,b);
swap(&a,&b);//call by reference
printf("After swapping a = %d and b = %d\n",a,b);
return 0;
}
void swap(int *a,int *b){
Functions in c
int temp = *a;
*a = *b;
*b = temp;
}
Pointers
#include <stdio.h>
int main()
{
int a = 20;
int *ip;
ip = &a;
printf("value of a is %d\n",a);
printf("value of a is %d\n",*ip);
printf("value of a is %d\n",*(&a));
*ip += 30;
printf("value of a is %d\n",a);
printf("value of a is %d\n",*ip);
printf("value of a is %d\n",*(&a));
return 0;
}
A function can return only one value using return keyword but a function can return multiple
values by call by reference or pointers
#include <stdio.h>
void mathOperation(int,int,int *,int *);
int main()
{
int a,b,sum,diff;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
mathOperation(a,b,&sum,&diff);
printf("Sum = %d\nDifference = %d\n",sum,diff);
return 0;
}
void mathOperation(int x,int y,int *s,int *d){
*s = x + y;
*d = x - y;
}
Example 5:
#include <stdio.h>
float divide(int,int);
int checkZero(int);
int main()
{
Functions in c
int a,b;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
printf("Divison = %.2f\n",divide(a,b));
return 0;
}
float divide(int a,int b){
if(checkZero(b)){return 0;}
else{return (float)a/b;}
}
int checkZero(int x){
if(x==0){return 1;}
else{return 0;}
}
Example 6:
How to print prime numbers between 1 to 100
#include <stdio.h>
void printPrime();
int isPrime(int);
int main()
{
printPrime();
return 0;
}
void printPrime(){
int i;
for(i=1;i<=100;i++){
if(isPrime(i)){printf("%d\n",i);}
}
}
int isPrime(int num){
int i;
for(i=2;i<num;i++){
if(num%i==0){return 0;}
}
return 1;
}
How to print Armstrong numbers from 10 to 10000
153 -> 1^3 + 5^3 + 3^3 -> 1 + 125 + 27 -> 153 armstrong number
#include <stdio.h>
#include <math.h>
void printArmstrong();
int isArsmtrong(int);
int main()
{
Functions in c
printArmstrong();
return 0;
}
void printArmstrong(){
int i;
for(i=10;i<=10000;i++){
if(isArsmtrong(i)){printf("%d\t",i);}
}
}
int isArsmtrong(int num){
int rem,onum,count=0,anum=0;
onum = num;
while(num!=0){
count++;
num/=10;
}
num = onum;
while(num!=0){
rem = num%10;
anum += pow(rem,count);
num/=10;
}
if(anum==onum){return 1;}
else{return 0;}
}
Recursive function
A recursive function is a function which calls itself again and again so u wont see the real
usage of recursive function in c for ordinary cases we can implement using loops itself rather
than having recursive function and also it is slower in execution recursive function requires a
condition when to stop
#include <math.h>
int WithOutRecursion(int);
int WithRecursion(int);
int main()
{
int num;
printf("Input a number : ");
scanf("%d",&num);
printf("With out recursion factorial is %d\n",WithOutRecursion(num));
printf("With recursion factorial is %d\n",WithRecursion(num));
return 0;
}
int WithOutRecursion(int num){
int fact=1;
Arrays in C
while(num>=1){
num--;
}
return fact;
fact *= num;//5! = 5*4*3*2*1 ->120
}
int WithRecursion(int num){
if(num>=1){return num*WithRecursion(num1);}//5*WithRecursion(4)//5*4*WithRecursion(3)
else{return 1;}//20*3*WithRecursion(2)->60*2*WithRecursion(1)->120*1
}
Without using semicolon how to print 1 to 10
#include <stdio.h>
#include <math.h>
#define NUM 10//preprecessor directives
int main(int n)
{
if(n<=NUM&&printf("%d\t",n)&&main(n+1)){}
}
How to work with arrays in function
#include <stdio.h>
void display(int);
int main()
{
int arr[]={10,20,30,40,50};
int i;
for(i=0;i<5;i++){
display(arr[i]);
}
return 0;
}
void display(int num){
printf("%d\t",num);
}
Arrays by default are pass by reference
#include <stdio.h>
void display(int []);
void increment(int []);
float average(int []);
int main()
{
int arr[]={10,20,30,40,50};
increment(arr);
display(arr);
printf("\nAverage of elements of array is %.2f\n",average(arr));
114
Functions in c
return 0;
}
void display(int num[]){
int i;
for(i=0;i<5;i++){
printf("%d\t",i[num]);
}
}
void increment(int num[]){
int i;
for(i=0;i<5;i++){
num[i]+=5;
}
}
float average(int num[]){
int i,sum=0;
for(i=0;i<5;i++){
sum+=num[i];
}
return (float)sum/5;
}
How to find the standard deviation of an array of elements
#include <stdio.h>
#include <math.h>
void getData(float []);
float standardDeviation(float []);
int main()
{
float arr[6];
getData(arr);
printf("Standard Deviation = %.2f\n",standardDeviation(arr));
return 0;
}
void getData(float arr[]){
int i;
printf("Input array elements : ");
for(i=0;i<6;i++){
scanf("%f",&arr[i]);
}
}
float standardDeviation(float arr[]){
int i;
float sum=0,mean,sd=0;
for(i=0;i<6;i++){
sum+=arr[i];
Functions in c
}
mean = sum/6;
for(i=0;i<6;i++){
sd+=pow(arr[i]-mean,2);
}
return sqrt(sd/6);
}
How to work with two dimensional array
#include <stdio.h>
void getData(int [][4]);
void display(int [][4]);
int main()
{
int arr[3][4];
getData(arr);
display(arr);
return 0;
}
void getData(int arr[][4]){
int i,j;
printf("Input the array elements : ");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
scanf("%d",&arr[i][j]);
}
}
}
void display(int arr[][4]){
int i,j;
printf("\n-------DISPLAYING ARRAY ELEMENTS----------\n");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d\t",arr[i][j]);
}
printf("\n");
}
}
How to work with strings
#include <stdio.h>
void upperString(char []);
void lowerString(char []);
void subString(int,int,char [],char []);
int main()
{
char str[40],sstr[40];
Functions in c
int bi,ei;
printf("Input a string : ");
gets(str);
upperString(str);
printf("String in upper case is %s\n",str);
lowerString(str);
printf("String in lower case is %s\n",str);
printf("Input the beginning index and ending index to get a substtring : ");
scanf("%d%d",&bi,&ei);
subString(bi,ei,str,sstr);
printf("Substring from the string is %s\n",sstr);
return 0;
}
void upperString(char str[]){//a-97 A-65 -32
int i;
for(i=0;str[i]!='\0';i++){
if(str[i]>='a'&&str[i]<='z'){str[i]=str[i]-32;}
}
}
void lowerString(char str[]){//A-65 a-97 +32
int i;
for(i=0;str[i]!='\0';i++){
if(str[i]>='A'&&str[i]<='Z'){str[i]=str[i]+32;}
}
}
void subString(int bi,int ei,char str[],char sstr[]){
int i,j=0;
for(i=bi;i<=ei;i++,j++){
sstr[j]=str[i];
}
}
Storage classes in c
1) auto -> by default all local variables are auto so no need to use auto keyword
2) static -> 1) one time initialization only
2)reinitilaization not possible it maintains its state between different function
calls
3) extern
4) register
static keyword
#include <stdio.h>
void increment();
Storage class in c
int main()
{
int i;
for(i=0;i<5;i++){
increment();
}
return 0;
}
void increment(){
static int j=0;
printf("%d\t",j);
j++;//1 2 3 4
}
Extern
#include <stdio.h>
int a=10;
int main()
{
int a = 20;
{
extern int a;
printf("a = %d\n",a);
}
return 0;
}
#include <stdio.h>
extern int a;
Storage class in c
int main()
{
printf("a = %d\n",a);
return 0;
}
int a = 20;
register
register keyword stores the variable in cpu registers since we access the hardware it is faster in
execution and it is compiler dependent when we use a variable for more number of times we can
declare such a variable as register
we cannot use register variables for pointers
#include <stdio.h>
int main()
{
register int a = 20;
//int *ip=&a; not possible
printf("a = %d\n",a);
return 0;
}
How to use recursion and get five numbers as input and print its sum
#include <stdio.h>
int main()
{
static int i=1,sum=0;
int num;
printf("Input a number : ");
Storage class in c
scanf("%d",&num);
sum+=num;
if(++i<=5){main();}
printf("Sum = %d\n",sum);
return 0;
}
Structures in c
Strucuture in C
#include <stdio.h>
struct Employee{
char name[40];//40 bytes
int id;//4 bytes
float sal;//4 bytes
}e1={"arunkumar",145,5678.89f};//in order initialization
int main()
{
struct Employee e2={.id=146,.name="ravikrishna",.sal=6789.98f};//designated intialization
struct Employee e3;
printf("Input the name,id and salary of the employee : ");
scanf("%s%d%f",e3.name,&e3.id,&e3.sal);
printf("Size of strucutre employee is %d\n",sizeof(e1));
printf("Name of Employee : %s\n",e1.name);
printf("Id of Employee : %d\n",e1.id);
printf("Salary of Employee : %f\n",e1.sal);
Structures in c
printf("Name of Employee : %s\n",e2.name);
printf("Id of Employee : %d\n",e2.id);
printf("Salary of Employee : %f\n",e2.sal);
printf("Name of Employee : %s\n",e3.name);
printf("Id of Employee : %d\n",e3.id);
printf("Salary of Employee : %f\n",e3.sal);
return 0;
}
For structures assignment operator is possible ie we can initialize a structure to another directly
->typedef is a keyword which creates alias name for existing name
#include <stdio.h>
int main()
{
typedef int age;
age x;
printf("Input the age : ");
scanf("%d",&x);
printf("Age is %d\n",x);
return 0;
}
Instead of using fully qualified name for structure we can create an alias name using typedef and use
it
#include <stdio.h>
typedef struct Employee{
char name[40];
int id;
}Emp;
int main()
Structures in c
{
Emp e2,e3;
printf("Input the name,id of the employee : ");
scanf("%s%d",e2.name,&e2.id);
printf("Name of Employee : %s\n",e2.name);
printf("Id of Employee : %d\n",e2.id);
e3 = e2;
printf("Name of Employee : %s\n",e3.name);
printf("Id of Employee : %d\n",e3.id);
return 0;
}
How to pass structure as argument to a function
#include <stdio.h>
typedef struct Employee{
char name[40];
int id;
}Emp;
Emp getRecord();
void display(Emp);
int main()
{
Emp e3;
e3 = getRecord();
display(e3);
return 0;
}
Emp getRecord(){
Structures in c
Emp e2;
printf("Input the name,id of the employee : ");
scanf("%s%d",e2.name,&e2.id);
return e2;
}
void display(Emp e3){
printf("Name of Employee : %s\n",e3.name);
printf("Id of Employee : %d\n",e3.id);
}
Array of structure
#include <stdio.h>
typedef struct Employee{
char name[40];
int id;
}Emp;
Emp getRecord();
void display(Emp);
int main()
{
Emp e1[3];
int i;
for(i=0;i<3;i++){
e1[i] = getRecord();
}
for(i=0;i<3;i++){
display(e1[i]);
}
Structures in c
return 0;
}
Emp getRecord(){
Emp e2;
printf("Input the name,id of the employee : ");
scanf("%s%d",e2.name,&e2.id);
return e2;
}
void display(Emp e3){
printf("Name of Employee : %s\n",e3.name);
printf("Id of Employee : %d\n",e3.id);
}
#include <stdio.h>
struct{int a[2];int b}arr[]={{{1},2},{{2},3}};
int main()
{
printf("%d\t%d\t%d\n",arr[0].a[0],arr[0].a[1],arr[0].b);//1 0 2
printf("%d\t%d\t%d\n",arr[1].a[0],arr[1].a[1],arr[1].b);//2 0 3
return 0;
}
//we know when array is intialized to less than its size rest of the elements initialzied
//to zero
How to pass structure as reference
#include <stdio.h>
typedef struct Calculate{
int num1,num2;
}Cal;
Structures in c
void addStrucutre(Cal,Cal,Cal *);
int main()
{
Cal c1={110,130};
Cal c2={.num2=10,.num1=30};
Cal c3;
addStrucutre(c1,c2,&c3);
printf("After addition structure is num1 = %d and num2 = %d\n",c3.num1,c3.num2);
return 0;
}
void addStrucutre(Cal c1,Cal c2,Cal * c3){
c3->num1 = c1.num1+c2.num1;
c3->num2 = c1.num2+c2.num2;
}
We pass the distance as argument and we add two distances in feets and inches if inches is greater
than 12 then increment feet by 1 and decrement inches by 12
#include <stdio.h>
typedef struct Distance{
float feet;
float inches
}Dist;
void addStrucutre(Dist,Dist,Dist *);
int main()
{
Dist c1={7,24};
Dist c2,c3;
printf("Input Distance 2 in feet and inches : ");
scanf("%f%f",&c2.feet,&c2.inches);
Structures in c
addStrucutre(c1,c2,&c3);
printf("After addition structure is %.2f feet and %.2f inches\n",c3.feet,c3.inches);
return 0;
}
void addStrucutre(Dist c1,Dist c2,Dist *c3){
c3->feet = c1.feet+c2.feet;
c3->inches = c1.inches+c2.inches;
while(c3->inches>=12){
c3->feet++;
c3->inches-=12;
}
}
Nested structure
A structure within another structure
#include <stdio.h>
struct CollegeDetails{
char collName[50];
int collId;
};
struct StudentDetails{
char studName[60];
int studId;
struct CollegeDetails cd;
};
int main()
{
struct StudentDetails sd={"arunkumar",202023,"Naresh",1456};
Pointers in c
printf("College Name : %s\n",sd.cd.collName);
printf("College Id : %d\n",sd.cd.collId);
printf("Stundet Name : %s\n",sd.studName);
printf("Student Id : %d\n",sd.studId);
return 0;
}
Union
What are union?
It is also data type similar to structure but here which is the largest data type memory gets allocated
only for it.
#include <stdio.h>
union Sample{
int x;//4
double y;//8
float z;//4
}s1;
int main()
{
union Sample s2;
printf("Size of union sample is %d\n",sizeof(s1));
return 0;
}
#include <stdio.h>
#include <string.h>
union Employee{
char name[50];
int id;
float sal;
Pointers in c
}e1;
int main()
{
strcpy(e1.name,"arun kumar");
e1.id = 145;
e1.sal = 5678.98;
printf("Name : %s\n",e1.name);
printf("Id : %d\n",e1.id);
printf("Salary : %.3f\n",e1.sal);
return 0;
}
Enumerated data type
What is enum?
It is a named memory constant where each name will be assigned some integer value by default it
starts from zero if we think of reinitializing value any where within enum it is possible next names
value will be one increment of the previous value.
No two enums can have same name
Enums can be passed as argument to functions and can be returned since it is also a data type
In for loop and switch case we use enums ie with names
#include <stdio.h>
#include <string.h>
enum week{mon=1,tue,wed,thur,fri,sat,sun};
int main()
{
enum week day,i;
printf("Size of enum is %d\n",sizeof(day));
Pointers in c
printf("Input a day : ");
scanf("%d",&day);
switch(day){
case mon:
printf("Monday\n");
break;
case tue:
printf("Tuesday\n");
break;
case wed:
printf("Wednesday\n");
break;
case thur:
printf("Thursday\n");
break;
case fri:
printf("Friday\n");
break;
case sat:
printf("Saturday\n");
break;
case sun:
printf("Sunday\n");
break;
}
for(i=mon;i<=sun;i++){
printf("%d\t",i);
Pointers in c
}
return 0;
}
#include <stdio.h>
#include <string.h>
enum state{freezed,working};
typedef enum state est;
est func(est);
int main()
{
est e1=0;
(func(e1))?printf("Working\n"):printf("Freezed\n");
return 0;
}
est func(est s1){
return s1;
}
Pointers
What is pointer?
It is initialized to address of another variable or any address
Size of pointer is constant and it depends on machine so if it is 16 bit compiler size of pointer is 2
bytes if it is 32 bit compiler then size is 4 bytes
#include <stdio.h>
#include <string.h>
int main()
{
int a = 10;
Pointers in c
int *ip;
ip = &a;
printf("Value of a is %d\n",a);
printf("Value of a is %d\n",*ip);
printf("Value of a is %d\n",*(&a));
printf("Address of a is %p\n",ip);
printf("Address of a is %p\n",&a);
*ip+=10;
printf("Value of a is %d\n",a);
printf("Value of a is %d\n",*ip);
printf("Value of a is %d\n",*(&a));
return 0;
}
Types of pointers
1) wild or bad pointer -> when a pointer is declared and not initialized it is initialized to random
memory location such a pointer we call it as wild or bad pointer
2) NULL pointer -> to avoid wild/bad pointer we initialize pointer to null values such a pointer
we call it as null pointer
#include <stdio.h>
#include <string.h>
int main()
{
int *ip1,*ip2,*ip3=NULL,*ip4=NULL;
if(ip1==ip2){printf("EQUAL\n");}
else{printf("NOT EQUAL\n");}
if(ip3==ip4){printf("EQUAL\n");}
else{printf("NOT EQUAL\n");}
return 0;
}
3) Dangling pointer -> when a pointer is initialized to another variable and if the variable is no
longer is referenced but still pointer points to same memory location such a kind of pointer
we call it as dangling pointer
#include <stdio.h>
#include <string.h>
Pointers in c
int main()
{
int *ip;
{
int a = 10;
ip = &a;
printf("a = %d\n",a);
}
printf("a = %d\n",*ip);
return 0;
}
4) Void or generic pointer
#include <stdio.h>
#include <string.h>
int main()
{
int a = 10;
float b = 45.56;
char ch = 't';
double c = 678.897;
void *vp;//this vp is generic pointer it can be intialized to any of the data type
//and get its value by casting
vp = &a;
printf("Value of integer is %d\n",*(int *)vp);
vp = &b;
printf("Value of float is %.2f\n",*(float *)vp);
vp = &ch;
printf("Value of character is %c\n",*(char *)vp);
vp = &c;
printf("Value of double is %.2lf\n",*(double *)vp);
return 0;
}
Double pointer how to declare and initialize a double pointer
#include <stdio.h>
int main()
{
int a = 10;
int *ip1,**ip2;
ip1 = &a;
ip2 = &ip1;
printf("Value of a is %d\n",a);
printf("Value of a using pointer is %d\n",*ip1);
printf("Value of a using double pointer is %d\n",**ip2);
Pointers in c
printf("Address of a is %u\n",&a);
printf("Address of a is %u\n",ip1);
printf("Address of a is %u\n",*ip2);
**ip2+=5;
printf("Value of a is %d\n",a);
printf("Value of a using pointer is %d\n",*ip1);
printf("Value of a using double pointer is %d\n",**ip2);
return 0;
}
How to work with arrays with array
#include <stdio.h>
int main()
{
int arr[]={10,20,30,40,50};
int *ip1;
int (*ip2)[5];
ip1 = arr;//arr referes base address &arr
ip2 = arr;
printf("Size of array is %d\n",sizeof(arr));
printf("size of ip1 is %d\n",sizeof(ip1));
printf("Size of ip2 is %d\n",sizeof(ip2));
printf("Address of ip1 is %u\n",ip1);
printf("Address of ip2 is %u\n",ip2);
ip1++;
ip2++;
printf("Address of ip1 is %u\n",ip1);
printf("Address of ip2 is %u\n",ip2);
return 0;
}
Arrays with pointers
#include <stdio.h>
int main()
{
int arr[]={10,20,30,40,50};
int *ip1,*ip2,noea;
ip1 = arr;
ip2 = arr;
while(ip1<&arr[5]){
printf("%d\t",*ip1);
ip1++;
}
Pointers in c
noea = ip1 - ip2;
printf("\nsize of array is %d\n",noea);
printf("third element of array is %d\n",*(ip2+2));
while(ip1>=&arr[0]){
printf("%d\t",*ip1);
ip1--;
}
return 0;
}
Pointer to pointer
#include <stdio.h>
int main()
{
int arr[]={10,20,30,40,50};
int *ip1,**ip2;
ip1 = arr;
ip2 = &ip1;
printf("Second element in array is %d\n",++*++*ip2);
printf("arr[1] = %d\n",arr[1]);
return 0;
}
What is the relationship between pointer and array
address
&arr[0] -> (arr+0)
&arr[1] ->(arr+1)
Value
->arr[0]->*(arr+0)
Pointers in c
->arr[1] -> *(arr+1)
#include <stdio.h>
int main()
{
int arr[5];
int i;
printf("Input the array elements : ");
for(i=0;i<5;i++){
scanf("%d",(arr+i));
}
printf("-------DISPLAYING ARRAY ELEMENTS---------\n");
for(i=0;i<5;i++){
printf("%d\t",*(arr+i));
}
return 0;
}
Two dimensional array
#include <stdio.h>
int main()
{
int arr[3][4];
int i,j;
printf("Input the array elements : ");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
scanf("%d",(*(arr+i)+j));
}
}
printf("-------DISPLAYING ARRAY ELEMENTS---------\n");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d\t",*(*(arr+i)+j));
}
printf("\n");
}
return 0;
}
Function pointer
#include <stdio.h>
int sum(int,int);
int (*fp)(int,int);
int main()
{
Pointers in c
int a,b;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
fp = sum;
printf("Addition of two numbers using ordinary function is %d\n",sum(a,b));
printf("Addition of two numbers using function pointer is %d\n",fp(a,b));
return 0;
}
int sum(int a,int b){
return a+b;
}
Function returning a pointer
#include <stdio.h>
char* func(char []);
int main()
{
char str[]="Hello world";
char *x;
x=func(str);
printf("String is %s\n",x);
return 0;
}
char* func(char str[]){
*(str+5)='\0';
return str;
}
Working with strings in pointers
#include <stdio.h>
int main()
{
char *str1="Welcome to c tutorials";
char *str2;
int len;
str2 = str1;
while(*str1!='\0'){
printf("%c",*str1);
str1++;
}
len = str1-str2;
printf("Length of the string is %d\n",len);
return 0;
}
Fucntion returning integers
#include <stdio.h>
Pointers in c
int* func(int,int,int *);
int main()
{
int a,b,c,*d;
printf("Input the two values : ");
scanf("%d%d",&a,&b);
d=func(a,b,&c);
printf("d = %d\n",*d);
return 0;
}
int* func(int a,int b,int *c){
*c = a+b;
return c;
}
How to work with pointer
#include <stdio.h>
int main()
{
char str[]="Hello world";
char *ptr;
ptr=str;
printf("%c\n",*&*&*&*ptr);
return 0;
}
Dynamic memory allocation
Memory will be allocated at run time previous what ever we saw with arrays are static
allocation or compile time allocation where size of array is fixed at compile time itself
Here memory will be allocated at run time
For this we use header file called stdlib.h
And it contains function for memory allocation
-malloc()
Malloc allocates required amount of memory and returns starting address as
void pointer which can be casted to any of the data type and if memory
allocation fails it returns null and here default memory is initialized with
garbage value
-calloc()
Calloc allocates required amount of memory and returns starting address as
void pointer which can be casted to any of the data type and if allocation fails
returns null and in this case memory is initialized with zeros
-realloc()
Increases or decreases the size of already allocated memory
-free()
Once our work is over we will release the memory to operating system for
further use using free
Malloc takes one argument and it is initialized with garbage value
Dynamic memory allocation in c
Calloc takes two arguments and allocates memory in chunks and it is initialized with zeros
for structures and other data types we can go for calloc
Where this memory will be allocated
Dynamic memory allocation in c
Example 1: give noe as -1 and check for values of malloc and calloc
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *ptr,noe,i;
printf("Input the number of elements : ");
scanf("%d",&noe);
ptr=(int *)calloc(noe,sizeof(int));
if(ptr==NULL){
printf("Unable to allocate memory\n");
exit(0);
}
for(i=0;i<noe;i++){
printf("%d\t",*(ptr+i));
}
return 0;
}
Example 2: how to allocate memory dynamically and find the sum and average of elements
of an array
#include <stdio.h>
int main()
{
int *ptr,noe,i,sum=0;
float avg;
printf("Input the number of elements : ");
Dynamic memory allocation in c
scanf("%d",&noe);
ptr=(int *)malloc(noe*sizeof(int));
if(ptr==NULL){
printf("Unable to allocate memory\n");
exit(0);
}
printf("Input the %d elements of array : ",noe);
for(i=0;i<noe;i++){
scanf("%d",ptr+i);
}
printf("----------DISPLAYING ARRAY ELEMENTS------------\n");
for(i=0;i<noe;i++){
printf("%d\t",*(ptr+i));
}
for(i=0;i<noe;i++){
sum+=*(ptr+i);
}
avg = (float)sum/noe;
printf("Sum = %d\tAverage = %.2f\n",sum,avg);
return 0;
}
Example 3: Allocate memory dynamically and find the largest and smallest element in an
array
#include <stdio.h>
int main()
{
int *ptr,noe,i,le,se;
printf("Input the number of elements of an array : ");
scanf("%d",&noe);
ptr=(int *)calloc(noe,sizeof(int));
if(ptr==NULL){
printf("Unable to allocate memory\n");
exit(0);
}
printf("Input the %d elements of the array : ",noe);
for(i=0;i<noe;i++){
scanf("%d",ptr+i);
}
le=*(ptr+0);
se=*(ptr+0);
for(i=0;i<noe;i++){
if(*(ptr+i)>le){le=*(ptr+i);}
if(*(ptr+i)<se){se=*(ptr+i);}
}
Dynamic memory allocation in c
printf("Largest element = %d\nSmallest element = %d\n",le,se);
return 0;
}
Example 4: how to allocate memory for structured data
#include <stdio.h>
typedef struct Employee{
char name[50];
int id;
float sal;
}Emp;
int main()
{
Emp *e1;
int nor,i;
printf("Input the number of employee records : ");
scanf("%d",&nor);
e1=(Emp *)calloc(nor,sizeof(Emp));
if(e1==NULL){
printf("Unable to allocate memory\n");
exit(0);
}
for(i=0;i<nor;i++){
printf("Input Empoyee %d name,id and salary : ",(i+1));
scanf("%s%d%f",(e1+i)->name,&(e1+i)->id,&(e1+i)->sal);
}
printf("\n-----------DISPLAYING EMPLOYEE RECORD-----------\n");
for(i=0;i<nor;i++){
printf("Employee %d Record\n",(i+1));
printf("Employee Name : %s\n",(e1+i)->name);
printf("Employee Id : %d\n",(e1+i)->id);
printf("Employee Salary : %.2f\n",(e1+i)->sal);
}
return 0;
}
Exmaple 5: how to use realloc
#include <stdio.h>
int main()
{
int *ptr1,*ptr2,i;
ptr1 = (int *)malloc(2*sizeof(int));
*(ptr1+0)=10;
*(ptr1+1)=20;
ptr2 = (int *)realloc(ptr1,5*sizeof(int));
Dynamic memory allocation in c
*(ptr2+2)=30;
*(ptr2+3)=40;
*(ptr2+4)=50;
printf("----------DISPLAYING ARRAY ELEMENTS----------\n");
for(i=0;i<5;i++){
printf("%d\t",*(ptr2+i));
}
free(ptr2);
return 0;
}
Example 6: Linked List data structure
#include <stdio.h>
typedef struct Node{
int data;
struct Node *next;
}Nod;
void printNode(Nod *);
void push(Nod **head_ref,int new_data);
int main()
{
Nod *head,*first,*second,*third;
head = (Nod *)malloc(sizeof(Nod));
first = (Nod *)malloc(sizeof(Nod));
second = (Nod *)malloc(sizeof(Nod));
third = (Nod *)malloc(sizeof(Nod));
head->data=10;
first->data=20;
second->data=30;
third->data=40;
head->next=first;
first->next=second;
second->next=third;
third->next=NULL;
printNode(head);
push(&head,5);
printf("\n");
printNode(head);
return 0;
}
void printNode(Nod *head){
while(head!=NULL){
printf("%d\t",head->data);
head=head->next;
}
Dynamic memory allocation in c
}
void push(Nod **head_ref,int new_data){
Nod *new_node=(Nod *)malloc(sizeof(Nod));
new_node->data=new_data;
new_node->next = (*head_ref);
(*head_ref)=new_node;
}
Graphics programming
Here we use the header file graphics.h and use its built in function for graphics programming
What ever we did till now are text based programming so for graphics we have to change
the mode from text mode to graphics mode
Text mode screen will 80*25 where we use stdio.h
We change to graphics mode here we will have 640*480 pixels and we use graphics.h
How to change the mode there is a function called initgraph(&gd,&gm,”c:\\truboc3”)
0,0
0,480
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
void main()
{
int i,rad=10,gd=DETECT,gm;
clrscr();
initgraph(&gd,&gm,"c:\\turboc3\\bgi");
setcolor(11);
line(0,0,640,480);
640,0
Graphics in c
for(i=1;i<=15;i++){
setbkcolor(random(16));
setcolor(random(16));
circle(320,240,rad);
sound(random(1600));
delay(500);
rad+=5;
}
nosound();
setcolor(14);
line(640,0,0,480);
rectangle(400,400,200,200);
ellipse(320,240,0,45,100,50);
line(300,100,300,500);
line(300,500,400,400);
line(300,100,400,400);
getch();
}
Command line arguments
Example 1:
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int i;
float sum=0;
printf("%s\n",argv[0]);
Command line arguments in c
printf("Number of arguments is %d\n",argc); for(i=1;i<argc;i++){
sum+=atof(argv[i]);
}
printf("Sum = %.2f\n",sum);
return 0;
}
Example 2:
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int i,fact=1,num;
num = atoi(argv[1]);
while(num>=1){
fact *= num;
num--;
}
printf("Factorial is %d\n",fact);
return 0;
}
We are going to see assert.h header file it contains one function called assert() this will assert us
when ever the condition fails
#include <stdio.h>
#include <assert.h>
int main(int argc,char *argv[])
{
int num;
printf("Input a nummber : ");
Excercise in c
scanf("%d",&num);
assert(num>=0);
printf("Number is %d\n",num);
return 0;
}
File Handling
File is permanent storage on the disk even if u exit the application the data stored in file is
permanent and u can see the data so we go for file handling
There are two types of file 1) text file 2) binary file
For this no special header file we use stdio.h and its built in function
For working with file there is a special data structure which has to be used FILE
FILE *fp;
->fopen()
->fclose()
->getc()
->putc()
->fprintf()
-fscanf()
->fread()
->fwrite()
->rewind()
->ftell()
->fseek()
It opens the file in the mode given if file exits it will open if it does not exist it can
create the file
Closes the opened file and makes it ready for usage
It reads character by character from file
Writes character by character into file
Writes data into file in formatted manner
Reads data from file in formatted manner
Used for binary file to read it
Used for binary file to write into it
Takes the cursor to the beginning of the file
Tells the current position of the cursor
Places the cursor at desired position
->fopen(const char *filename,const char *mode)
->fp = fopen(“c:\\turboc3\\arun\\text.txt”,”w”);
What are the modes to work with file
->w
->r
->a
->w+
->r+
->a+
If file exits it open the file and erases the content and writes new content
If file does not exist it will create the file for us
It opens the file and returns the starting address here we cannot write any data
If it does not exist it will return null
It will open the file in append mode ie we can add contents to already exisiting
data
Arrays in C
->wb
->rb
->ab
->wb+
->rb+
->ab+
These are for binary files
There is macro called EOF which can be used to read the file this is a special character where we can
use ctrl+z to mark end of file
How to read and write character by character into the file
Example 1:
#include <stdio.h>
int main()
{
FILE *fp;
char ch;
fp = fopen("D:\\file\\test.txt","a");
if(fp==NULL){
printf("Unable to open the file\n");
exit(0);
}
printf("Enter some data....");
while((ch=getchar())!=EOF){
putc(ch,fp);
}
fclose(fp);
fp = fopen("D:\\file\\test.txt","r");
while((ch=getc(fp))!=EOF){
printf("%c",ch);
}
148
Excercise in c
fclose(fp);
return 0;
}
How to read and write formatted data
#include <stdio.h>
int main()
{
char name[50],name1[50];
int id,id1;
FILE *fp;
fp = fopen("D:\\file\\person.txt","w");
if(fp==NULL){
printf("Unable to open the file\n");
exit(0);
}
printf("Input the name and id of the person : ");
scanf("%s%d",name,&id);
fprintf(fp,"%s\t%d",name,id);
fclose(fp);
fp = fopen("D:\\file\\person.txt","r");
fscanf(fp,"%s\t%d",name1,&id1);
printf("Name of the person : %s\n",name1);
printf("Id of the person : %d\n",id1);
return 0;
}
How to read and write into binary file
#include<stdio.h>
Excercise in c
int main()
{
int arr[]={10,20,30,40,50};
int i,arr1[5];
FILE *fp;
fp = fopen("D:\\file\\sample.bin","wb");
if(fp==NULL){
printf("Unable to open the file\n");
exit(0);
}
fwrite(&arr,sizeof(arr),1,fp);
fclose(fp);
fp = fopen("D:\\file\\sample.bin","rb");
fread(&arr1,sizeof(arr1),1,fp);
for(i=0;i<5;i++){
printf("%d\t",i[arr1]);
}
return 0;
}
How to use rewind ftell and fseek
#include <stdio.h>
int main()
{
FILE *fp;
int size;
fp = fopen("D:\\file\\test.txt","r");
if(fp==NULL){
Excercise in c
printf("Unable to open the file\n");
exit(0);
}
fseek(fp,0,SEEK_END);
size = ftell(fp);
printf("Size of the file is %d bytes\n",size);
rewind(fp);
size = ftell(fp);
printf("Cursor is at %d position\n",size);
return 0;
}
How to write structured data into file
#include <stdio.h>
#include <string.h>
typedef struct Employee{
char name[50];
int id;
float sal;
}Emp;
void write();
void read();
void serachById();
Emp e1,e2;
FILE *fp;
int main()
{
int choice;
Excercise in c
do{
printf("\n\t1.Press 1 to write employee record");
printf("\n\t2.Press 2 to read employee record");
printf("\n\t3.Press 3 to search employee record by id");
printf("\n\t4.Press 4 to search employee record by name");
printf("\n\t5.Press 0 to exit the application");
printf("\nSelect your choice");
scanf("%d",&choice);
switch(choice){
case 1:
write();
break;
case 2:
read();
break;
case 3:
searchById();
break;
case 4:
searchByName();
break;
}
}while(choice!=0);
return 0;
}
void write()
{
Excercise in c
fp = fopen("D:\\file\\Employee.dat","ab");
if(fp==NULL){
printf("Unable to open the file\n");
exit(0);
}
printf("Input the employee name,id and sal : ");
scanf("%s%d%f",e1.name,&e1.id,&e1.sal);
fwrite(&e1,sizeof(e1),1,fp);
fclose(fp);
}
void read()
{
fp = fopen("D:\\file\\Employee.dat","rb");
while((fread(&e2,sizeof(e2),1,fp))==1){
printf("Name of the Employee : %s\n",e2.name);
printf("Id of the Employee : %d\n",e2.id);
printf("Salary of the Employee : %.2f\n",e2.sal);
}
}
void searchById()
{
int id;
printf("Input the employee id to display : ");
scanf("%d",&id);
fp = fopen("D:\\file\\Employee.dat","rb");
while((fread(&e2,sizeof(e2),1,fp))==1){
if(id==e2.id){
Excercise in c
printf("Name of the Employee : %s\n",e2.name);
printf("Id of the Employee : %d\n",e2.id);
printf("Salary of the Employee : %.2f\n",e2.sal);
}
}
}
void searchByName()
{
char name[50];
printf("Input the employee name to display : ");
scanf("%s",name);
fp = fopen("D:\\file\\Employee.dat","rb");
while((fread(&e2,sizeof(e2),1,fp))==1){
if(strcmp(name,e2.name)==0){
printf("Name of the Employee : %s\n",e2.name);
printf("Id of the Employee : %d\n",e2.id);
printf("Salary of the Employee : %.2f\n",e2.sal);
}
}
}
Now input is 12345 output should be 12354
Excercise in c
Application in c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define QUESTIONS 50
#define RESULT 10
int main()
{
FILE *fprq,*fpra,*fpw;
char str[QUESTIONS][RESULT];
int i,j=0;
char ch,ans,c,val;
static int res=0;
fprq = fopen("..//ques.txt","r");
if(fprq==NULL){
printf("Unable to open the file\n");
exit(0);
}
while((ch=getc(fprq))!= EOF){
//putc(ch,fpw);
printf("%c",ch);
if(ch=='@'){
ch=getc(fprq);
fflush(stdin);
printf("\nInput the answer : ");
scanf("%c",&ans);
if(ch==ans){res++;strcpy(str[j],"correct");j++;}
Excercise in c
else{strcpy(str[j],"wrong");j++;printf("Correct Answer : %c\n",ch);}
}
}
printf("Result is %d\n",res);
fflush(stdin);
printf("Do want valuation (y/n) : ");
scanf("%c",&val);
if(val=='y'){
for(i=0;i<=j;i++){
printf("%d) %s\n",i,str[i]);
}
}
fclose(fprq);
return 0;
}
Excercise in c
What is the output of this C code?
int main()
{
int i = -5;
int k = i %4;//-5%4->-1
printf("%d\n", k);
}

A. Compile time error

B. -1

C. 1

D. None
2.
What is the output of this C code?
int main()
{
int i = 5;
int l = i / -4; // 5/-4->-1
int k = i % -4; // 5%-4->1
printf("%d %d\n", l, k);
return 0;
}

A. Compile time error

B. -1 1

C. 1 -1

D. Run time error
3. What is the output of this C code?
int main()
{
int i = 7;
i = i / 4;//7/4->1
printf("%d\n", i);
return 0;
}

A. Run time error

B. 1
Excercise in c

C. 3

D. Compile time error
4. What is the value of x in this C code?
void main()
{
int x = 4 *5 / 2 + 9;//x = 20/2+9->10+9->19
}

A. 6.75

B. 1.85

C. 19

D. 3
5. What is the output of this C code?
void main()
{
int x = 4.3 % 2;
printf("Value of x is %d", x);
}

A. Value of x is 1.3

B. Value of x is 2

C. Value of x is 0.3

D. Compile time error
6.
What is the output of this C code?
void main()
{
int y = 3;
int x = 7 % 4 * 3 / 2;//3*3/2->9/2->4
printf("Value of x is %d", x);
}

A. Value of x is 1

B. Value of x is 2

C. Value of x is 4

D. Compile time error
Excercise in c
8. The precedence of arithmetic operators is (from highest to lowest)?

A. %, *, /, +, -

B. %, +, /, *, -

C. +, -, %, *, /

D. %, +, -, *, /
9. Which of the following is not an arithmetic operation?

A. a *= 20;

B. a /= 30;

C. a %= 40;

D. a != 50;
10. Which of the following data type will throw an error on modulus operation(%)?

A. char

B. short

C. float

D. int
11. What is the output of this C code?
int main()
{
int a = 20;
double b = 15.6;
int c;
c = a + b;
printf("%d", c);
}

A. 35(c)

B. 36

C. 35.6

D. 30
12. What is the output of this C code?
int main()
{
int a = 20, b = 15, c = 5;
int d;
d = a == (b + c);
Excercise in c
printf("%d", d);
}

A. 1

B. 40

C. 10

D. 5
13.
What is the output of this C code?
void main()
{
int x = 0;
if (x = 0)
printf("Its zero\n");
else
printf("Its not zero\n");
}

A. Its not zero(C)

B. Its zero

C. Run time error

D. None
14. What is the output of this C code?
void main()
{
int k = 8;
int x = 0 == 1 && k++;
printf("%d%d\n", x, k);
}

A. 0 9

B. 0 8(c)

C. 1 9

D. 1 8
15. What is the output of this C code?
void main()
{
Excercise in c
char a = 'a';
int x = (a % 10)++;
printf("%d\n", x);
}

A. 6

B. Junk value

C. Compile time error(c)

D. 7
16. What is the output of this C code?
void main()
{
1 < 2 ? return 1: return 2;
}

A. returns 1

B. returns 2

C. varies

D. Compile time error(c)
19. What is the output of this C code?
int main()
{
int x = 2, y = 2;
x /= x / y;
printf("%d\n", x);
return 0;
}

A. 2(c)

B. 1

C. 0.5

D. Undefined behaviour
21. What is the type of the below assignment expression if x is of type float, y is of type
int?
y = x + y;

A. Int(c)

B. float
Excercise in c

C. There is no type for an assignment expression

D. double
22. What is the value of the below assignment expression
(x = foo())!= 1 considering foo() returns 2

A. 2

B. true

C. 1(c)

D. 0
24. for c = 2, value of c after c <<= 1;

A. c = 1;

B. c = 2;

C. c = 3;

D. c = 4;(c)filed
25. What is the output of this C code?
int main()
{
int a = 1, b = 2;
a += b -= a;
printf("%d %d", a, b);
}

A. 1 1

B. 1 2

C. 2 1

D. 2 2
26.
What is the output of this C code?
int main()
{
int a = 4, n, i, result = 0;
scanf("%d", &n);
for (i = 0;i < n; i++)
result += a;
}
Excercise in c

A. Addition of a and n.

B. Subtraction of a and n.

C. Multiplication of a and n.(c)

D. Division of a and n.
27. Which of the following is an invalid assignment operator?

A. a %= 10;

B. a /= 10;

C. a |= 10;

D. None of the mentioned(c)
28. What is the output of this C code?
int main()
{
int c = 2 ^ 3;
printf("%d\n", c);
}

A. 1

B. 8

C. 9

D. 0
29. What is the output of this C code?
int main()
{
unsigned int a = 10;
a = ~a;
printf("%d\n", a);
}

A. -9

B. -10

C. -11

D. 10
31. What is the output of this C code?
int main()
{
Excercise in c
int a = 2;
if (a >> 1)
printf("%d\n", a);
}

A. 0

B. 1

C. 2

D. No output
32. Comment on the output of this C code?
int main()
{
int i, n, a = 4;
scanf("%d", &n);
for (i = 0; i < n; i++)
a = a * 2;
}

A. Logical Shift left

B. No output(c)

C. Arithmetic Shift right

D. bitwise exclusive OR
33. What is the output of this C code?
void main()
{
int x = 97;
int y = sizeof(x++);
printf("x is %d", x);
}

A. x is 97(c)

B. x is 98

C. x is 99

D. Run time error
34.
What is the output of this C code?
void main()
{
int x = 4, y, z;
Excercise in c
y = --x;//3
z = x--;//3 2
printf("%d%d%d", x, y, z);
}

A. 3 2 3

B. 2 2 3

C. 3 2 2

D. 2 3 3(c)
35. What is the output of this C code?
void main()
{
int x = 4;
int *p = &x;
int *k = p++;
int r = p - k;
printf("%d", r);
}

A. 4

B. 8

C. 1(c)

D. Run time error
36. What is the output of this C code?
void main()
{
int a = 5, b = -7, c = 0, d;
d = ++a && ++b || ++c;
printf("\n%d%d%d%d", a, b, c, d);
}

A. 6 -6 0 0

B. 6 -5 0 1

C. -6 -6 0 1

D. 6 -6 0 1@c
37. What is the output of this C code?
void main()
{
int a = -5;
Excercise in c
int k = (a++, ++a); -5,-3
printf("%d\n", k);
}

A. -3(c)

B. -5

C. 4

D. Undefined
38. What is the output of this C code?
int main()
{
int x = 2;
x = x << 1;
printf("%d\n", x);
}

A. 4(c)

B. 1

C. Depends on the compiler

D. Depends on the endianness of the machine
9. What is the output of this C code?
int main()
{
int x = -2;
x = x >> 1;
printf("%d\n", x);
}

A. 1

B. -1(c)

C. 2 ^ 31 – 1 considering int to be 4 bytes

D. Either (b) or (c)
40. What is the output of this C code?
int main()
{
if (~0 == 1)
printf("yes\n");
else
printf("no\n");
}
Excercise in c

A. Yes

B. No(c)

C. Compile time error

D. Undefined
41. What is the output of this C code?
int main()
{
int x = -2;
if (!0 == 1)
printf("yes\n");
else
printf("no\n");
}

A. Yes

B. No

C. Run time error

D. Undefined
42. What is the output of this C code?
int main()
{
int y = 0;
if (1 |(y = 1))
printf("y is %d\n", y);
else
printf("%d\n", y);
}

A. 1

B. 0

C. Run time error

D. Y is 1(c)
#include <stdio.h>
int main()
{
Excercise in c
int y = 1;
if(y & (y=2))printf("true %d\n",y);
else printf("false %d\n",y);
return 0;
}

A. true 2(c)

B. false 2

C. Either option a or option b

D. true 1
45. What is the output of this C code?
int main()
{
int a = 1, b = 1, c;
c = a++ + b;//1 + 1 =2 a=2
printf("%d, %d", a, b);
}

A. a = 1, b = 1

B. a = 2, b = 1

C. a = 1, b = 2

D. a = 2, b = 2
46. What is the output of this C code?
int main()
{
int a = 1, b = 1, d = 1;
printf("%d, %d, %d", ++a + ++a+a++, a++ + ++b, ++d + d++ + a++);
}

A. 15, 4, 5(c)

B. 9, 6, 9

C. 9, 3, 5

D. 6, 4, 6
48.
What is the output of this C code?
int main()
Excercise in c
{
int a = 10, b = 10;
if (a = 5)
b--;
printf("%d, %d", a, b--);
}

A. a = 10, b = 9

B. a = 10, b = 8

C. a = 5, b = 9(c)

D. a = 5, b = 8
49. What is the output of this C code?
int main()
{
int i = 0;
int j = i++ + i;
printf("%d\n", j);
}

A. 0

B. 1(c)

C. 2

D. Compile time error
50. What is the output of this C code?
int main()
{
int i = 2;
int j = ++i + i;
printf("%d\n", j);
}

A. 6(c)

B. 5

C. 4

D. Compile time error
Download