Module 3 C Programming Notes-1
Module 3 C Programming Notes-1
MODULAR PROGRAMMING
Modular programming is the process of subdividing a computer program into separate
sub-programs. It is a software design technique that emphasizes separating the functionality
of a program into independent, interchangeable modules, such that each contains everything
necessary to execute only one aspect of the desired functionality.
Advantages
Ease of Use :This approach allows simplicity, as rather than focusing on the entire
thousands and millions of lines code in one go, we can access it in the form of
modules.
Programming errors are easy to detect: Minimizes the risks of ending up with
programming errors and also makes it easier to spot errors, if any.
Allows re-use of codes: A program module is capable of being re-used in a program
which minimizes the development of redundant codes
Improves manageability: Having a program broken into smaller sub-programs
allows for easier management.
FUNCTION
A function is a group of statements that together perform a task. Every C program has
at least one function, which is main(), and can have additional functions.
Types of Functions
x: 10 y: 20
x: a:
10 10
After the swap call, formal parameters get swapped but actual parameters remains the same.
x: a:
10 20
y: 20 b: 10
#include<stdio.h>
#include<math.h> int
checkPrime(int n)
{
int flag=0,i;
{
if(n%i == 0)
{
flag =1;
break;
}
}
if(flag == 0)
return 1;
else
}
return 0;
void main()
{
int n,i;
printf("Enter the range:");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(checkPrime(i) == 1)
printf("%d\t",i);
}
}
OUTPUT
Enter the range:25
2 3 5 7 11 13 17 19 23
RECURSIVE FUNCTION
In some problems, it may be natural to define the problem in terms of the problem itself.
Recursion is useful for problems that can be represented by a simpler version of the same
problem.
Example: the factorial function
6! = 6 * 5 * 4 * 3 * 2 * 1
We could write:
6! = 6 * 5!
A function that calls itself is known as a recursive function. And, this technique is known
as recursion. While using recursion, programmers need to be careful to define a termination
condition from the function; otherwise it will go into an infinite loop. Termination condition
will be the base case where the problem can be solved without use loops instead as recursion
is usually much slower.
Write a program to find factorial of a number using recursive function
#include<stdio.h>
int fact(int n)
{
if( n == 0)
return 1;
else
}
return n*fact(n-1);
void main()
{
int n;
printf("Enter the number:");
scanf("%d",&n);
printf("Factorial=%d",fact(n));
}
OUTPUT
Enter the number:5
Factorial=120
Write a program to find nCr and nPr.
#include<stdio.h>
int fact(int n)
{
if( n == 0)
return 1;
else
}
return n*fact(n-1);
void main()
{
int n,r;
float C,P;
printf("Enter the numbers:");
scanf("%d%d",&n,&r);
P = (float) fact(n) / fact(n-r);
C = (float)fact(n) / (fact(r) * fact(n-r));
printf("nCr=%f\n",C);
printf("nPr=%f",P);
}
Enter the numbers:5 3
nCr=10.000000
nPr=60.000000
Write a program to find the sum of series 1 + 1/2! + 1/ 3!+ ..
#include<stdio.h>
int fact(int n)
{
if( n == 0)
return 1;
return n*fact(n-1);
}
void main()
{
int n,i;
float sum=0.0;
printf("Enter the limit:");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum = sum + 1.0 / fact(i);
printf("Sum=%f",sum);
}
OUTPUT
Enter the limit:5
Sum=1.716667
Write a recursive function to print Fibonacci series
#include<stdio.h>
int fib(int n)
{
if(n == 1)
return 0;
else if(n == 2)
return 1;
return fib(n-2)+fib(n-1);
}
void main()
{
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("%d\t",fib(i));
}
OUTPUT
Enter the limit:7
0 1 1 2 3 5 8
Write a recursive program to print sum of digit of a number
#include<stdio.h>
int sod(int n)
{
if(n<=0)
return 0;
else
}
return n%10 + sod(n/10);
void main()
{
int n;
printf("Enter the number:");
scanf("%d",&n);
printf("Sum=%d",sod(n));
}
OUTPUT
Enter the number:124
Sum=7
Write a recursive function to find the sum of first n natural numbers
#include<stdio.h>
int sum(int n)
{
if(n<=0)
return 0;
else
}
return n + sum(n-1);
void main()
{
int n;
printf("Enter the number:");
scanf("%d",&n);
}
OUTPUT
Enter the number:5
Sum=15
PASSING AN ARRAY AS PARAMETER
Like the value of simple variables, it is also possible to pass the values of an array to a
function. To pass a single dimensional array to a function, it is sufficient to list the name of
the array without any subscripts and the size of the array as arguments.
Rules to pass an Array to Function
The function must be called by passing only the name of the array.
In function definition, formal parameter must be an array type; the size of the arraydoes
not need to be specified.
The function prototype must show that the argument is an array.
Write a function to sort an array.
#include<stdio.h> int
sort(int A[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(A[j]>A[j+1])
{
temp = A[j];
A[j] = A[j+1];
A[j+1]= temp;
}
}
}
}
void main()
{
int A[30];
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Enter the element:");
scanf("%d",&A[i]);
}
sort(A,n);
printf("Sorted Array\n");
for(i=0;i<n;i++)
printf("%d\t",A[i]);
}
OUTPUT
Enter the limit:5 Enter
the element:17 Enter
the element:23 Enter
the element:5 Enter
the element:2 Enter
the element:9 Sorted
Array
2 5 9 17 23
#include<stdio.h> int
sort(int A[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(A[j]>A[j+1])
{
temp = A[j];
A[j] = A[j+1];
A[j+1]= temp;
}
}
}
}
void main()
{
int A[30][30];
printf("Enter the order of matrix:");
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("Enter the element:");
scanf("%d",&A[i][j]);
}
}
for(i=0;i<m;i++)
{
sort(A[i],n);
for(j=0;j<n;j++)
{
printf("%d\t",A[i][j]);
}
printf("\n");
}
}
OUTPUT
Enter the order of matrix:2 4
Enter the element:12
Enter the element:4
Enter the element:25
Enter the element:7
Enter the element:8
Enter the element:5
Enter the element:16
Enter the element:2 4
7 12 25
2 5 8 16
PASSING 2D ARRAY AS PARAMETER
Note: While passing 2D array as parameter we need to mention the maximum size of
element of each row that is column.
Write a program to pass a 2D matrix as parameter and find its sum of all the
elements.
#include<stdio.h>
int sum(int A[][30],int m,int n)
{
int i,j,sum =0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
sum = sum + A[i][j];
}
}
printf("\nSum=%d",sum);
}
void main()
{
int A[30][30];
int i,n,m,j;
printf("Enter the order of matrix:");
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("Enter the element:");
scanf("%d",&A[i][j]);
}
}
sum(A,m,n);
}
OUTPUT
Enter the order of matrix:2 2
Enter the element:1
Enter the element:2
Enter the element:3
Enter the element:4
Sum=10
STRUCTURE
A structure is a user defined data type in C. A Structure is a collection of related data
items, possibly of different types. A Structure is heterogeneous in that it can be composed of
data of different types. In contrast, array is homogeneous since it can structure variable
can either be declared with structure declaration or as a separate declaration like basic
types.
Consider we want to create the structure of a person with following variables
name, age and address. Then such a structure can be created as
struct Person
{
char name[30];
int age;
char addr[50];
};
The general format of a structure definition is as follows
struct structure_name{
data_type member1;
data_type member2;
---------------------
---------------------
};
In defining a structure you may note the following syntax:
Array Structure
An array is a collection of related data Structure can have elements of different
elements of same type. types.
An array is derived data type Structure is a programmer defined one
Any array behaves like built in data type. In Structure we have to design and declare a
All we have to do is to declare an array data structure before the
variable and use it variable of that type are declared and used.
Declare a structure namely Student to store the details (roll number, name,
mark_for_C) of a student. Then, write a program in C to find the average mark
obtained by the students in a class for the subject Programming in C (using the field
mark_for_C). Use array of structures to store the required data. #include<stdio.h>
struct Student{ char
name[30]; int
rollnum;
int mark_for_C;
};
void main(){
struct Students[30];
int i,n,sum=0;
float avg;
printf("Enter the no of Student:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Enter the Student name:");
scanf("%s",s[i].name);
printf("Enter the Student rollnum:");
scanf("%d",&s[i].rollnum); printf("Enter
the Student Mark for C:");
scanf("%d",&s[i].mark_for_C);
}
printf("Name\tRoll Number\tMark for C\n");
for(i=0;i<n;i++)
{
sum = sum + s[i].mark_for_C;
}
avg = (float)sum / n; printf("Average
Mark=%.2f\n",avg);
}
OUTPUT
Enter the no of Student:3 Enter
the Student name:John Enter
the Student rollnum:27
Enter the Student Mark for C:35
Enter the Student name:Miya
Enter the Student rollnum:24
Enter the Student Mark for C:40
Enter the Student name:Anu
Enter the Student rollnum:26
Enter the Student Mark for C:45
Name Roll Number Mark for C
John 27 35
Miya 24 40
Anu 26 45
Average Mark=40.00
Write a program to create a structure employee with member variables name, age,
bs, da, hra and tsalary. Total Salary is calculated by the equation tsalary=
(1+da+hra)* bs. Read the values of 3 employees and display details based on
descending order of tsalary.
#include<stdio.h>
struct Employee{
char name[30];
int age;
float bs;
float da;
float hra;
float tsalary;
};
void sort(struct Employee e[],int n)
{
int i,j;
struct Employee t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
h]
{ if(e[j].tsalary < e[j= )t=e[j]; e[j]=e[j+1]; e[j+1]=t;
}
}
}
}
void main()
{
struct Employee e[5];
int i;
for(i=0;i<3;i++)
{
printf("Enter the name:");
scanf("%s",e[i].name);
printf("Enter the age:");
scanf("%d",&e[i].age);
printf("Enter the basic salary:");
scanf("%f",&e[i].bs);
printf("Enter the da:");
scanf("%f",&e[i].da);
printf("Enter the hra:");
scanf("%f",&e[i].hra);
e[i].tsalary=(1+e[i].da+e[i].hra)*e[i].bs;
}
sort(e,3);
printf("Name\t Age\tBasic Salary\tDA \t HRA \t Total Salary\n");
for(i=0;i<3;i++)
{
printf("%s\t%d\t%.2f\t",e[i].name,e[i].age,e[i].bs);
printf("%.2f\t%.2f\t%.2f\n",e[i].da,e[i].hra,e[i].tsalary);
}
}
OUTPUT
Enter the name:John
Enter the age:31
Enter the basic salary:14000
Enter the da:6
Enter the hra:7.5
Enter the name:Miya
Enter the age:28
Enter the basic salary:15000
Enter the da:7.6 Enter the hra:8 Enter the name:Anu Enter the age:29
Enter the basic salary:15000 Enter the da:8
Enter the hra:9
Name Age Basic Salary DA HRA Total Salary
Anu 29 15000.00 8.00 9.00 270000.00
Miya 28 15000.00 7.60 8.00 249000.00
John 31 14000.00 6.00 7.50 203000.00
UNION
A union is a user-defined type similar to structure in C programming. We use the
keyword ‘union’ to define unions. When a union is defined, it creates a user-defined type.
However, no memory is allocated. To allocate memory for a given union type and work
with it, we need to create variables.
Example of Employee Union creation and declaration
union Employee
{
char name[30];
int age;
double salary;
};
union Employee e;
Differences between structure and union
Structure Union
struct keyword is used to define a union keyword is used to define a union
structure
Any member can be retrieved at any time Only one member can be accessed at a time
in a structure in a union.
Several members of a structure can be Only the first member can be initialized.
initialized at once.
}
is same as
void main(){
auto int num;
}
Example
#include<stdio.h>
{
int max=10;
printf("Max in func1()=%d\n",max);
}
void func2()
{
int max=20;
printf("Max in func2()=%d\n",max);
}
void main()
{
int max=30;
func1();
func2();
printf("Max in main()=%d\n",max);
}
Output
Max in func1()=10
Max in func2()=20
Max in main()=30
REGISTER VARIABLES
We can tell the compiler that a variable should be kept in one of the machine’s
registers instead of keeping in the memory. Since a register access is faster than a memory
access, keeping the frequently accessed variables in the register will lead to faster execution
of programs. This is done as follows
register int count;
Since only a few variables can be placed in the register, it is important to carefully select the
variables for these purposes. However C will automatically convert register variables into
non register variable once limit is reached.
Storage - CPU registers.
Default initial value - Garbage value.
Scope - Local to the block in which the variable is defined.
Life - Till the control remains within the block in which the variable is defined.
Keyword register is used to declare these variables
Example:
register int i;
Example void main( )
{
register int i ;
for ( i = 1 ; i <= 10 ; i++ )
printf ( "\n%d", i ) ;
}
Here, even though we have declared the storage class of i as register, we cannot say for sure
that the value of i would be stored in a CPU register. Because the number of CPU registers
are limited, and they may be busy doing some other task. In such situations, the variable
works as if its storage class is auto.
STATIC VARIABLES
As the name suggests, the value of static variables persists until the end of the
program. A variable can be declared static using the keyword static like
static int x;
Storage −main Memory.
Default initial value − Zero.
Scope − Local to the block in which the variable is defined.
Life − Value of the variable persists between different function calls. ie they
retain the latest value
Keyword static is used to declare these variables
Example:
static int i;
A static variable tells the compiler to persist the variable until the end of the program.
That is , they retain the latest value. Instead of creating and destroying a variable every time
when it comes into and goes out of scope, static is initialized only once and remains into
existence till the end of program.
#include<stdio.h>
void func1()
{
static int x=10; //static variable
x++;
printf("x in func1()=%d\n",x);
}
void func2()
{
int x=10; // local variable
x++;
printf("x in func2()=%d\n",x);
}
void main(){
func1();
func1();
func2();
func2();}
OUTPUT
x in func1()=11
x in func1()=12
x in func2()=11
x in func2()=11
EXTERNAL VARIABLES
Variables that are both alive and active throughout the entire program are known as
external variables. They are called global variables. Unlike local variables, global variables
can be accessed by any function in the program. External variables are declared outside a
function.
Storage −main Memory(RAM).
Default initial value − Zero.
Scope − Global.
Life − till the end of program.
Keyword extern is used to declare these variables
Example: extern int i;
#include<stdio.h>
float pi=3.14; // One way of declaring external variable
float area(int r)
{
return (pi*r*r);
}
float perimeter(int r){
return (2 * pi * r);
}
{
// extern float pi=3.14; Another way of declaring external variable int r;
float a,p;
printf("Enter the radius:");
scanf("%d",&r);
a=area(r);
p=perimeter(r);
printf("Area=%f\n",a);
printf("Perimeter=%f\n",p);
}
OUTPUT
Enter the radius:5
Area=78.500000
Perimeter=31.400002
More example to show the property of global variable.
#include<stdio.h>
int max; // global variable
void func1()
{
int max=10; // local variable
printf("Max in func1()=%d\n",max);
}
void func2()
{
max=20; // resets max value to 20
printf("Max in func1()=%d\n",max);
}
void main()
{
max=40; //set max value to 40
func1();
func2();
printf("Max in main()=%d\n",max);
}
OUTPUT
Max in func1()=10
Max in func1()=20
Max in main()=20
Why the value of max in main() print as 20? [Hint: main uses global scope of max.]
PREVIOUS YEAR UNIVERSITY QUESTIONS
1. What are the advantages of using functions in a program? [KTU, MODEL 2020]
2. With a simple example program, explain scope and life time of variables in C. [KTU,
MODEL 2020]
3. Write a function namely myFact in C to find the factorial of a given number. Also, write
another function in C namely nCr which accepts two positive integer parameters n and r
and returns the value of the mathematical function C(n,r)( n! / ( r! x (n - r)!) ). The
function nCr is expected to make use of the factorial function myFact. [KTU,
MODEL 2020]
4. What is recursion? Give an example. [KTU, MODEL 2020], [KTU, JULY 2017]
5. With a suitable example, explain the differences between a structure and a union in C.
[KTU, MODEL 2020], [KTU, MAY 2017], [KTU, JULY 2017], [KTU, APRIL 2018],
[KTU, JULY 2018]
6. Declare a structure namely Student to store the details (roll number, name, mark_for_C)
of a student. Then, write a program in C to find the average mark obtained by the
students in a class for the subject Programming in C (using the field mark_for_C). Use
array of structures to store the required data. [KTU, MODEL 2020]
numbers and the order of the matrix (number of rows and columns) as arguments and
displays the sum of the elements stored in each row. [KTU, MODEL 2020]
8. Describe the output generated by the following program
#include<stdio.h>
int a=3;
fun(int x)
{
a+= x;
return(a);
}
void main( )
{
int i;
for(i=1;i<=6;++i)
{
a=fun(i);
printf(“%d”,a);
}
} [KTU, DECEMBER 2019]
9. Write a C program using function to find the decimal equivalent of a binary number.
[KTU, DECEMBER 2019]
10. Define recursion with an example. Differentiate between iteration and recursion.
[KTU, DECEMBER 2019]
11. Write a C program to find the GCD of two numbers using recursive function. [KTU,
DECEMBER 2019]
12. Write the output of the program
#include<stdio.h>
#define prod(a ,b) a*b
int main( )
{
int x=3,y=4;
printf(“%d”,prod(x+2,y-1));
printf(“%d”,prod(y+1,x-2));
return 0;
} [KTU, MAY 2019]
13. A student database stores following information about students in a class: Rollno, name,
gender, CGPA. Write a program to prepare a rank list based on CGPA Also prepare a list
of students having CGPA less than 7. [KTU, MAY 2017]
14. A library database maintains following information about books:- book_id, name,
author, no_of_copies. Write a program to sort the books based on the decreasing order of
number of copies available. [KTU, JULY 2017]
15. Write the output of the program. Justify the answer
#include<stdio.h>
int fun( )
{
count++;
return count;
}
int main( )
{
printf(“%d”, fun( ));
printf(“%d”, fun( ));
return 0;
} [KTU, MAY 2019]
16. What is a
structure? How is a structure member accessed? Explain with an example.
[KTU, MAY 2019]
17. What do you meant by scope of a variable in C? [KTU, MAY 2019], [KTU, MAY
2017]
18. Explain the purpose of typedef construct. [KTU, MAY 2019], [KTU, MAY 2017]
19. Explain the meaning of each of the following function prototypes.
i) int f1 (int a);
ii) double f2(double a, int b); [KTU, MAY 2019]
20. Give the syntax and use of external storage class. [KTU, MAY 2019]
21. Differentiate static and automatic variables. [KTU, MAY 2019]
22. Write a C program to find largest and smallest element in an integer array using
function. [KTU,DECEMBER
2018]
23. Write a C program to
create a structure student with detail rollno, name, marks and grade. Read the details of
n students and display the details of the student if student name is given as input.
[KTU,DECEMBER 2018]
24. What is the use of a function prototype? Give the function prototype of a function
accepting one float value and an integer array and return a float array. [KTU, MAY 2017]
25. Discuss the difference between call by value and call by reference parameter passing
techniques with the help of suitable examples. [KTU, MAY 2019], [KTU, MAY 2017],
[KTU, JULY 2017], [KTU, APRIL 2018], [KTU, JULY 2018]
26. Write a recursive function to perform binary search on a set of sorted numbers.
[KTU, MAY 2017]
27. What are library functions? [KTU, MAY 2017]
28. What are formal arguments and actual arguments in a function? [KTU, JULY 2017],
[KTU, JULY 2018]
29. What are function prototypes? Why do we use function prototypes? [KTU,
JULY 2017]
30. How is an array name interpreted when it is passed to a function? [KTU,
JULY 2017]
31. Write a C program to find the length of a given string recursively, without using any
standard string library function. [KTU, APRIL 2018]
32. What are function prototypes? Is Function prototype mandatory for every user
defined function in C? Justify your answer. [KTU, APRIL 2018]
33. Write a C program to print Fibonacci series using recursion. [KTU, DECEMBER
2018]
35. Write a function in C to check whether the given number is prime or not. Call the
function from main function. [KTU, JULY 2018]
36. Consider the following function declarations
void display(int);
int display (int);
37. Differentiate between the two given declarations [KTU, JULY 2018]
38. Write a recursive function with an integer parameter n to return the factorial of n
[KTU, JULY 2018],
39. Explain static storage class with the help of example. [KTU, MAY 2017], [KTU,
DECEMBER 2019]
40. Explain register storage class with the help of an example. [KTU, JULY 2017], [KTU,
DECEMBER 2018]
41. How does array differ from a structure? [KTU, DECEMBER 2018], [KTU, JULY
2018]
42. What are function prototypes and what is its purpose? [KTU, APRIL 2018]
43. Write a program to read an array of integer numbers and display its mean and standard
deviation. Note: Computation of mean and standard deviation needs to be performed in a
separate function. [KTU, APRIL 2018]
44. Develop a recursive C program to print first N Fibonacci terms. [KTU, JUNE 2017]
45. Write a function big to find largest of two numbers and use this function in the main
program to find largest of three numbers. [KTU, DECEMBER
2017]
46. Create a structure for an employee with following information:- empid, name and salary.
Write a program to read the details of ‘n’ employees and display the details of
employees whose salary is above 10000. Use pointer to structure. [KTU, DECEMBER
2019]