0% found this document useful (0 votes)
13 views

C - MODULE 4 and 5

This document discusses arrays in C programming. It defines an array as a fixed-size collection of elements of the same data type. Arrays must be declared before use with syntax like type variable_name[size]. An array stores elements in contiguous memory locations that can be accessed using subscripts. The document covers one-dimensional arrays, initializing arrays, accessing array elements, and basic operations like insertion and deletion. It provides examples of array declarations, initialization, and using for loops to read or write multiple elements.

Uploaded by

arafaiic2022
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

C - MODULE 4 and 5

This document discusses arrays in C programming. It defines an array as a fixed-size collection of elements of the same data type. Arrays must be declared before use with syntax like type variable_name[size]. An array stores elements in contiguous memory locations that can be accessed using subscripts. The document covers one-dimensional arrays, initializing arrays, accessing array elements, and basic operations like insertion and deletion. It provides examples of array declarations, initialization, and using for loops to read or write multiple elements.

Uploaded by

arafaiic2022
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 77

Methodology of Programming & C BCA/BSc CS

Language

1 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
MODULE 4

ARRAYS
An array is a fixed-size sequenced collection of elements of the same data type. It is simply
a grouping of like-type data. An array can be used to represent a list of numbers, or a list of names.
An array is a collective name given to a group of homogeneous elements (same data type).
These similar quantities could be percentage marks of 100 students, or salaries of 300 employees
or ages of 25 students.
Declaration of an Array
Arrays must be declared before they can be used in the program.
Standard array declaration is as
type variable_name [size];
The type specifies the type of the elements that will be contained in the array, such as int,
float or char and the size indicates the maximum number of elements that can be stored inside the
array. In C Language, an array starts at position 0.
1. C Programming Arrays is the Collection of Elements
2. C Programming Arrays is collection of the Elements of the same data type.
3. All Elements are stored in the Contiguous memory
4. All elements in the array are accessed using the subscript variable (index).
Pictorial representation of C Programming Arrays
eg: int Age[5];
Age[0]
Age[1]
Age[2]
Age[3]
Age[4]

The values to the array elements can be assigned as follows


Age[0] =35;
Age[1] =40;
Age[2] =20;
Age[3] =55;
Age[4] =25;
The value will be stored in array Age as shown below.

35
40
20

2 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
55 Age[0]
25 Age[1]
n Age[2]
Age[3]
Age[4]

Character array declaration and initialization

char name[10];
Here we declare the name as a character array (string) variable that can hold a maximum of
10 characters. Suppose we read the following string constant into the string variable name.
“WELL DONE”
Array will be like this
‘W’
‘E’
‘L’
‘L’
‘’
‘D’
‘O’
‘N’
‘E’
‘\0’

When compiler sees the character string, it terminates with an additional null character,
thus the element name[10] holds the null character ‘\0’ . When declaring character arrays, we must
allow one extra element space for the null terminator.

What is Contiguous Memory?

1. When Big Block of memory is reserved or allocated then that memory block is called as
Contiguous Memory Block.

2. Alternate meaning of Contiguous Memory is continuous memory.

Array Terminologies:

Size: Number of elements or capacity to store elements in an array. It is always mentioned in square
brackets [ ].

Type: Refers to data type. It decides which type of element is stored in the array. It is also
instructing the compiler to reserve memory according to the data type.

3 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Base: The address of the first element is a base address. The array name itself stores address of the
first element.

Index: The array name is used to refer to the array element. For example num[x], num is array and
x is index. The value of x begins from 0.The index value is always an integer value.

Range: Value of index of an array varies from lower bound to upper bound. For example in
num[100] the range of index is 0 to 99.

Word: It indicates the space required for an element.

Characteristics of an array:

1. The declaration int a[5] is nothing but creation of five variables of integer types in memory
instead of declaring five variables for five values.
2. All the elements of an array share the same name and they are distinguished from one
another with the help of the element number.
3. The element number in an array plays a major role for calling each element.
4. Any particular element of an array can be modified separately without disturbing the other
elements.
5. Any element of an array a[ ] can be assigned or equated to another ordinary variable or array
variable of its type.
6. Array elements are stored in contiguous memory locations.
Types of Array

1. Single Dimensional Array / One Dimensional Array

2. Multi-Dimensional Array

Single / One Dimensional Array:

 Single or One Dimensional array is used to represent and store data in a linear form.
 Array having only one subscript variable is called One-Dimensional array.
 It is also called as Single Dimensional Array or Linear Array.

Single Dimensional Array Declaration and initialization:

Syntax for declaration:

<data type> <array name> [size];

4 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Examples for declaration

int iarr[3];

char carr[20];

float farr[3];

Syntax for initialization:

<data type> <array name> [size] = {val1, val2, …, valn};

Examples for initialization:

int iarr[3] = {2, 3, 4};

char carr[20] = “program”;

float farr[3] = {12.5, 13.5, 14.5};

Different Methods of Initializing 1-D Array

Initializing 1-D Array is called as compiler time initialization if and only if we assign
certain set of values to array element before executing program. i.e. at compilation time.

Ways of Array Initializing 1-D Array:

1. Size is Specified Directly

2. Size is Specified Indirectly

Method 1: Array Size Specified Directly

In this method, we try to specify the Array Size directly.

5 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
int num [5] = {2,8,7,6,0};

In the above example we have specified the size of array as 5 directly in the initialization
statement. Compiler will assign the set of values to particular element of the array.

num[0] = 2; num[1] = 8; num[2] = 7; num[3] = 6; num[4] = 0;


Method 2: Size Specified Indirectly

int num[ ] = {2,8,7,6,0};

Explanation:

1. Compiler counts the number of elements written inside pair of braces and determines the size
of an array.
2. After counting the number of elements inside the braces, the size of array is considered as 5
during complete execution.
3. This type of Initialization Scheme is also called as “Compile Time Initialization”.

Example Program

#include <stdio.h>

void main()

int num[] = {2,8,7,6,0};

int i;

for (i=0;i<5;i++)

printf(“\n Array Element num [%d] = %d”,i, num[i]);

getch();

Output:
Array Element num[0] =

2 Array Element num[1]

= 8 Array Element

num[2] = 7 Array

Element num[3] = 6

6 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Array Element num[4] = 0
Accessing Array
1. We all know that array elements are randomly accessed using the subscript variable.

2. Array can be accessed using array-name and subscript variable written inside pair of square
brackets [ ]. Consider the below example of an array

20 30 10 40 70
a[0] a[1] a[2] a[3] a[4]

In this example we will be accessing array like

this a[3] = Forth Element of Array

a[4] = Fifth Element of Array

Whereas elements are assigned to an array using below way

a [0] = 20; a[1] = 30; a[2] = 10; a[3] = 40; a[4] = 70;

READING AN AARAY USING scanf()

void main()
{
int a[5];
clrscr();
printf(“Enter a number\n”);
scanf(“%d”,&a[0]);
}
We can read number of elements in single statements by using for loop.
void main()
{

int i,a[5];
clrscr();
printf(“Enter five numbers\n”);
for(i=0;i<5;i++)
{

7 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
scanf(“%d”,&a[i]);
}
}

Operations with One Dimensional Array


1. Deletion – Involves deleting specified elements form an array.
2. Insertion – Used to insert an element at a specified position in an array.
3. Searching – An array element can be searched. The process of seeking specific elements in an
array is called searching.
4. Merging – The elements of two arrays are merged into a single one.
5. Sorting – Arranging elements in a specific order either in ascending or in descending order.
Example Programs:
Example Programs:
P18. C Program for deletion of an element from the specified location from an Array
#include<stdio.h>
void main()
{
int arr[30], num, i, loc; printf("\
nEnter no of elements:");
scanf("%d", &num);
//Read elements in an array printf("\
nEnter %d elements :", num); for (i =
0; i < num; i++)
{
scanf("%d", &arr[i]);
}
//Read the location

printf("\nLocation of the element to be deleted :");


scanf("%d", &loc);
/* loop for the deletion */
while (loc < num)
{
arr[loc - 1] = arr[loc];
loc++;
}

8 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
num--; // No of elements reduced by 1
//Print Array
for (i = 0; i < num; i++)
printf("\n %d", arr[i]);
getch();
}
Output:
Enter no of elements: 5
Enter 5 elements: 3 4 1 7 8
Location of the element to be deleted:
33478

