UNIT - 5
FUNCTIONS AND POINTERS
FUNCTION
• Functions is a sub-program that contains one
or more statements and it performs some task
when called.
Types
Functions
User-Defined
Functions
Pre-Defined
Functions
Pre-Defined Functions
• The pre-defined functions or library functions
are built-in functions.
• The user can use the functions, but cannot
modify the function.
• Example: sqrt()
User-Defined Functions
• The functions defined by the user for their
requirement are called user-defined functions.
• Whenever it is needed, The user can modify
the function.
• Example: sum(a,b)
Advantage of User-Defined Functions
• The length of the source program can be
reduced.
• It is easy to locate error.
• It avoid coding of repeated instructions.
Elements of User-Defined Function
• Function declaration
• Function definition
• Function call
Function
• Syntax
datatype function_name (parameters list)
{
local variable declaration;
…………………………
body of the function;
…………………………
return(expression);
}
How Function Works
• Once a function is called the control passes to
the called function.
• The working of calling function is temporarily
stopped.
• When the execution of called function is
completed then the control return back to the
calling function and execute the next
statement.
Parameters
• Actual Parameter
These are the parameters transferred
from the calling function to the called
function.
• Formal Parameter
These are the parameters which is used in
the called function.
return Statement
• The return statement may or may not send
some values to the calling function.
• Syntax:
return; (or)
return(expression);
Function Prototypes
• Function with no arguments and no return
values.
• Function with arguments and no return
values.
• Function with arguments and return values.
• Function with no arguments and with return
values.
Function with no arguments
and no return values
• Here no data transfer take place between the
calling function and the called function.
• These functions act independently, i.e. they
get input and display output in the same
block.
Example
#include <stdio.h>
#include<conio.h>
void main() //calling function
{
void add(void);
add();
}
void add() //called function
{
int a,b,c;
printf("nEnter two number:");
scanf("%d%d",&a,&b);
c=a+b;
printf("nSum is:%d",c);
}
Output
Enter two number:3
4
Sum is:7
Function with arguments
and no return values
• Here data transfer take place between the
calling function and the called function.
• It is a one way data communication, i.e. the
called program receives data from calling
program but it does not return any value to
the calling program.
Example#include <stdio.h>
#include<conio.h>
void main()
{
int a,b;
void add(int,int);
printf("nEnter two number:");
scanf("%d%d",&a,&b);
add(a,b);
}
void add(int x,int y) //function with arguments
{
int z;
z=x+y;
printf("nSum is:%d",z);
}
Output
Enter two number:2
4
Sum is:6
Example#include <stdio.h>
#include<conio.h>
void main()
{
int a,b;
void add(int a,int b);
printf("nEnter two number:");
scanf("%d%d",&a,&b);
add(a,b);
}
void add(int x,int y) //function with arguments
{
int z;
z=x+y;
printf("nSum is:%d",z);
}
Output
Enter two number:2
4
Sum is:6
Function with arguments
and return values
• Here data transfer take place between the
calling function and the called function as well
as between called function and calling
function .
• It is a two way data communication, i.e. the
called program receives data from calling
program and it return some value to the
calling program.
Example
#include <stdio.h>
#include<conio.h>
void main()
{
int a,b,c;
int add(int,int);
printf("nEnter two number:");
scanf("%d%d",&a,&b);
c=add(a,b);
printf("nSum is:%d",c);
}
int add(int x,int y)
{
int z;
z=x+y;
return(z);
}
Output
Enter two number:6
7
Sum is:13
Function with no arguments
and with return values
• Here data transfer take place between the
called function and the calling function.
• It is a one way data communication, i.e. the
called program does not receives data from
calling program but it return some value to
the calling program.
#include <stdio.h>
#include<conio.h>
void main()
{
int add(),d;
d=add();
printf("nSum is:%d",d);
}
int add() //function wit no argument
{ int a,b,c;
printf("nEnter two number:");
scanf("%d%d",&a,&b);
c=a+b;
return(c);
}
Output
Enter two number:5
8
Sum is:13
Parameter Passing Methods
• Call by value
• Call by reference
Call by value
• Actual argument passed to the formal
argument.
• Any changes to the formal argument does not
affect the actual argument.
Example
#include <stdio.h>
#include<conio.h>
void main()
{
int x,y,change(int,int);
printf("nEnter value of x:");
scanf("%d",&x);
printf("nEnter value of y:");
scanf("%d",&y);
change(x,y);
printf("nnValues in the Main()-->x=%d,y=%d",x,y);
}
int change(int a,int b)
{
int c;
c=a;
a=b;
b=c;
printf("nValues in the Fuction -->x=%d,y=%d",a,b);
}
Output
Enter value of x:5
Enter value of y:6
Values in the Fuction -->x=6,y=5
Values in the Main()-->x=5,y=6
Call by reference
• Instead of passing value, the address of the
argument will be passed.
• Any changes to the formal argument will
affect the actual argument.
Example
#include <stdio.h>
#include<conio.h>
void main()
{
int x,y,change(int*,int*);
printf("nEnter value of x:");
scanf("%d",&x);
printf("nEnter value of y:");
scanf("%d",&y);
change(&x,&y);
printf("nnValues in the Main()-->x=%d,y=%d",x,y);
}
int change(int *a,int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
printf("nValues in the Function -->x=%d,y=%d",*a,*b);
}
Output
Enter value of x:5
Enter value of y:6
Values in the Function -->x=6,y=5
Values in the Main()-->x=6,y=5
Recursion
• It is a process of calling the same function
itself again and again until some condition
is satisfied.
• Syntax:
func1()
{
………..
func1();
}
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int a;
int rec(int);
printf("nEnter the number:");
scanf("%d",&a);
printf("The factorial of %d! is %d",a,rec(a));
}
int rec(int x)
{
int f;
if(x==1)
return(1);
else
f=x*rec(x-1);
return(f);
}
Output:
Enter the number:5
The factorial of 5! is 120
Example: Working of 3!
Tower of Honoi
1
2
3
32
3
13
2
3
Tower of Honoi
1
2
3
32
3
13
2
3
Library Function
• It is pre-defined function.
• The library function provides functions like
mathematical, string manipulation etc,.
Example
sqrt(x):
It is used to find the square root of x
Example: sqrt(36) is 6
abs(x):
It is used to find the absolute value of x
Example: abs(-36) is 36
pow(x,y):
It is used to find the value of xy
Example: pow(5,2) is 25
ceil(x):
It is used to find the smallest integer greater
than or equal to x
Example: ceil(7.7) is 8
rand():
It is used to generate a random number.
sin(x):
It is used to find the sine value of x
Example: sin(30) is 0.5
cos(x):
It is used to find the cosine value of x
Example: cos(30) is 0.86
tan(x):
It is used to find the tan value of x
Example: tan(30) is 0.577
toascii(x):
It is used to find the ASCII value of x
Example: toascii(a) is 97
toupper(x):
It is used to convert lowercase character
to uppercase.
Example: toupper(‘a’) is A
toupper(97) is A
tolower(x):
It is used to convert uppercase character
to lowercase.
Example: tolower(‘A’) is a
Example:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<ctype.h>
void main()
{
int x,y=2;
printf("nEnter the number:");
scanf("%d",&x);
printf("nThe squareroot of %d is %f",x,sqrt(x));
printf("nThe value of %d power%dis%f ",x,y,pow(6,2));
printf("nThe ceiling of 6.7 is %f",ceil(6.7));
printf("nThe floor of 6.7 is %f",floor(6.7));
printf("nThe absolute value of -6 is %d",abs(-6));
printf("nThe value of sin 45 is %f",sin(45));
printf("nThe uppercase of 'a' is %c",toupper('a'));
printf("nThe uppercase of 97 is %c",toupper(97));
getch();
}
Output:
Enter the number:6
The squareroot of 6 is 2.449490
The value of 6 power 2 is 36.000000
The ceiling of 6.7 is 7.000000
The floor of 6.7 is 6.000000
The absolute value of -6 is 6
The value of sin 45 is 0.850904
The uppercase of 'a' is A
The uppercase of 97 is A
Array
• An Array is a collection of similar data
items, that are stored under a
common name.
• Types
–One-Dimensional array
–Two-Dimensional array
– Multi-Dimensional array
One-Dimensional array
Array Declaration
• Syntax:
data_type array_name[size];
Example: int x[3];
X[0]
X[1]
X[2]
x
Array initialization
• At compile time
• At run time
At compile time
• Syntax:
data_type array_name[size]={variables};
Example: int x[3]={5,3,7};
5
3
7
X[0]
X[1]
X[2]
x
At Run time
• Array can also initialize at the run time.
• Example:
while(i<10)
{
if(i<5)
sum[i]=0;
else
sum[i]=sum[i]+i;
}
• Example:
scanf(“%d%d”,&a[0],&a[1]);
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int x[2],i;
printf("nEnter the inputs:");
for(i=0;i<2;i++)
scanf("%d",&x[i]);
for(i=0;i<2;i++)
printf("nThe value in x[%d] is %d",i,x[i]);
getch();
}
Output
Enter the inputs:3
6
The value in x[0] is 3
The value in x[1] is 6
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int i;
char x[5]={'a','b','c','d','e'};
clrscr();
for(i=0;i<5;i++)
printf("nThe value in x[%d] is %c",i,x[i]);
getch();
}
Output
The value in x[0] is a
The value in x[1] is b
The value in x[2] is c
The value in x[3] is d
The value in x[4] is e
Two-Dimensional array
Array Declaration
• Syntax:
data_type array_name[row_size] [col_size];
Example: int x[3][2];
X[0][0]
X[1][0]
X[2][0]
Col 0 Col 1
row 0
row 1
row 2
X[0][1]
X[1][1]
X[2][1]
Array Initialization
• Syntax:
data_type array_name[row_size] [col_size];={variables};
Example: int x[2][2]={1,50,2,75};
int x[2][2]={ {1,50},
{2,75}
};
(or)
int x[ ][2]={ {1,50},
{2,75}
};
1 50
2 75
row 0
row 1
Col 0 Col 1
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j;
int x[2][2]={ {1,50},
{2,75}
};
clrscr();
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("nThe value in x[%d][%d] is %d",i,j,x[i][j]);
getch();
}
Output
The value in x[0][0] is 1
The value in x[0][1] is 50
The value in x[1][0] is 2
The value in x[1][1] is 75
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j;
int x[][2]={ {1,50},{2,75},{3,65}};
clrscr();
for(i=0;i<=2;i++)
for(j=0;j<2;j++)
printf("nThe value in x[%d][%d] is %d",i,j,x[i][j]);
getch();
}
Output
The value in x[0][0] is 1
The value in x[0][1] is 50
The value in x[1][0] is 2
The value in x[1][1] is 75
The value in x[2][0] is 3
The value in x[2][1] is 65
Matrix Addition
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,k,r1,r2,c1,c2;
int a[5][5],b[5][5],c[5][5];
clrscr();
step1:
printf("n Enter the size of matrix A:");
scanf("%d%d",&r1,&c1);
printf("n Enter the size of matrix B: ");
scanf("%d%d",&r2,&c2);
if((c1==c2)&&(r1==r2))
goto step2;
else
goto step1;
step2:
printf("n Enter the elements of matrix A n");
for(i=0;i<r1;i++)
{
for(j=0;j<c1;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("n Enter the elements of matrix B n");
for(i=0;i<r2;i++)
{
for(j=0;j<c2;j++)
{
scanf("t%d",&b[i][j]);
}
}
for(i=0;i<r1;i++)
{
for(j=0;j<c1;j++)
{
c[i][j]=0;
c[i][j]=c[i][j]+a[i][j]+b[i][j];
}
}
printf("n The resultant matrix after addition of A & B isn");
for(i=0;i<r1;i++)
{
for(j=0;j<c1;j++)
printf("%dt",c[i][j]);
printf("n");
}
getch();
}
Output
Enter the size of matrix A: 2
2
Enter the size of matrix B: 2
2
Enter the elements of matrix A
2
2
2
2
Enter the elements of matrix B
3
3
3
3
The resultant matrix after addition of A&B is
5 5
5 5
Matrix Multiplication
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,k,r1,r2,c1,c2;
int a[5][5],b[5][5],c[5][5];
clrscr();
step1:
printf("n Enter the size of matrix A n");
scanf("%d%d",&r1,&c1);
printf("n Enter the size of matrix B n");
scanf("%d%d",&r2,&c2);
if(c1==r2)
goto step2;
else
goto step1;
step2:
printf("n Enter the elements of matrix A n");
for(i=0;i<r1;i++)
{
for(j=0;j<c1;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("n Enter the elements of matrix B n");
for(i=0;i<r2;i++)
{
for(j=0;j<c2;j++)
{
scanf("t%d",&b[i][j]);
}
}
for(i=0;i<r1;i++)
{
for(j=0;j<c2;j++)
{
c[i][j]=0;
for(k=0;k<c1;k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
for(i=0;i<r1;i++)
{
for(j=0;j<c2;j++)
printf("%dt",c[i][j]);
printf("n");
}
getch();
}
Output
Enter the size of matrix A:2
2
Enter the size of matrix B:2
2
Enter the elements of matrix A
4
4
4
4
Enter the elements of matrix B
4
4
4
4
The resultant matrix is
32 32
32 32
Enter the size of matrix A:2
3
Enter the size of matrix B:3
2
Enter the elements of matrix A
1
2
3
4
5
6
Enter the elements of matrix B
2
4
6
8
2
4
20 32
50 80
Passing array to Function
• Here an array is transferred as parameter to a
function.
• void main() void fun(n,b[])
{ {
void fun(int,int); int x,b[5];
int a[5],n; …………..
…………… …………..
fun(n,a);
…………… }
}
Example
#include<stdio.h>
#include<conio.h>
void add(int,int b[]);
void main()
{
int a[5],i,n;
clrscr();
printf("n Enter the Number: ");
scanf("%d",&n);
printf("n Enter the Values: ");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
add(n,a);
}
void add(int x,int b[])
{
int sum=0,i;
for(i=0;i<x;i++)
sum=sum+b[i];
printf("nThe sum is: %d",sum);
}
Output
Enter the Number: 5
Enter the Values: 1
2
3
4
5
The sum is: 15
Array of Characters
• In array the characters are terminated by the
null (‘0’) character.
• Example: char a[]={a,b,c};
a b c 0
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int i=0;
char a[]="abcd";
clrscr();
while(a[i]!='0')
{
printf("t%c",a[i]);
i++;
}
}
Output
a b c d
Multi Dimensional Array
• Syntax
datatype array_name [size1][size2]….[size n]
datatype - type of the data.
array_name -name of the array.
size -size of the array.
Example:
int a[3][3][3];
Col 0 Col 1 Col 2
row 0
row 1
row 2
X[0][0]
X[1][0]
X[2][0]
X[0][1]
X[1][1]
X[2][1]
X[0][2]
X[1][2]
X[2][2]
String Functions
• strlen()
It is used to find the length of the string.
syntax:
strlen(string)
• strcpy()
It is used to copy one string to another.
syntax:
strcpy(string1,string2)
• strcat()
It is used to combine two strings.
syntax:
strcat(string1,string2)
• strcmp()
It is used to compare two strings.
syntax:
strcmp(string1,string2)
– Returns 0 if two strings are equal.
– Return value <0 if s1 is less than s2.
– Return value >0 if s1 is greater than s2.
• strrev()
It used to reverse a string.
syntax:
strrev(string)
• strlwr(), strupr()
It used to change the case of a string.
syntax:
strlwr(string)
strupr(string)
• strncpy()
It used to copy ‘n’ characters of one string to
another.
• strstr()
– It is used to determine the first occurrence of a
given string in another string.
• strncat()
– It Appends source string to destination string
upto specified length.
• strspn()
– It is used t find upto what length two strings are
identical.
• strncmp()
– It is used to compare ‘n’ character of two strings.
• strcmpi()
– It is used to compare two strings without regarding the case.
• strnicmp()
– It is used to compare first ‘n’ characters of two strings
without regarding the case.
• strchr()
– It is used to determine the first occurrence of a given
character in a string.
• strrchr()
– It is used to determine the last occurrence of a given
character in a string.
Example
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[]="college";
int b;
clrscr();
b=strlen(a);
printf("nThe length of the string is %d",b);
getch();
}
Output:
The length of the string is 7
Example
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[]="IT";
char b[]="Dept";
clrscr();
strcpy(a,b);
printf("nThe string is %s",a);
getch();
}
Output:
The string is Dept
Example
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[]="IT";
char b[]="Dept";
clrscr();
strcat(a,b);
printf("nThe string is %s",a);
getch();
}
Output:
The string is ITDept
Example
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[]="itdept";
char b[]="it";
int i;
clrscr();
i=strcmp(a,b);
if(i==0)
printf("nstrings are equal:%d",i);
else if(i<0)
printf("nstring1 is less than string2:%d",i);
else
printf("nstring1 is greater than string2:%d",i);
getch();
}
Output:
string1 is greater than string2:100
Example
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[]="itdept";
clrscr();
printf("nThe string is :%s",a);
strupr(a);
printf("nThe string after conversion to uppercase :%s",a);
strlwr(a);
printf("nThe string after conversion to lowercase :%s",a);
getch();
}
Output
The string is :itdept
The string after conversion to uppercase :ITDEPT
The string after conversion to lowercase :itdept
Example
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[]="Dept";
clrscr();
printf("nThe string is %s",strrev(a));
getch();
}
Output:
The string is tpeD
Example
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[]="itdept";
char b[15];
int i=0;
clrscr();
strncpy(b,a,2);
b[2]='0';
printf("nThe string is :%s",b);
getch();
}
Output:
The string is :it
String Palindrome
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
int len,i,j;
char str[15];
clrscr();
printf("n Enter the string:");
scanf("%s",str);
len=strlen(str);
for(i=0,j=len-1;i<len/2;i++,j--)
{
if(str[i]!=str[j])
{
printf("nThe String is not a palindrome");
getch();
exit(0);
}
}
printf("nThe String is a palindrome");
getch();
}
Output:
Enter the string:abcba
The String is a palindrome
Enumerated Data Type
• It is user defined data type.
• The user can create their own data type and
define some values to the variables.
• Syntax:
enum tag_name
{
enum1;
enum2;
……….
};
Example
#include <conio.h>
#include <stdio.h>
void main()
{
enum week {sun,mon,tue,wed,thr,fri,sat};
clrscr();
printf("nMonday=%d",mon);
printf("nSaturday=%d",sat);
getch();
}
Output:
Monday=1
Saturday=6
Example
#include <conio.h>
#include <stdio.h>
void main()
{
enum week {sun=10,mon,tue,wed,thr,fri,sat};
clrscr();
printf("nMonday=%d",mon);
printf("nsaturday=%d",sat);
getch();
}
Output:
Monday=11
saturday=16
Structure
• A Structure is a collection of different data
items, that are stored under a common name.
• Syntax:
struct structure_name
{
structure element1;
structure element2;
…………………….
};
• Example:
struct stud
{
int sno;
char name[10];
int mark;
};
struct stud s;
Example
#include<stdio.h>
#include<conio.h>
struct stud
{
int regno;
char name[10];
int m1;
int m2;
int m3;
};
struct stud s;
void main()
{
float tot,avg;
printf("nEnter the student regno,name,m1,m2,m3:");
scanf("%d%s%d%d
%d",&s.regno,&s.name,&s.m1,&s.m2,&s.m3);
tot=s.m1+s.m2+s.m3;
avg=tot/3;
printf("nThe student Details are:");
printf("n%dt%st%ft%f",s.regno,s.name,tot,avg);
}
Output
Enter the student regno,name,m1,m2,m3:100
aaa
87
98
78
The student Details are:
100 aaa 263.000000 87.666664
Structure assignment
• It is possible to assign one structure
information to another structure of same type
using simple assignment statement.
Example
#include<stdio.h>
#include<conio.h>
void main()
{
struct
{
int a;
}x,y;
clrscr();
x.a=10;
y=x;
printf("The value of y.a is%d",y.a);
getch();
}
Output
The value of y.a is10
Example
#include<stdio.h>
#include<conio.h>
struct stud
{
int regno;
char name[10],grade;
int m1,m2,m3;
float avg,tot;
} s[10];
void main()
{
int i,n;
printf("nEnter the no.of students:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("nEnter the student regno,name,m1,m2,m3:");
scanf("%d%s%d%d%d",&s[i].regno,&s[i].name,&s[i].m1,
&s[i].m2,&s[i].m3);
s[i].tot=s[i].m1+s[i].m2+s[i].m3;
s[i].avg=s[i].tot/3;
if(s[i].m1<35||s[i].m2<35||s[i].m3<35)
s[i].grade='f';
else
{
if(s[i].avg>=75)
s[i].grade='d';
else if(s[i].avg>=60)
s[i].grade='A';
else if(s[i].avg>=50)
s[i].grade='B';
else if(s[i].avg>=35)
s[i].grade='C';
}
}
printf("nSTUDENT MARK LISTn");
printf("nREGNOtNAMEtTOTALtAvgtGRADE");
for(i=0;i<n;i++)
printf("n%dt%st%ft%ft
%c",s[i].regno,s[i].name,s[i].tot,s[i].avg,s[i].grade);
getch();
}
Enter the no.of students:2
Enter the student regno,name,m1,m2,m3:101
aaa
89
98
78
Enter the student regno,name,m1,m2,m3:102
bbb
59
68
76
STUDENT MARK LIST
REGNO NAME TOTAL Avg GRADE
101 aaa 265.000000 88.333336 d
102 bbb 203.000000 67.666664 A
Union
• An Union is a collection of different data items,
that are stored under a common name. Here
same memory is shared by its members.
• Syntax:
union union _name
{
union element1;
union element2;
…………………
};
• Example:
union result
{
int mark;
float avg;
char grade;
};
union result s;
Example
#include<stdio.h>
#include<conio.h>
union stud
{
int a;
char b[2];
};
void main()
{
union stud c;
c.a=256;
printf("nc.a value is%d",c.a);
printf("nc.b[0] value is%d",c.b[0]);
printf("nc.b[1] value is%d",c.b[1]);
}
Output:
c.a value is256
c.b[0] value is0
c.b[1] value is1
• 256 = 00000010 00000000
Higher bit Lower bit
00000000 00000010
c.a - 2 Byte
c.b[0] 1 Byte c.b[0] 1 Byte
c.b[0] c.b[1]
Example
#include<stdio.h>
#include<conio.h>
struct student
{
int a;
int b;
char c;
}s;
union student1
{
int a;
int b;
char c;
}s1;
void main()
{
printf("nThe size of struct is %d",sizeof(s));
printf("nThe size of union is %d",sizeof(s1));
getch();
}
Output:
The size of struct is 5
The size of union is 2
Structure & Union
int int char
2 Byte 2Byte 1Byte
2 Byte
structure
int ,int, char
union
Preprocessor
• It is a program that processes the source
program before compilation.
• It operates under the following directives
–File Inclusion
–Macro substitution
–Conditional inclusion
File Inclusion
• It is used to include some file that contains
functions or some definitions.
• Syntax:
#include<filename> (or)
#include“filename”
• Eg: #include<stdio.h>
#include “ex.c”
Example
#include<stdio.h>
#include<conio.h>
#include "addition.txt"
void main()
{
int a,b;
printf("nEnter the numbers:");
scanf("%d%d",&a,&b);
printf("The Value is %d",add(a,b));
getch();
}
addition.txt
int add(int a,int b)
{
return(a+b);
}
Output
Enter the numbers:7
4
The Value is 11
Example
#include<stdio.h>
#include<conio.h>
#include "fact.c"
void main()
{
int a;
printf("nEnter the number:");
scanf("%d",&a);
printf("The factorial of %d! is %d",a,rec(a));
getch();
}
fact.c
int rec(int x)
{
int f;
if(x==1)
return(1);
else
f=x*rec(x-1);
return(f);
}
Output
Enter the number:5
The factorial of 5! is 120
Macro Substitution
• It is used to define and use integer, string, or
identifier in the source program
• The three forms of macros are
–Simple Macro
–Argumented Macro
–Nested Macro
Simple Macro
• It is used to define some constants
• Syntax
# define identifier string/integer
• Eg:
#define pi 3.14
#define CITY “chennai”
Example
#include<stdio.h>
#include<conio.h>
#define pi 3.14
#define CITY "chennai"
void main()
{
printf("The Value is %f",2*pi);
printf("nThe Value CITY is %s",CITY);
getch();
}
Output:
The Value is 6.280000
The Value CITY is chennai
Argumented Macro
• It is used to define some complex forms in the
source program.
• Syntax:
#define identifier (v1,v2,….) string/integer
• Eg:
#define cube(n) (n*n*n)
Example
#include<stdio.h>
#include<conio.h>
#define cube(n) (n*n*n)
void main()
{
printf("The Value of 3 cube is %d",cube(3));
getch();
}
Output:
The Value of 3 cube is 27
Nested Macro
• Here one macro is used by another macro.
• Eg:
#define a 3
#define sq a*a
Example
#include<stdio.h>
#include<conio.h>
#define a 3
#define sq a*a
void main()
{
printf("The Value is %d",sq);
getch();
}
Output:
The Value is 9
Conditional Inclusion
• It is used to include some conditional
statements.
Example
#include<stdio.h>
#include<conio.h>
#define a 3
#ifdef a
#define c a+5
#endif
void main()
{
printf("nThe value C is %d",c);
getch();
}
Output:
The value C is 8
Pointers
• Pointer is a variable that contains the memory
address of another variable.
Example:
x=5
x Variable
1002 Address
5 Value
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int x=5;
printf("n The Address of x = %u",&x);
printf("n The Value of x = %d",x);
}
Output
The Address of x = 8714
The Value of x = 5
Pointer Declaration
• Syntax
data-type *pointer-name;
data-type - Type of the data to
which the pointer points.
pointer-name - Name of the pointer
• Example: int *a;
Accessing Variable through Pointer
• If a pointer is declared and assigned to a
variable, then the variable can be accessed
through the pointer.
• Example:
int *a;
x=5;
a=&x;
• Example
#include<stdio.h>
#include<conio.h>
void main()
{
int x=5;
int *a;
a=&x;
printf("n The Value of x = %d",x);
printf("n The Address of x = %u",&x);
printf("n The Value of a = %d",a);
printf("n The Value of x = %d",*a);
}
Output
The Value of x = 5
The Address of x = 8758
The Value of a = 8758
The Value of x = 5
Example:
#include<stdio.h>
#include<conio.h>
void main()
{
int y=10;
int *a;
a=&y;
printf("n The Value of y = %d",y);
printf("n The Address of y = %u",&y);
printf("n The Value of a = %d",a);
printf("n The Address of a = %u",&a);
}
5001 10
8000
a y
5001
Variable
Value
Address
Output
The Value of y = 10
The Address of y = 5001
The Value of a = 5001
The Address of a = 8000
Null Pointer
• A pointer is said to be null pointer if zero is
assigned to the pointer.
• Example
int *a,*b;
a=b=0;
Pointer to Pointer
• Here one pointer stores the address of
another pointer variable.
• Example:
int x=10,*a,**b;
a=&x;
b=&a;
5001 10
8000
a x
5001
Variable
Value
Address
8000
9000
b
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int a=10;
int *b,**c;
b=&a;
c=&b;
printf("n The Value of a = %d",a);
printf("n The Address of a = %u",&a);
printf("n The Value of b = %d",b);
printf("n The Address of b = %u",&b);
printf("n The Value of c = %d",c);
printf("n The Address of c = %u",&c);
}
Output
The Value of a = 10
The Address of a = 5001
The Value of b = 5001
The Address of b = 8000
The Value of c = 8000
The Address of c = 9000
Pointers and Functions
• Call by Value
• Call by Reference
Call by value
• Actual argument passed to the formal
argument.
• Any changes to the formal argument does not
affect the actual argument.
Example
#include <stdio.h>
#include<conio.h>
void main()
{
int x,y,swap(int,int);
printf("nEnter value of x:");
scanf("%d",&x);
printf("nEnter value of y:");
scanf("%d",&y);
change(x,y);
printf("nnValues in the Main()-->x=%d,y=%d",x,y);
}
int swap(int a,int b)
{
int c;
c=a;
a=b;
b=c;
printf("nValues in the Function -->x=%d,y=%d",a,b);
}
Output
Enter value of x:5
Enter value of y:6
Values in the Function -->x=6,y=5
Values in the Main()-->x=5,y=6
Call by reference
• Instead of passing value, the address of the
argument will be passed.
• Any changes to the formal argument will
affect the actual argument.
Example
#include <stdio.h>
#include<conio.h>
void main()
{
int x,y,change(int*,int*);
printf("nEnter value of x:");
scanf("%d",&x);
printf("nEnter value of y:");
scanf("%d",&y);
change(&x,&y);
printf("nnValues in the Main()-->x=%d,y=%d",x,y);
}
int change(int *a,int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
printf("nValues in the Function -->x=%d,y=%d",*a,*b);
}
Output
Enter value of x:5
Enter value of y:6
Values in the Function -->x=6,y=5
Values in the Main()-->x=6,y=5
Pointer to Array
• The elements of the array can also be
accessed through a pointer.
• Example
int a[3]={2,3,7};
int *b;
b=a;
Example:
#include<stdio.h>
#include<conio.h>
void main()
{
int a[3]={2,3,7};
int *b;
b=a;
printf("n The Value of a[0] = %d",a[0]);
printf("n The Address of a[0] = %u",&a[0]);
printf("n The Value of b = %d",b);
}
8744 2
9000
b a[0]
8744
Variable
Value
Address
Output
The Value of a[0] = 2
The Address of a[0] = 8744
The Value of b = 8744
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int a[5]={2,3,7,9,10};
int i;
for(i=0;i<5;i++)
{
printf("n The Value of a[%d] = %d",i,a[i]);
printf("n The Address of a[%d] = %u",i,&a[i]);
}
}
2 3 7 9 10
a[0] a[1] a[2] a[3] a[4]
8724 8726 8728 8730 8732
Array
Value
Address
Output
The Value of a[0] = 2
The Address of a[0] = 8724
The Value of a[1] = 3
The Address of a[1] = 8726
The Value of a[2] = 7
The Address of a[2] = 8728
The Value of a[3] = 9
The Address of a[3] = 8730
The Value of a[4] = 10
The Address of a[4] = 8732
Example
#include<stdio.h>
#include<conio.h>
void main()
{
int a[5]={1,2,3,4,5};
int i,sum=0;
int *b;
b=a;
for(i=0;i<5;i++)
{
sum=sum + *b;
b++; //b=b+1
}
printf("n The Sum is %d",sum);
}
Output
The Sum is 15
Pointer and Structures
• Syntax:
struct structure_name
{
structure element1;
structure element2;
…………………….
}variable,*ptr;
• Example:
struct stud
{
int sno;
char name[10];
int mark;
};
struct stud *s;
Example
#include<stdio.h>
#include<conio.h>
struct stud
{
int regno;
char name[10];
int m1;
int m2;
int m3;
};
struct stud s;
struct stud *t;
void main()
{
float tot,avg;
t=&s;
printf("nEnter the student regno,name,m1,m2,m3:");
scanf("%d%s%d%d
%d",&s.regno,&s.name,&s.m1,&s.m2,&s.m3);
tot=s.m1+s.m2+s.m3;
avg=tot/3;
printf("nThe student Details are:");
printf("n%dt%st%ft%f",s.regno,s.name,tot,avg);
printf("n%dt%st%ft%f",t->regno,t->name,tot,avg);
}
Output
Enter the student regno,name,m1,m2,m3:1
aaa
76
89
76
The student Details are:
1 aaa 241.000000 80.333336
1 aaa 241.000000 80.333336
Command Line Argument
• It allows the user to pass some information to
the program while running the program.
Example
#include<stdio.h>
#include<conio.h>
void main(int argc,char argv[])
{
printf("n The Argument is %s",argv[0]);
getch();
}
Output
C:tc>a
The Argument is C:TCA.EXE
String Palindrome
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char s1[15],s2[15];
printf("nenter the string:");
scanf("%s",s1);
strcpy(s2,s1);
strrev(s1);
if(strcmp(s1,s2)==0)
printf("n The string is palindrome");
else
printf("n The string is not a palindrome");
getch();
}
Output:
enter the string: aba
The string is palindrome
Developing a ‘C’ Program
• The Program development life cycle is
considered as a sequence of events by the
programmer to develop the program.
• The Program development life cycle contains
the following phase
– Program Design
– Program Coding
– Program Testing
Program Design
• Analysing the problem
• Algorithm development
• Selection of conditional and control structure
etc,.
Program Coding
• Documentation
• Statement construction
• Input and output format etc,.
Program Testing
• It is the process of executing the program with
sample data
Example#include<stdio.h>
#include<conio.h>
#define p 3.14
void main()
{
#ifdef p
printf("nPentium");
#else
printf("n Celeron");
#endif
printf("nthe value is %f",2*p);
getch();
}
Output:
Pentium
the value is 6.280000
Example
#include<stdio.h>
#include<conio.h>
struct stud
{
int regno;
char name[10];
int m1;
int m2;
int m3;
};
struct stud s;
void main()
{
float tot,avg;
int i;
printf("nEnter the student regno,name,m1,m2,m3:");
for(i=0;i<2;i++)
{
scanf("%d%s%d%d
%d",&s.regno,&s.name,&s.m1,&s.m2,&s.m3);
tot=s.m1+s.m2+s.m3;
avg=tot/3;
}
for(i=0;i<2;i++)
printf("%dt%st%ft%f",s.regno,s.name,tot,avg);
}
Enter the student regno,name,m1,m2,m3:100
aaa
78
67
98
101
bbb
80
90
75
101bbb 245.000000 81.666664
101bbb 245.000000 81.666664
#include <string.h>
#include <stdio.h>
int main(void)
{
char string[15];
char *ptr, c = 'r';
strcpy(string, "This is a string");
ptr = strchr(string, c);
if (ptr)
printf("The character %c is at position: %dn", c, ptr-
string);
else
printf("The character was not foundn");
return 0;
}
Example#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[]="Dept";
int i=0;
clrscr();
while(a[i]!='0')
{
printf("nThe character is %c",a[i]);
i++;
}
getch();
}
The character is D
The character is e
The character is p
The character is t
Structure
Lab Exercise
C Programs
Function-with arg & return
#include <stdio.h>
#include<conio.h>
void main()
{
int a,b,c;
int add(int,int);
printf("nEnter two number:");
scanf("%d%d",&a,&b);
c=add(a,b);
printf("nSum is:%d",c);
}
int add(int x,int y)
{
int z;
z=x+y;
return(z);
}
Output
Enter two number:6
7
Sum is:13
Example
#include <stdio.h>
#include<conio.h>
void main()
{
int x,y,change(int*,int*);
printf("nEnter value of x:");
scanf("%d",&x);
printf("nEnter value of y:");
scanf("%d",&y);
change(&x,&y);
printf("nnValues in the Main()-->x=%d,y=%d",x,y);
}
int change(int *a,int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
printf("nValues in the Function -->x=%d,y=%d",*a,*b);
}
Output
Enter value of x:5
Enter value of y:6
Values in the Function -->x=6,y=5
Values in the Main()-->x=6,y=5
Factorial-Recursive Fn
#include<stdio.h>
#include<conio.h>
void main()
{
int a;
int rec(int);
printf("nEnter the number:");
scanf("%d",&a);
printf("The factorial of %d! is %d",a,rec(a));
}
int rec(int x)
{
int f;
if(x==1)
return(1);
else
f=x*rec(x-1);
return(f);
}
Output:
Enter the number:5
The factorial of 5! is 120
Example: Working of 3!
Matrix Multiplication
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,k,r1,r2,c1,c2;
int a[5][5],b[5][5],c[5][5];
clrscr();
step1:
printf("n Enter the size of matrix A n");
scanf("%d%d",&r1,&c1);
printf("n Enter the size of matrix B n");
scanf("%d%d",&r2,&c2);
if(c1==r2)
goto step2;
else
goto step1;
step2:
printf("n Enter the elements of matrix A n");
for(i=0;i<r1;i++)
{
for(j=0;j<c1;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("n Enter the elements of matrix B n");
for(i=0;i<r2;i++)
{
for(j=0;j<c2;j++)
{
scanf("t%d",&b[i][j]);
}
}
for(i=0;i<r1;i++)
{
for(j=0;j<c2;j++)
{
c[i][j]=0;
for(k=0;k<c1;k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
for(i=0;i<r1;i++)
{
for(j=0;j<c2;j++)
printf("%dt",c[i][j]);
printf("n");
}
getch();
}
Output
Enter the size of matrix A:2
2
Enter the size of matrix B:2
2
Enter the elements of matrix A
4
4
4
4
Enter the elements of matrix B
4
4
4
4
The resultant matrix is
32 32
32 32
Lab Ex:9,Finding area, circumference
of circle
#include<stdio.h>
#include <conio.h>
void main ( )
{
int r;
float area,c;
clrscr( );
printf(" nEnter the value of r:");
scanf("%d",&r);
area=3.14*r*r;
c=2*3.14*r;
printf(" nThe area is :%f",area);
printf(" nThe circumference is :%f",c);
getch( );
}
Output:
Enter the value of r:7
The area is :153.860001
The circumference is :43.959999
Lab Ex:9,Conversion of Celsius to
Fahrenheit
#include<stdio.h>
#include <conio.h>
void main ( )
{
float c,f;
clrscr( );
printf(" nEnter the value of c:");
scanf("%f",&c);
f=(c*1.8)+32;
printf(" nThe Fahrenheit is :%f",f);
getch( );
}
Enter the value of c:35
The fahrenheit is :95.000000
Lab Ex:11,Arithmetic operations
#include<stdio.h>
#include<conio.h>
void main()
{
int a,b,c,d,e,f;
clrscr();
printf("nEnter the values of A and B:");
scanf("%d%d",&a,&b);
c=a+b;
d=a-b;
e=a*b;
f=a/b;
printf("nThe values of A + B:%d",c);
printf("nThe values of A - B:%d",d);
printf("nThe values of A * B:%d",e);
printf("nThe values of A / B:%d",f);
getch();
}
Output
Enter the values of A and B:6
3
The values of A + B:9
The values of A - B:3
The values of A * B:18
The values of A / B:2
Lab.Ex13,Largest among 3 nos
#include<stdio.h>
#include <conio.h>
void main ( )
{
int a,b,c;
clrscr( );
printf(" nEnter the value of a:");
scanf("%d",&a);
printf(" nEnter the value of b:");
scanf("%d",&b);
printf(" nEnter the value of c:");
scanf("%d",&c);
if((a>b)&&(a>c))
{
printf(" nA is Big");
}
else
{
if(b>c)
printf(" nB is Big");
else
printf(" nC is Big");
}
getch( );
}
Output
Enter the value of a:5
Enter the value of b:7
Enter the value of c:3
B is Big
String Palindrome
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
int len,i,j;
char str[15];
clrscr();
printf("n Enter the string:");
scanf("%s",str);
len=strlen(str);
for(i=0,j=len-1;i<len/2;i++,j--)
{
if(str[i]!=str[j])
{
printf("nThe String is not a palindrome");
getch();
exit(0);
}
}
printf("nThe String is a palindrome");
getch();
}
Output:
Enter the string:abcba
The String is a palindrome
Lab.Ex:14,Quadratic Equation
#include<stdio.h>
#include <conio.h>
#include<math.h>
void main ( )
{
int a,b,c,d,r1,r2;
clrscr( );
printf(" nEnter the value of a:");
scanf("%d",&a);
printf(" nEnter the value of b:");
scanf("%d",&b);
printf(" nEnter the value of c:");
scanf("%d",&c);
d=b*b-4*a*c;
if(d>=0)
{
r1=(-b+sqrt(d))/(2*a);
r2=(-b-sqrt(d))/(2*a);
printf(" nThe roots are %d,%d",r1,r2);
}
else
{
printf(" nThe roots are imaginary");
}
getch( );
}
Output
Enter the value of a:1
Enter the value of b:4
Enter the value of c:4
The roots are -2,-2

Fucntions & Pointers in C