P19. C Program to insert an element in an array

#include<stdio.h>
int main()
{
int arr[30], element, num, i,
location; printf("\nEnter no of
elements:"); scanf("%d", &num);
for (i = 0; i < num; i++)
{
scanf("%d", &arr[i]);
}
printf("\nEnter the element to be inserted:");
scanf("%d", &element);
printf("\nEnter the location");
scanf("%d", &location);
//Create space at the specified
location for (i = num; i >= location;
i--)
{
arr[i] = arr[i - 1];
9 Dept. of CS, IGCAS
Methodology of Programming & C BCA/BSc CS
Language
}
num++;
arr[location - 1] = element;
//Print out the result of
insertion for (i = 0; i < num; i+
+) printf("n %d", arr[i]);
return (0);
}
Output:
Enter no of elements: 5
12345
Enter the element to be inserted: 6
Enter the location: 2
1 62345

P20. C Program to search an element in an array


#include<stdio.h>
int main()
{
int a[30], ele, num, i; printf("\
nEnter no of elements:");
scanf("%d", &num); printf("\
nEnter the values :");
for (i = 0; i < num; i++)
{
scanf("%d", &a[i]);

}
//Read the element to be searched printf("\
nEnter the element to be searched :");
scanf("%d", &ele);
//Search starts from the zeroth location
i = 0;

10 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
while (i < num && ele != a[i])
{i
++;
}

//If i < num then Match found


if (i < num)
{
printf("Number found at the location = %d", i + 1);
}
else
{

printf("Number not found");


}
getch();
}
Output:
Enter no of elements: 5
11 22 33 44 55
Enter the elements to be searched:
44 Number found at the location = 4

P21. C program to merge two arrays in C Programming


#include<stdio.h>
int main()
{
int arr1[30], arr2[30], res[60];
int i, j, k, n1, n2;
printf("\nEnter no of elements in 1st
array:"); scanf("%d", &n1);
for (i = 0; i < n1; i++)
{
scanf("%d", &arr1[i]);

11 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
}
printf("\nEnter no of elements in 2nd
array:"); scanf("%d", &n2);
for (i = 0; i < n2; i++) {
scanf("%d", &arr2[i]); }
i = 0;
j = 0;
k = 0;
// Merging starts
while (i < n1 && j < n2)
{

if (arr1[i] <= arr2[j])


{
res[k] =
arr1[i]; i++;
k++;
}

else
{
res[k] =
arr2[j]; k++;
j++;
}

}
/*Some elements in array 'arr1' are still remaining where as the array 'arr2' is exhausted*/
while (i < n1)
{
res[k] =
arr1[i]; i++;
k++;
}

12 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
/*Some elements in array 'arr2' are still remaining where as the array 'arr1' is exhausted */
while (j < n2)
{
res[k] =
arr2[j]; k++;
j++;
}
//Displaying elements of array
'res' printf("\nMerged array is:");
for (i = 0; i < n1 + n2; i+
+) printf("%d ", res[i]);
return (0);
}
Enter no of elements in 1st array:
4 11 22 33 44
Enter no of elements in 2nd array:
3 10 40 80
Merged array is: 10 11 22 33 40 44 80

Multi Dimensional Array:

1. Array having more than one subscript variable is called Multi-Dimensional array.

2. Multi-Dimensional Array is also called as Matrix.

Syntax: <data type> <array name> [row subscript][column subscript];

Example:

Two Dimensional Arrays

Declaration: char name[50][20];


Initialization:
int a[3][3] = { {1, 2, 3}, { 4, 5, 6},{ 7,8, 9} };
Here a[0][0]=1; a[0][0]=1; a[0][1]=2; a[0][2]=3;

a[1][0]=4; a[1][1]=5; a[1][2]=6;

13 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
a[2][0]=7; a[2][1]=8; a[2][2]=9;

Two Dimensional Arrays:

 Two Dimensional Array requires Two Subscript Variables


 Two Dimensional Array stores the values in the form of matrix.
 One Subscript Variable denotes the “Row” of a matrix.
 Another Subscript Variable denotes the “Column” of a matrix.

Declaration and use of 2D Arrays:


int a[3][4];
for(i=0;i<row,i++)
for(j=0;j<col,j++)
{

printf("%d",a[i][j]);
}

Example Program:P22. Accept & Print 2×2 Matrix from user


#include<stdio.h>
void main()
{
int i, j, a[3][3];
for (i = 0; i < 3; i++)
{

for (j = 0; j < 3; j++)


{
printf("\nEnter the a[%d][%d] = ", i, j);
scanf("%d", &a[i][j]);
}

14 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
}
//Print array elements
for (i = 0; i < 3; i++)
{

for (j = 0; j < 3; j++)


{
printf("%d\t", a[i][j]);
}
printf("\n");
}
getch();

Example programs for practice:


P23. C Program for addition of two matrices

P24. C Program to find inverse of 3 X 3 Matrix

P25. C Program to multiply two 3 X 3

Matrices

P26. C Program to check whether matrix is magic square or not?

STRINGS
A string is a sequence of character enclosed with in double quotes (“ ”) but ends with \0. The
compiler puts \0 at the end of string to specify the end of the string. To get a value of string
variable we can use the two different types of formats.

 Using scanf() function as: scanf(“%s”, string variable);


 Using gets() function as : gets(string variable);

STRING HANDLING FUNCTIONS

C library supports a large number of string handling functions. Those functions are stored
under the header file string.h in the program.

Let us see about some of the string handling functions.

15 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language

I. strlen() function
strlen() is used to return the length of the string , that means counts the number of
characters present in a string.
Syntax
integer variable = strlen (string variable);
Example:P27

void main()
{
char str[20];
int
strlength;
clrscr();
printf(“Enter String:”);
gets(str);
strlength=strlen(str);
printf(“Given String Length Is: %d",
strlength); getch();
}

Output:
Enter String
Welcome
Given String Length is:7

II. strcat() function

The strcat() is used to concatenate two strings. The second string will be appended to the end of
the first string. This process is called concatenation.

Syntax

strcat (StringVariable1, StringVariable 2);

16 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Example:P28

void main()
{
char str1[20],str2[20];
clrscr();
printf(“Enter First String:”);
scanf(“%s”,str1);
printf(“Enter Second String:”);
scanf(“%s”,str2);
printf(“Concatenation String is:%s\n”, strcat(str1,str2));
getch();
}
Output:
Enter First String
Good
Enter Second
String Morning
Concatenation String is:

GoodMorning

III. strcmp() function

strcmp() function is used to compare two strings. strcmp() function does a case sensitive
comparison between two strings. The two strings are compared character by character until there is
a mismatch or end of one of the strings is reached (whichever occurs first). If the two strings are
identical, strcmp( ) returns a value zero. If they’re not, it returns the numeric difference between
the ASCII values of the first non-matching pairs of characters.
Syntax
strcmp(StringVariable1, StringVariable2);
Example: P29
#include<stdio.h>
#include<conio.h>
void main()
{
char str1[20], str2[20];

17 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
int res;
clrscr();
printf(“Enter First String:”);
scanf(“%s”,str1);
printf(“Enter Second String:”);
scanf(“%s”,str2);
res = strcmp(str1,str2);
if(res==0)
printf(“strings are
equal”); else
printf(“strings are not
equal”); getch();
}
Output:
Enter First
String Good
Enter Second
String Good
Strings are equal

Note:

strcmpi() function

strcmpi() function is used to compare two strings. strcmpi() function is not


case sensitive.

IV. strcpy() function:


strcpy() function is used to copy one string to another. strcpy() function copy the contents of
second string to first string.
Syntax
strcpy(StringVariable1, StringVariable2);
Example: P30
#include<stdio.h>
#include<conio.h>
void main()
{

18 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
char str1[20], str2[20];
int res;
clrscr();
printf(“Enter First String:\n”);
scanf(“%s”,str1);
printf(“Enter Second String:\
n”); scanf(“%s”,str2);
strcpy(str1,str2)
printf(“First String is:%s\n”,str1);
printf(“Second String is:%s”,str2);
getch();
}
Output:
Enter First String:
Hello
Enter Second String:
welcome
First String is: welcome
Second String is: welcome

V. strlwr () function:
This function converts all characters in a given string from uppercase to lowercase letter.
Syntax
strlwr(StringVariable);
Example:P31
#include<stdio.h>
#include<conio.h>
void main()
{
char str[20];
clrscr();
printf(“Enter String:”);
gets(str);
printf(“Lowercase String : %s”, strlwr(str));
getch();

19 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
}
Output:
Enter String
WELCOME
Lowercase String : welcome
VI. strrev() function:
strrev() function is used to reverse characters in a given string.
Syntax
strrev(StringVariable);

Example:P32

#include<stdio.h>
#include<conio.h>
void main()
{
char str[20];
clrscr();
printf(“Enter String:”);
gets(str);
printf(“Reverse String : %s”, strrev(str));
getch();
}
Output:
Enter String
WELCOME
Reverse String : EMOCLEW

Note:
strupr() function:
strupr() function is used to convert all characters in a given string
from lower case to uppercase letter.
Syntax
strupr(Stringvariable);

Pointers

20 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
The pointer in C language is a variable which stores the address of another variable. An
integer variable holds (or you can say stores) an integer value, however an integer pointer holds the
address of an integer variable.
Consider the following example to define a pointer which stores the address of an integer.
int n = 10;
int *p = &n; // pointer declaration and initialization in single line.
n
10
5001

Here value of n=10 and value of p=5001.

Declaring a pointer
The pointer in c language can be declared using * (asterisk symbol). It is also known as
indirection pointer used to dereference a pointer.

int *a; //pointer to int

char *c; //pointer to char

By the help of * (indirection operator), we can print the value of pointer variable p

Eg P33:-
#include<stdio.h>
int main()
{
int number=50;
int *p;
p=&number; //stores the address of number variable
printf("Address of p variable is %x \n",p); // p contains the address of the
number printf("Value of p variable is %d \n",*p); // *p print the value of pointer
variable return 0;
}

Output

Address of p variable is

fff4 Value of p variable is

50

Eg P34:-Write a program to display the value of variable and its location using pointer
Void main()

21 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
{

int *v, *p;

clrscr();

p=&v;

printf(“\n address of v=%u”,p);

printf(“\n value of v=%d”,*p);

printf(“\n address of p=%u”,&p);

Output

Address of

v=4060 Value of v

=10 Address of

p=4062

Eg P35:-Write a program to print an element and its address using pointer.

void main ()

int i,*k;

clrscr ();

printf ("Enter a number : ") ;

scanf ("%d", &i) ;

k=&i;

printf (" \nAddress of i is %u", k) ;

printf (" \nValue of i is %d", *k) ;

Output

Enter a number: 15

Address of I is

4065 Value of I is

22 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
15

Eg P36:- write a program to add two numbers through variables and their pointers.

23 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
void main ( )

int a,b,c,d,*ap,*bp;

clrscr();

printf("Enter Two Numbers :");

scanf ("%d %d",&a,&b):

ap=&a;

bp=&b;

c=a+b;

d=*ap+*bp;

printf("\nSum of A & B Using Variable :


%d",c); printf("\nSum of A & B Using
Pointers :%d",d);

OUTPUT:

Enter Two Numbers: 8 4


Sum of A & B Using Variable:

12 Sum of A & B Using Pointers:

12 Advantage of pointer

1) Pointer reduces the code and improves the performance; it is used to retrieving strings, trees, etc.
and used with arrays, structures, and functions.

2) We can return multiple values from a function using the pointer.

3) It makes you able to access any memory location in the computer's memory.

Usage of pointer

There are many applications of pointers in C language.

1) Dynamic memory allocation

In C language, we can dynamically allocate memory using malloc() and calloc() functions where
the pointer is used.

2) Arrays, Functions, and Structures

24 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Pointers in C language are widely used in arrays, functions, and structures. It reduces the code and
improves the performance.

NULL Pointer
A pointer that is not assigned any value but NULL is known as the NULL pointer. If you
don't have any address to be specified in the pointer at the time of declaration, you can assign
NULL value. It will provide a better approach.

int *p=NULL;

P37./*Swapping of two values using pointers*/

#include<stdio.h>
void main()
{
int a=10,b=20,*p1=&a,*p2=&b;
printf("Before swap: *p1=%d *p2=%d",*p1,*p2);
*p1=*p1+*p2;
*p2=*p1-*p2;
*p1=*p1-*p2;
printf("\nAfter swap: *p1=%d *p2=%d",*p1,*p2);
getch();
}

Output

Before swap: *p1=10 *p2=20

After swap: *p1=20 *p2=10

THE void POINTERS


Pointers can also be declared as void types. void pointers cannot be dereferenced without
explicit type conversion. This is because being void the compiler cannot determine the size of the
object that the pointer points to. Though void pointer declaration is possible, void variable's
declaration is not allowed.

A void pointer can point any type of variable with proper type casting. The size of a void
pointer displayed will be two. When a pointer is declared as void two bytes are allocated to it.
Later

25 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
using type casting, a number of bytes can be allocated or deallocated. Void variables cannot be
declared because memory is not allocated to them and there is no place to store the address.

WILD POINTERS

Pointers are used to store memory addresses. An improper use of pointer creates many
errors in the program. Hence, pointers should be handled cautiously. When a pointer points to an
unallocated memory location or data value whose memory is de-allocated, such a pointer is called
a wild pointer. That is uninitialized pointers are known as wild pointers. The wild pointer generates
garbage memory location and dependent reference. The pointer becomes wild due to the following
reasons:

 Pointer declared but not initialized


 Pointer alternation
 Accessing the destroyed data

Eg:-Write a program to show the wild pointer and its output.

void main()

int k,*x;

clrscr () ;

for(k=0;k<=3;k++)

printf("%u",x[k]);

OUTPUT:

7272 24 330 30 55 9 2 7 7 53

CONSTANT POINTERS

The address of the constant pointer cannot be

modified. char* const str="Constant";

In the above example, it is not possible to modify the address of the pointer str.

Features of pointers

 Pointers provide direct access to memory.


 Reduce the storage space and complexity of the program.

26 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
 Reduces the execution time of the program.
 Provides an alternative way to access array elements.
 Address of objects can be extracted using pointers.
 Pointers help u8s to build complex data structures like linked list, stack, queues.

ARITHMETIC OPERATIONS WITH POINTERS

Arithmetic operations on pointer variables are also possible. Increment, decrement, prefix
and postfix operations can be performed with the pointers, The effects of these operations are
shown in Table.

Initial Address after Required


Dara Type Operation
Address Operation Bytes
int i=2 4046 ++ -- 4048 4044 25

char c= ‘x’ 4053 ++ -- 4054 4052 1

float f=2.2 4058 ++ -- 4062 4054 4

long l =2 4060 ++ -- 4064 4056 4

From the table we can observe that, on increment of the pointer variable for integers, the
address incremented by two. i.e. 4046 is the original address and on increment its value will be
4048 because integers require two bytes.

Similarly, characters, floating point numbers and long integers require 1, 4 and 4 bytes,
respectively.

Eg:-P38. Write a program to show the effect of increment and decrement operators used as
prefix and suffix with the pointer variable.

void main ()

int i, *ii;

puts ("Enter Value of i=")

; scanf ("%d", &i) ;

ii=&i;

27 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
clrscr();

printf("Address of i = %u\n", ii);

printf("Address of I = %u\n", ++ii);

printf("Address of i = %u\n", ii++);

printf("Address of i = %u\n", --ii);

printf("Address of i =%u\n", ii--);

printf("Address of i = %u\n", ii);

OUTPUT:

Enter Value of i= 8
Address of i = 4060
Address of i = 4062
Address of i = 4062
Address of i = 4062
Address of i = 4062
Address of i = 4060

Eg:-P39. Write a program to perform different arithmetic operations using pointers.


void main()
{
int a=25,b=10,*Pi*j;
p=&a;
j=&b;
clrscr();
printf("\n Addition a+b = %d", *p+b);
printf("\n Subtraction a-b = %d", *p-b);
printf("\n Product a*b = %d", *p**j);
printf(“\n Division a/b = %d", *p / *j);
printf(“\n a Mod b = %d", *p % *j);
}
Output
Addition a+ b = 35
Subtraction a-b =
15 Product a*b =
250
28 Dept. of CS, IGCAS
Methodology of Programming & C BCA/BSc CS
Language
Division a/b =
2 a mod b = 5

POINTERS AND ARRAYS


Array name by itself is an address or pointer. It points to the address of the first element
(0th element of an array). The elements of the array together with their addresses can be displayed
by using array name itself. Array elements are always stored in contiguous memory locations.

Eg:-P40write a program to display an array element with their addresses using array name
as a pointer

void main()

Int x[5]={2,4,6,8,10),k=0;

clrscr() ;

printf(" \ nElement No. Element

Address"); while (k<5)

printf (\nx [%d] = \ t%8d %9u", k,* (x+k) ,x+k) ;

k++;

OUTPUT:

Element No. Element Address

x[0] = 2 4056

x[1]= 4 4058

x[2]= 6 4060

x[3]= 8 4062

29 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
x[4]= 10 4064

Eg: P41. Write a program to find the sum all the elements of an array. Use the array name
itself as pointer.

void main ( )

int sum=0,i=0,a[ ]={1,2,3,4,5};

clrscr ;

printf ("Elements Values Address \ n \ n") ;

while (i<5)

printf ("a [%d] \ t%5d \ t%8u \ n", * (a+i) , (a+i) ) ;

sum =sum+* (a+i++) ;

printf (" \ nSum of Array Elements = %d", sum) ;

OUTPUT:

Elements Values Address

A[0] = 1 4056

A[1] = 2 4058

A[2] = 3 4060

A[3] = 4 4062

A[4] = 5 4064

Sum of Array Elements = 15

POINTERS AND TWO-DIMENSIONAL ARRAYS

30 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
A matrix can represent two-dimensional elements of an array. Here, the first argument is
row number and second the column number. To display the address of 1 st element of two-
dimensional array using a pointer. It is essential to have ' &' operator as prefix with an array name
followed by element number; otherwise the compiler shows an error.

Eg:-P42. Write a program to display array elements and their addresses using

pointers. void main()

int i, j=1,*p;

int a[3][3]={(1,2,13),(4,5,61),(7,8,9)}:

clrscr();

printf("\t Elements of An Array with their addresses\n\n");

p=&a[0][0];

for(i=0;i<9;i++,j++)

printf("%5d [%5u ]",*(p),p);

p++;

if (j==3)

printf("\n");

j=0;

OUTPUT:

Elements of an array with their addresses

1[4052] 2 [4054] 3 [4056]

4[4058] 5 [4060] 6 [4062]

7 [4064] 8 [4066] 9 [4068]

31 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language

MODULE 5
FUNCTIONS
A function is a block of code that performs a specific task.
In C, we can divide a large program into the basic building blocks known as function. The function
contains the set of programming statements enclosed by {}. A function can be called multiple
times to provide reusability and modularity to the C program. In other words, we can say that the
collection of functions creates a program. The function is also known as procedure or subroutine in
other programming languages.
Advantage of functions in C

There are the following advantages of C functions.

 By using functions, we can avoid rewriting same logic/code again and again in a program.
 We can call C functions any number of times in a program and from any place in a program.
 We can track a large C program easily when it is divided into multiple functions
 Reusability is the main achievement of C functions.
 However, Function calling is always an overhead in a C program.

Function Aspects

There are three aspects of a C function.

Function declaration

All functions in a c program must be declared, before they are invoked. A function declaration (also
known as function prototype) consists of four parts.
 Function type (return type).
 Function name.
 Parameter list.
 Terminating semicolon.
The general format of function declaration is:

32 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language

Function-type function-name (parameter list) ;


In function declaration:
 The parameter list must be separated by commas.
 The parameter names do not need to be the same in the prototype declaration and
the function definition.
 Use of parameter names in the declaration is optional.
 If the function has no formal parameters, the list is written as (void)
 The return type is optional, when the function returns int type data.
 The return type must be void if no value is returned.

 Function definition

Function definition, also known as function implementation includes the following elements;

 Function name.
 Function type.
 List of parameters.
 Local variable declaration.
 Function statements; and
 A return statement.

The general format of function definition is:

function-type function-name (parameter list) /* function header*/


{
Local variable
declaration; /* Executable
statement1;
………………………
function body
Executable statement
n; Return statement;
}

Function call

33 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
A function can be called by simply using the function name followed by a list of parameters (or
arguments), if any, enclosed in parentheses and separated by commas. If the function call does not
require any arguments, an empty pair of parentheses must follow the name of the function. The
function call may be a part of a simple expression (such as an assignment statement), or it may be
one of the operands within a more complex expression. The arguments appearing in the function
call are referred to as actual parameters.

The general format of function call is:


function name ( actual parameters );
variable = function name (actual parameters);

Function Aspects Syntax

Function Declaration Return_type function_name(argument list);

Function call Function_name(argument_list);

Return_type function_name(argument list)


{
Function Definition
Function body;
}

The syntax of creating function in c language is given below:

return_type function_name(data_type parameter...)


{
// Body of the function
}
Types of Functions

Library Functions FunctionsUser defined Functions

34 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language

There are two types of functions in C programming:

1. Library Functions:

Library functions are built-in functions in Library functions are the functions which are
declared in the C header files (stdio.h) such as scanf(), printf(), gets(), puts(), ceil(), floor() etc.

2. User-defined functions:

User defined functions are the functions which are created by the C programmer, so that
he/she can use it many times. It reduces the complexity of a big program and optimizes the code.

Return Value

C function may or may not return a value from the function. If you don't have to return any
value from the function, use void for the return type.

Let's see a simple example of C function that doesn't return any value from the
function.

Example without return value:

void hello()
{
printf("hello c");
}
If you want to return any value from the function, you need to use any data type such as
int, long, char, etc. The return type depends on the value to be returned from the function.

Let's see a simple example of C function that returns int value from the function.

Example with return value:

int get()
{
return 10;
}

35 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
In the above example, we have to return 10 as a value, so the return type is int. If you want
to return floating-point value (e.g., 10.2, 3.1, 54.5, etc), you need to use float as the return type of
the method.

float get()
{
return 10.2;
}
Now, you need to call the function, to get the value of the function.

Different aspects of function calling

A function may or may not accept any argument. It may or may not return any value. Based
on these facts, there are four different aspects of function calls.

 function without arguments and without return value


 function without arguments and with return value
 function with arguments and without return value
 function with arguments and with return value

Example for Function without argument and without return value

Example P43.
#include<stdio.h>
void printName();
void main ()
{
printf("Hello ");
printName();
}
void printName()
{
printf(" C programming");
}
Output
Hello C programming

36 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Example P44.

#include<stdio.h>
void sum();
void main()
{
printf("\nGoing to calculate the sum of two numbers:");
sum();
}
void sum()
{
int a,b;
printf("\nEnter two numbers");
scanf("%d %d",&a,&b);
printf("The sum is %d",a+b);
}
Output
Going to calculate the sum of two numbers:
Enter two
numbers 10
20
The sum is 30
Example for Function without argument and with return value
Example P45
#include<stdio.h>
#include<conio.h>
int sum();
void main()
{
int result;
printf("\nGoing to calculate the sum of two numbers:");
result = sum();
printf("%d",result);
getch();

37 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
}
int sum()
{
int a,b;
printf("\nEnter two numbers");
scanf("%d%d",&a,&b);
return a+b;
}
Output
Going to calculate the sum of two
numbers: Enter two numbers
10
20
The sum is 30

Example P46:
program to calculate the area of the square

#include<stdio.h>
float square();
void main()
{
printf("Going to calculate the area of the square\n");
float area = square();
printf("The area of the square: %f\n",area);
getch();
}
float square()
{
float side;
printf("Enter the length of the side in meters: ");
scanf("%f”,&side);
return side * side;
}
Output

38 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Going to calculate the area of the square
Enter the length of the side in meters:
10 The area of the square: 100.000000
Example for Function with argument and without return value
Example P47
#include<stdio.h>
void sum(int, int);
void main()
{
int a,b,result;
printf("\nGoing to calculate the sum of two numbers:");
printf("\nEnter two numbers:");
scanf("%d %d",&a,&b);
sum(a,b);
}
void sum(int a, int b)
{
printf("\nThe sum is %d",a+b);
}

Output
Going to calculate the sum of two
numbers: Enter two numbers
10
20
The sum is 30

Example P48:

program to calculate the average of five numbers.


#include<stdio.h>
void average(int, int, int, int, int);
void main()
{
int a,b,c,d,e;

39 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
printf("\nGoing to calculate the average of five
numbers:"); printf("\nEnter five numbers:");
scanf("%d %d %d %d
%d",&a,&b,&c,&d,&e); average(a,b,c,d,e);
}
void average(int a, int b, int c, int d, int e)
{

float avg;
avg=(a+b+c+d+e)/5);
printf(“The average of five numbers=%f ”,avg);
}

Output
Going to calculate the average of five
numbers Enter five numbers
10
20
30
40
50
The average of five numbers= 30.000000

Example function with argument and with return value


Example P49
#include<stdio.h>
int sum(int, int);
void main()
{
int a,b,result;
printf("\nGoing to calculate the sum of two numbers:");
printf("\nEnter two numbers:");
scanf("%d %d",&a,&b);
result = sum(a,b);
printf("\nThe sum is : %d",result);

40 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
}
int sum(int a, int b)
{
return a+b;
}
Output
Going to calculate the sum of two numbers:
Enter two numbers:
10
20
The sum is: 30
C Library functions
Library functions are the inbuilt function in C that are grouped and placed at a common
place called the library. Such functions are used to perform some specific operations. For example,
printf (Is a library function used to print on the console. The library functions are created by the
designers of compilers. All C standard library functions are defined inside the different header
files saved with the extension .h. We need to include these header files in our program to make use
of the library functions defined in such header files.

Header file Description


stdio.h This is a standard input/output header file. It contains all the library
functions regarding standard input/output.
conio.h This is a console input/output header file
string .h It contains all string related library functions like gets(), puts(),etc.
stdlib.h This header file contains all the general library functions like malloc(),
allot(), exit(), etc.
math.h This header file contains all the math operations related functions like
sqrt(), pow(), etc.

ctype.h This header file contains all character handling functions.


time.h This header file contains all the time-related functions
stdarg.h Variable argument functions are defined in this header file.
signal.h All the signal handling functions are defined in this header file.

41 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
CALL BY VALUE AND REFERENCE
There are two ways in which we can pass arguments to the function or we can call the functions.

 Call by value
 Call by reference

Call by Value
In this type, the value of actual arguments is passed to the formal arguments and operation is
done on the formal arguments. Any change in the formal arguments made does not affect the actual
arguments because formal arguments are the photocopy of the actual argument. Hence, when a
function is called by the call by value method, it does not affect the actual contents of the
arguments. Changes made in the formal arguments are local to the block of the called function.
P50. Write a program to exchange values of two variables by using 'call by
value' to the function.
#include<stdio.h>
void swap(int x,int y);
main()
{
int a,b;
printf(“Enter the values:”);
a=10;
b=20;
swap(a,b);
printf(“a=%d b=%d”,a,b);
}
void swap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
printf(“x=%d y=%d”,x,y);
}
Output
x=20 y=10

42 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
a=10 b=20
Call by Reference
In this type, instead of passing values, addresses (reference) are passed. Function operates
on addresses rather than values. Here, the formal arguments are pointers to the actual argument. In
this type, formal arguments point to the actual argument. Hence, changes made in the argument are
permanent.

P51. Write a program to send a value by reference to the user-defined function.


#include<stdio.h>
void swap(int *x,int
*y); void main()
{
int a,b;
printf(“Enter the
values:”); a=10;
b=20;
swap(&a,&b); printf(“a=
%d b=%d”,a,b);
}
void swap(int *x,int *y)
{
int t;
t=*x;
*x=*y;
*y=t;
printf(“x=%d y=%d”,*x,*y);
}
Output
x=20 y=10
a=20 b=10

RECURSION

43 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
The C language supports recursive feature, i.e. a function is call repetitively by itself. The
recursion can be used directly or indirectly. The direct recursion function calls to itself till the
condition is true. In indirect recursion, a function calls to another function and then called function
calls to the calling function.
Example P52.
/* recursive function for factorial*/
int fact (int) ;
void main()
{
int num,
f; clrscr();
printf("\n Enter a number ;");
scanf ("%d", &num);
f=fact (num) ;
printf("\n Factorial of (%d) is (%d)",num,f);
}
int fact(int f)
{
if (f==1)
return f;
else
return f*fact(f-1);
}
OUTPUT:
Enter a number: 4
Factorial of (4) is (24)

P53. /*recursive function for fibonnaci series*/


int fibonnaci (int x)
{
if(x<=2) return 1;
return fibonnaci(x-1)+fibonnaci(x-2);
}
main()
{

44 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
printf("\n fact(10) : %d",fact(10));
printf("\n fibonnaci(10) : %d",fibonnaci(10));
}

Types of Recursion
int num()
{
…….
sum();
int num() }
{
……… Int sum()
num(); {
………
} num();
}

Direct recursion Indirect recursion

Following are the types of the recursion in C.

 Direct Recursion
 Indirect Recursion
 Tail Recursion
 No Tail/ Head Recursion

Direct Recursion
When a function calls itself within the same function repeatedly, it is called the direct
recursion.

Structure of the direct recursion


fun()
{
// write some code
fun();
// some code

45 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language

}
In the above structure of the direct recursion, the outer fun() function recursively calls the
inner fun() function, and this type of recursion is called the direct recursion.
Indirect Recursion
When a function is mutually called by another function in a circular manner, the function is
called an indirect recursion function.

Structure of the indirect recursion


fun1()
{
// write some code
fun2()
}
fun2()
{
// write some code
fun3()
// write some code
}
fun3()
{
// write some code
fun1()
}

In this structure, there are three functions, fun1(), fun2(), fun3() and fun4(). When the
fun1() function is executed, it calls the fun2() for its execution. And then, the fun2() function starts
its execution calls the fun3() function. In this way, each function leads to another function to
makes their execution circularly. And this type of approach is called indirect recursion.
Tail Recursion
A recursive function is called the tail-recursive if the function makes recursive calling
itself, and that recursive call is the last statement executes by the function. After that, there is no
function or statement is left to call the recursive function.
void fun1( int num)
{
// if block check the
condition if (num == 0)
return;
else

46 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language

printf ("\n Number is: %d", num); // print the number


return fun1(num - 1); // recursive call at the end in the fun() function
}
int main ()
{
fun1(7); // pass 7 as integer
argument return 0;
}

Non-Tail / Head Recursion


A function is called the non-tail or head recursive if a function makes a recursive call itself,
the recursive call will be the first statement in the function. It means there should be no statement
or operation is called before the recursive calls. Furthermore, the head recursive does not perform
any operation at the time of recursive calling. Instead, all operations are done at the return time.
Example
#include <stdio.h>
void head_fun (int num)
{
if ( num > 0 )
{
// Here the head_fun() is the first statement to be
called head_fun (num -1);
printf (" %d", num);
}
}
int main ()
{
int a = 5;
printf (" Use of Non-Tail/Head Recursive function \n");
head_fun (a); // function calling
return 0;
}

RULES FOR RECURSIVE FUNCTION

1. In recursion, it is essential to call a function itself, otherwise recursion would not take place.
2. Only the user-defined function can be involved in the recursion. Library function cannot be
involved in recursion because their source code cannot be viewed.

47 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
3. A recursive function can be invoked by itself or by other function.
4. To stop the recursive function, it is necessary to base the recursion on test condition, and
proper terminating statement such as exit ( ) or return must be written using the if ( )
statement.

int num()
{
if (condition)
…………..
num();
}

The user-defined function main ( ) can be invoked recursively. To implement such recursion, it is
necessary to mention prototype of function main ( ).
Recursion versus iterations
Recursion Iteration
Recursion uses selection structure. Iteration uses repetition structure
Recursion is the term given to the mechanism of The block of statement is executed
defining a set or procedure in terms of itself. repeatedly using loops.
A conditional statement is required in the body of The iteration control statements itself
the function for stopping the function execution. contain statements for stopping the
iteration.
At some places, the use of recursion generates extra Iteration does not create any overhead
overhead
Recursion always applied to functions Iteration is applied to statements or loops
Recursion is slow in execution Iteration is fast in execution
Recursion reduces the size of code Iteration makes the code longer

ADVANTAGES AND DISADVANTAGES OF RECURSION


Advantages
1. Although, at most of the times, a problem can be solved without recursion, but in some
situations in programming, it is a must to use recursion.
2. The recursion is very flexible in data structure like stacks, queues, linked list and quick sort.
3. Using recursion, the length of the program can be reduced.
48 Dept. of CS, IGCAS
Methodology of Programming & C BCA/BSc CS
Language

Disadvantages

1. It requires extra storage space. The recursive calls and automatic variables are stored on the
stack. For every recursive calls, separate memory is allocated to automatic variables with
the same name.
2. If the programmer forgets to specify the exit condition in the recursive function, the
program will execute out of memory. In such a situation user has to press Ctrl+ break to
pause and s the function.
3. The recursion function is not efficient in execution speed and time.
4. If possible, try to solve a problem with iteration instead of recursion.

STORAGE CLASSES

There are two different ways to characterize variables: by data type, and by storage class.

Data type refers to the type of information represented by a variable, e.g., integer number, floating-
point number, character, etc.

Storage class refers to the performance of a variable, and its scope within the program.

There are four different storage-class specifications in C:

 Automatic variables
 External variables
 Static variables
 Register variables
1. Automatic Variables

Automatic variables are declared inside a function in which they are to be utilized. They
are created when the function is called and destroyed automatically when the function is exited,
hence the name automatic. Automatic variables are therefore private (or local) to the function in
which they are declared. Because of this property, automatic variables are also referred to as local
or internal variables.

The general form of the variable declaration statement

< Storage class specifier > < data type > < variable name > ;

49 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Example:

auto char name ;

auto int number

A variable declared inside a function without storage class specification is, by default, an automatic
variable.
Example:-
main()
{
int i;
for(i=0; i<2; i++)
stat();
}
void stat()
{
int x=0;
x=x+1;
printf(“x=%d”,x);
}
Output
x=1
x=1
x=1
2. External variables

Variables that are both alive and active throughout the entire program are known as
external variables. They are also known as global variables. Unlike local variables, global variables
can be accessed by any function in the program. External variables are declared outside a function.
The ‘extern’ keyword is used for declaring external variables.

Example:1
int number; /* global
int count=50;
variables float length
=5.5; */ main()

50 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
{

51 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
count=10; /* take the value of count=10*/

}
Function1()
{
int count=0; /* take the value of count=0*/

}
Example:2
int no;
float length;
main()
{

}
func1()
{

}
Example:3
main()
{
y=5;

}
int y;
func1()
{
y=y+1
}
In example 3, as far as main is concerned, y is not declared. So main function cannot access
the variable y. This problem can be overcome by declaring the variable with the storage class extern.

52 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
main()
{

extern int y;

}
func1()
{

extern int y;

}
int y;
Although the variable y has been defined after both the functions, the external declaration
of y inside the functions informs the compiler that y is an integer type defined somewhere else in
the program. The extern declaration does not allocate storage space for variables.

3. Static variables
The value of static variables persists until the end of the program. A variable can be declared static
using the keyword static.
static int x;
static float
y;
A static variable may be either an internal type or an external type depending on the place of
declaration. Internal static variables are those which are declared inside a function. An external
static variable is declared outside of all functions and is available to all the functions in that
program.
Example:
main ()
{
int i;
for (i=1; i<=3;i+
+) Function1 ();
}
Function1 ()
{

53 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
static int x=0; /* take the value of
x=0*/ x=x+1;
printf (“x=%d\n”, x);

54 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
}
Output
x=1
x=2
x=3
A static variable initialized only once, when the program is compiled. It is never
initialized again. During the first call to stat() x is incremented to stat(). Because x is static this
value persists and therefore the next call add another 1 to x giving it a value of 2. The value of x
becomes 3 when the third call is made.
4. Register variables
Registers are special storage areas within the computer’s central processing unit. In C, the
values of register variables are stored within the registers of the CPU. A variable can be assigned
this storage class by preceding the type declaration with the keyword register. Usually only integer
variables are assigned the register storage class.
Example:
register int a,b,c;

STRUCTURES
A structure is a collection of one or more variables of different data types, grouped together
under a single name. It is a user-defined data type because the user can decide the data types to be
included in the body of a structure. By using structures, we can make a group of variables, arrays,
pointers.
DEFINING A STRUCTURE
General syntax:
struct tag_name
{
data type
member1; data
type member2;


};
Example:
struct books
55 Dept. of CS, IGCAS
Methodology of Programming & C BCA/BSc CS
Language
{
char title[20];
char author[15];
int pages;
float price;
};
The keyword struct declares a structure to holds the details of four fields namely title, author,
pages and price. These are members of the structures. Each member may belong to different or
same data type.
DECLARING A STRUCTURE VARIABLES
A structure variable declaration is similar to the declaration of variables of any other data types. It
includes the following elements:
1. The keyword struct
2. The structure tag name.
3. List of variable names separated by commas.
4. Terminating semicolon.
For eg:
The statement
struct books book1, book2, book3;
Declares book1, book2 and book3 as variables of type struct books .
The complete declaration
struct books
{
char title[20];
char author[15];
int pages;
float price;
};
struct lib_books book1, book2, book3;
It is also allowed to combine both the structure definition and variable declaration in one statement.

struct books
{

56 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
char title[20];
char author[15];
int pages;
float price;
} book1, book2, book3;
Arrays vs Structures
Both arrays and structures are classified as structured data type. But they differ in a number of ways.
 An array is a collection of related data element of the type. Structure can have elements of
different types.
 An array is a derived data type whereas the structure is a programmer defined one.
 An array behaves like a built-in data type. All we have to do is to declare an array variable
and use it. But in the case of a structure, first we have to design and declare a data structure
before the variables of that type are declared and used.
ACCESSING STRUCTURE MEMBERS
The link between a member and a variable is established using the member operator ‘.’ which is
also known as ‘dot operator’ or ‘period operator’.
For example
Book1.price
P54. /* Example program for using a structure*/
#include< stdio.h
> void main()
{
struct student
{
int rollno;
char name[20];
char address[20];
int age;
}stud;

printf(“Enter the student


information”); printf(“Enter the
student rollno”);
57 Dept. of CS, IGCAS
Methodology of Programming & C BCA/BSc CS
Language
scanf(“%d”,&stud.rollno);

58 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
printf(“Enter the name of the
student”); scanf(“%s”, stud.name);
printf(“Enter the address of the
student”); scanf(“%s”, stud.address);
printf(“Enter the age of the
student”); scanf(“%d”, &stud.age);
printf(“Student information\n”);
printf(“student roll_number=%d\n”,
stud.rollno); printf(“student name=%s\n”,
stud.name); printf(“student Address=%s\n”,
stud.address); printf(“Age of student=%d\
n”,stud.age);
}
STRUCTURE INITIALIZATION
A structure variable can also be initialized in the way as any other data type in C.
struct student_record
{
char name[50];
int rollno;
} student= {“abc”, 25};
This assigns value abc to student.name and25 to student.rollno .
The compile time initialization of structure variable must have the following elements:
1. The keyword struct
2. The structure tag name
3. The name of variable to be declared
4. The assignment operator=.
5. A set of values for the members of the structure variable, separated by commas and enclosed in
braces.
6. A terminating semicolon.
NESTED STRUCTURES
When a structure is declared as the member of another structure, it is called as a nested structure or
structure within a structure.
Syntax
59 Dept. of CS, IGCAS
Methodology of Programming & C BCA/BSc CS
Language
struct structure-name
{
data-type member 1;
data-type member 2;
struct structure-name
{
data-type member 11;
data-type member 21;
};
};
ARRAYS OF STRUCTURES
We can declare arrays whose elements are structures. Such arrays are called arrays of structures or
structure arrays.
Syntax
struct structure-name arrayname[size];
For example, if we have a structure as shown below, we declare an array of structure as
struct student
{
char name[15];
int age;
float marks;
} student stud[3];
Here, the structure student contains 3 members such as a character variable name, an
integer variable age and a float variable mark. Then, we declare an array stud with size equal to 3.
Now it can store 3 structures, each of which having name, age and mark. The members of these
structures can be referenced as stud [0].name, stud [0].age etc.

POINTER TO STRUCTURE
We know that the pointer is a variable that holds the address of another data variable. The
variable may be of any data type, i.e. int, float or double. In the same way, we can also define
pointer to structure. Here, starting address of the member variables can be accessed. Thus, such
pointers are called structure pointers.

60 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
struct book
{
char name [20];
char author
[25]; int pages;
};
struct book *ptr;
In the above example ptr is pointer to structure book. The pointer member can be accessed
as
ptr->name
ptr->author
ptr->pages
Structure and Functions
Like variables of standard data type structure variables can be passed to the function by values or
address.
The syntax of the same is as follows:
struct book
{
char name(35);
char
author(35); int
pages;
} bl;
void main()
{
……………
…………….
show (&b1)
;
}
show (struct book *b2)
{
61 Dept. of CS, IGCAS
Methodology of Programming & C BCA/BSc CS
Language
……………

62 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
……...
}
Whenever a structure element requires passing any other function, it is essential to declare the
structure outside the main () function i.e. global.
UNION
Union is the concept borrowed from structure and therefore follow the same syntax as
structure. But they differ in terms of storage. In structures, each member has its own storage
location, whereas all the members of a union use the same location. A union can store only one
member at a time. Syntax of union definition is shown below:
union union -name
{
data-type member 1;
data-type member 2;

};
Example
union item
{
int m;
float x;
char c;
}code;
typedef

We can create new data type by using typedef. The statement typedef is to be used while defining
the new data type.
The syntax is as follows:
typedef type dataname;
Here, type is the datatype and dataname is the user-defined name for that type.
typedef int hours;
Here, hours are another name for int and now we can use hours instead of int in the program as
follows:

63 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
hours hrs;

BIT FIELDS
In C, we can specify size (in bits) of structure and union members. The idea is to
use memory efficiently when we know that the value of a field or group of fields will never
exceed a limit or is within a small range.
For example, consider the following declaration of date without the use of bit fields.

#include <stdio.h>
// A simple representation of the
date struct date
{
unsigned int d;
unsigned int
m; unsigned
int y;
};
int main()
{
printf("Size of date is %lu bytes\n", sizeof(struct
date)); struct date dt = { 31, 12, 2014 };
printf("Date is %d/%d/%d", dt.d, dt.m, dt.y);
}

Output:
Size of date is 12 bytes
Date is 31/12/2014
The above representation of ‘date’ takes 12 bytes on a compiler where an unsigned int takes
4 bytes. Since we know that the value of d is always from 1 to 31, the value of m is from 1 to 12,
we can optimize the space using bit fields.
#include <stdio.h>
// Bit field representation
64 Dept. of CS, IGCAS
Methodology of Programming & C BCA/BSc CS
Language
struct date
{
unsigned int d: 6;
unsigned int m : 5:
unsigned int y;
};
int main()
{
printf("Size of date is %lu bytes\n", sizeof(struct date));
struct date dt = { 31, 12, 2014 };
printf("Date is %d/%d/%d", dt.d, dt.m, dt.y);
}
enumerated data type(enum)
The enum in C is also known as the enumerated type. It is a user-defined data type that
consists of integer values, and it provides meaningful names to these values. The use of enum in
C makes the program easy to understand and maintain. The enum is defined by using the enum
keyword.

Syntax

enum enum_name{const1, const2,........};

enum week{sun,mon,tues,wed,thur,fri,sat};
This statement creates a user-defined data type. The keyword enum is followed by the tag
name week. The enumerators are the identifiers sun,mon,tues,wed,
thur,fri. Their values are constant unsigned integers and starts from 0. The identifier sun refers
to 0, mon to 1 and so on. The identifiers are not to be enclosed with quotation marks. Please also
note that integer constants are also not permitted.
void main()
{
enum month (Jan=1, Feb, Mar, Apr, May, June, July, Aug, Sep, Oct,
Nov, Dec); clrscr();
printf("\nJan = %d",Jan);
printf("\nFeb = $d",Feb);

65 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
printf("\nJune = %d",June);
printf("\nDec = %d",Dec );
}

OUTPUT :
Jan = 1
Feb = 2
June = 6
Dec - 12
Dynamic memory allocation in C
The concept of dynamic memory allocation in c language enables the C programmer
to allocate memory at runtime. Dynamic memory allocation in c language is possible by 4
functions of stdlib.h header file.

1. malloc()
2. calloc()
3. realloc()
4. free()

Before learning above functions, let's understand the difference between static memory
allocation and dynamic memory allocation.

static memory allocation dynamic memory allocation

Memory is allocated at compile time. Memory is allocated at run time.

Memory can't be increased while executing Memory can be increased while executing
program. program.

Used in array. Used in linked list.

malloc() Allocates single block of requested memory.

calloc() Allocates multiple block of requested memory.

66 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language

realloc() Reallocates the memory occupied by malloc() or calloc() functions.

free() Frees the dynamically allocated memory.

malloc() function in C
The malloc() function allocates single block of requested memory.
A memory block is allocated with a function called malloc( ) . In other words, the malloc ( )
function is used to allocate memory space in bytes to the variables of different data types. The
function reserves bytes of determined size and returns the base address to pointer variable.
The prototypes are declared in alloc . h and stdl b . h.
The format of the malloc( ) function is as follows:
pnt= (datatype*) malloc(given_size);
Here, from data type, compiler understands the pointer type and given size is the size to
reserve in the memory.
For example:
pnt=( int 4) malloc(20);
Here, in this declaration 20 bytes are allocated to pointer variable pnt of type int and base
address is returned to pointer pnt .
Let's see the example of malloc() function.
P55. #include<stdio.h>
#include<stdlib.h>
int main()
{
int n,i,*ptr,sum=0;
printf("Enter number of elements:
"); scanf("%d",&n);
ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc
if(ptr==NULL)
{
printf("Sorry! unable to allocate
memory"); exit(0);
}

67 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
printf("Enter elements of array: ");
for(i=0;i<n;++i)
{
scanf("%d",ptr+i);
sum+=*(ptr+i);
}
printf("Sum=%d",sum);
free(ptr);
return 0;
}
Output
Enter elements of array: 3
Enter elements of array: 10
10
10
Sum=30
calloc() function in C
This function is useful for allocating multiple blocks of memory. It is declared with two
arguments. The prototypes are declared in alloc.h and stdlib.h.
The format of the calloc ( ) function is as follows:
ptr=(datatype*)calloc(number, byte-
size); pnt= (int *) calloc (4/ 2) ;
The above declaration allocates four blocks of memory; each block containing two bytes.
The base address is stored in the integer pointer. This function is usually used for allocating
memory for array and structure.
The calloc ( ) can be used in place of the malloc( ) function.
P56.
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,i,*ptr,sum=0;
printf("Enter number of elements: ");
68 Dept. of CS, IGCAS
Methodology of Programming & C BCA/BSc CS
Language
scanf("%d",&n);
ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc
if(ptr==NULL)
{
printf("Sorry! unable to allocate
memory"); exit(0);
}
printf("Enter elements of array: ");
for(i=0;i<n;++i)
{
scanf("%d",ptr+i);
sum+=*(ptr+i);
}
printf("Sum=%d",sum);
free(ptr);
return 0;
}
Output
Enter elements of array: 3
Enter elements of array: 10
10
10
Sum=30
realloc() function in C
If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc()
function. In short, it changes the memory size.
The syntax of realloc() function.
ptr=realloc(ptr, new-size)

free() function in C
The memory occupied by malloc() or calloc() functions must be released by calling free() function.
Otherwise, it will consume memory until program exit.

69 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
The syntax of free() function.
free(ptr);

Memory Models
 TINY
 SMALL
 COMPACT
 MEDIUM
 LARGE
 HUGE.
TINY Model:
All segment registers are initialized with the identical value and all addressing is
accomplished using 16 bits. This means that the code, data and stack all must fit with in the same
64-KB segment. Programs are executed quickly in this case.
SMALL Model:
All codes should fit in a single 64-KB segment and all data should fit in a second 64-KB
segment. All pointers are 16 bits in length. Execution speed is same as tiny model. In the SMALL
model all code is placed in one physical segment and all data in another physical segment.
COMPACT Model:
All codes should fit in 64 KB segment, but the data can use multiple segments. However, no data
item can surpass 64 KB. All pointers to data are 32 bits, but jumps and calls can use 16 bit
addresses. There is slow access to data quick code execution.
MEDIUM Model:
All data should be fit in a single 64-KB segment; however, the code is allowed to use
multiple segments. All pointers to data are 16 bits, but all jumps and calls require 32-bit addresses.
Fast access to data is observed, but slower program execution is noticed with this model.
LARGE Model:
In the LARGE model both code elements (procedures) and data elements (variables) are
allowed to use multiple segments. All pointers are 32 bits in length. However, no single data item
can exceed 64 KB. There is slower code execution.

HUGE Model:

70 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Both code and data are allowed to use multiple segments. Every pointer is of 32 bit in length.
Single data item can exceed 64 KB. There is slower code execution.
********************************************************************
********************************************************************

B.Sc/BCA DEGREE(CBCS)REGULAR/IMPROVEMENT/REAPPEARANCE
EXAMINATIONS, FEBRUARY 2023
First Semester
CS1CRT02 - METHODOLOGY OF PROGRAMMING AND C LANGUAGE
Part A
Answer any ten questions.
Each question carries 2 marks.
1. What is an Assembler?
2. List out the characteristics of a good programming language.

3. What is a selection structure?


4. What are static variables?
5. What is the output of the following
program main()
{
int x=100,y=200;
printf("%d",(x>y)? x:y);
}
6. Explain the use of getch() statement.
7. What is the use of ‘default’ in switch statement?
8. How will you initialize an array?
9. Write short note on different arithmetic operations performed on a pointer.

10. Write the syntax of function definition.


11. What are the rules to be followed while using recursion?
12. Define
a) malloc b)calloc (10×2=20)

71 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Part B
Answer any six questions.
Each question carries 5 marks.
13. What are the different classifications of programming languages?
14. What do you mean by Testing and Debugging? Explain.
15. Why do you mean by type modifier? What are the different type conversions possible in
C? Explain with example
16. Write a C program to check whether the given number is Armstrong number or not.
17. Write a C program to print the series 1, 3, 9, 27, 81 ……up to a given 'n'.
18. Write a C Program to find the transpose a matrix.
19. What is the relationship between array and pointer?

20. How an array is passed to a function explain it with example


21. Explain the difference between structure and union with example (6×5=30)
Part C
Answer any two questions.
Each question carries 15 marks.
22. a) What is a flowchart ? Explain the different symbols used in flow chart.
b) Draw a flowchart to check whether a number is prime or not.
23. Explain different tokens in C language.

24.Write a C program to check whether two strings are equal or not without using string
handling functions.
25. a) Explain storage classes in C with example
b) What is recursion? What are its different types? Write a recursive function to find the
factorial of a given integer. (2×15=30)
B.Sc/BCA DEGREE(CBCS)EXAMINATIONS, OCTOBER 2021
First Semester
METHODOLOGY OF PROGRAMMING AND C LANGUAGE
Part A
Answer any ten questions.
Each question carries 2 marks.
1. List out any three factors for selecting a programming language.
2. Draw a flow chart to find the average of three numbers.
3. List the three control structures with atleast one example for each.
4. Differentiate between keywords and identifiers.
5. What are different storage class specifiers in C?

72 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
6. Explain the use of printf() statement.
7. Draw the flow chart showing the execution of while loop in C.
8. How a matrix can be declared in C?
9. Differentiate between array of pointers and pointers to array.
10. Write the commonly used library functions in C.
11. What is external variable?
12. What is dynamic memory allocation? (10×2=20)
Part B
Answer any six questions.
Each question carries 5 marks.
13. Discuss about various programming languages with its advantages and limitations.
14. What do you mean by Testing and Debugging? Explain.
15. Discuss the precedence of arithmetic, logical and relational operators in C.
16. Discuss the various unconditional branching statements in C.
17. Write a C program to print the first n prime numbers.
18. What is array? Write a program to sort a set of numbers in ascending order.
19. Write a C program to find the number of vowels in a string.
20. What is the difference between function prototype and function definition? Explain with
an example.
21. What is recursion? Write a program to find the factorial of a number using
recursion? (6×5=30)

Part C
Answer any two questions.
Each question carries 15 marks.
22. Explain about a) Linker b) Subprogram c) Differences between compiler and interpreter.
23. Explain in detail various data types used in C with example.
24. a) Write a C program using pointer to swap the values of two integer number.
b) Explain the relation between an array and a pointer. What is wild pointer in C?
25. Explain a) structure with sample program.
b) Explain Pointers to Structure. (2×15=30)
B.Sc.DEGREE (CBCS) EXAMINATION, NOVEMBER 2019
First Semester

Core Course - CS1CRT02 - METHODOLOGY OF PROGRAMMING AND C LANGUAGE


Part A
Answer any ten questions.
Each question carries 2 marks.

73 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
1. List out the characteristics of a good programming language.
2. Create an algorithm to find the reverse of a number.
3. What is Debugging?
4. What are static variables?

5. Define the term 'type casting'.


6. Explain the use of getche() statement
7. What is a loop?
8. How a matrix can be declared in C?
9. What is meant by wild pointer?
10. What is user defined function?
11. Compare Union and Structure in C

12. Define a) malloc b) calloc. (10×2=20)


Part B
Answer any six questions.
Each question carries 5 marks.
13. Compare compiler and interpreter.
14. Explain the various control structures used in a programming language.
15. Explain various bitwise operators in C.
16. Distinguish break and continue statements with the help of examples.
17. Given are the marks of three subjects. Write a C program to display the student's grade (A
- above
90%, B - above 60%, C - above 40%) using else if ladder.
18. Write a C program to find the number of vowels in a string.

19. Explain how to pass array as argument to function with example.


20. Differentiate between call by value and call by reference with the help of an example.
21. Write a program to find the sum of n numbers using recursion. (6×5=30)
Part C
Answer any two questions.
Each question carries 15 marks.
22. Write an essay about the various types of programming languages with its advantages
and disadvantages.
23. Explain different tokens in C language.

74 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
24. a) What is an array? Explain single dimensional array b) Write a C program to insert an
item into a

given position in an array.


25. Explain different storage classes in C with example. (2×15=30)
B.Sc. DEGREE (CBCS) EXAMINATION, NOVEMBER 2019
First Semester
Core Course - CS1CRT02 - METHODOLOGY OF PROGRAMMING AND C LANGUAGE
Part A
Answer any ten questions.
Each question carries 2 marks.
1) What is an algorithm?
2) What is a pointer?
3) What are keywords?
4) What is pseudo code?
5) Define Linker?
6) What is mean by testing and debugging?
7) Briefly explain the characteristics of a good program.
8) Discuss the purpose of program planning.
9) What are enumerated data types?
10) What is a variable? What are naming rules?
11) List any three unconditional branching statements.
12) What are header files? Give examples.

Part B
Answer any six questions.
Each question carries 5 marks.
13) Discuss various bitwise operators in C.
14) What are strings? Explain 5 string handling functions.
15) What are structures in C? How is it different from Union? Give examples.
16) Discuss various arithmetic operations with pointers.
17) Explain the difference between entry controlled and exit controlled loops. Explain with
the help of example.
18) What are Language translators?
19) What is meant by dynamic memory allocation? Explain.
20) What is recursion? Explain direct and indirect recursion.
21) With the help of flowchart, explain any two decision statements in C. Give examples.

Part C
Answer any two questions.

75 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
Each question carries 15 marks.
22) Write a C program to add two square matrices.
23) Write notes on various operators in C.
24) What is a function? Discuss different types of functions. Give examples.
25) Explain in detail the various data types in C.

List of Programs

1. Write a program to find the largest among three numbers


2. Find the sum of digits of a number
3. Reverse of a number
4. Check whether an input number is Armstrong or not
5. Find the sum of first n natural numbers
6. Find ‘n’ number of Fibonacci Series.
7. Print Floyd’s Triangle.
8. Program using switch statement for displaying the day corresponding to a number.
9. Generate ‘n’ Prime number series.
10. Find the value of nPr and nCr.
11. Input five numbers into an array and find the largest and second largest among them.
12. Input ‘n’ numbers into an array and sort them in ascending order.
13. Write a program to search for a given number from an array and if it is found find
its position in the array.
14. Input five names into an array and arrange them in alphabetical order.
15. Check whether a matrix is symmetric or not
16. Find the value of trace and norm of a matrix.
17. Multiplication of two matrices.
18. Check whether a given matrix is upper triangular or not
19. Find the factorial of a number using function.
20. Input a string and check whether it is palindrome or not
21. Program using call by reference
22. Define a structure with fields Rollno, Name, Mark of three subjects and also calculate
the total mark of each student.
23. Write a program to illustrate the method of sending an entire structure as a parameter to
a function.

76 Dept. of CS, IGCAS


Methodology of Programming & C BCA/BSc CS
Language
24. Write a program using pointers to find the sum of all the elements of an array.
25. Write a program to create a structure book with members bookname, author and noofpages
and enter the details of five books and print the same.

77 Dept. of CS, IGCAS

You might also like