0% found this document useful (0 votes)
16 views78 pages

C Programming Principles and Basics

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views78 pages

C Programming Principles and Basics

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

APEX INTERNATIONAL UNIVERSITY

LECTURE NOTES

PRINCIPLES OF
PROGRAMMING

NAME: ……………………………………………………………………………………………….

REGNO: ……………………………………………………………………………………………….

LECTURER NAME: MULIRO TWAHA


UNIT I

Pseudocode: is an artificial and informal language that helps programmers develop


algorithms. Pseudocode is very similar to everyday English.

What is C?
C is a programming language developed at AT & T‟s Bell Laboratories of USA in 1972. It was
designed and written by Dennis Ritchie. Dennis Ritchie is known as the founder of c
language.

It was developed to overcome the problems of previous languages such as B, BCPL etc.

Initially, C language was developed to be used in UNIX operating system.

Features of C
1. Portability or machine independent
2. Sound and versatile language 3. Fast program
execution.
4. An extendible language.
5. Tends to be a structured language.
Historical developments of C(Background)
Year Language Developed by Remarks

1960 ALGOL International committee Too general, too abstract

1967 BCPL Martin Richards at Could deal with only specific


Cambridge university problems

1970 B Ken Thompson at AT Could deal with only specific


&T problems

1972 C Dennis Ritche at AT & Lost generality of BCPL and


T B restored

General Structure of a C program:

/* Documentation section */
/* Link section */
/* Definition section */ /*
Global declaration section */
main ()
{
Declaration part
Executable part (statements)
}
/* Sub-program section */

 The documentation section is used for displaying any information about the
program like the purpose of the program, name of the author, date and time written
etc, and this section should be enclosed within comment lines. The statements in the
documentation section are ignored by the compiler.
 The link section consists of the inclusion of header files.
 The definition section consists of macro definitions, defining constants etc,
 Anything declared in the global declaration section is accessible throughout the
program, i.e. accessible to all the functions in the program.
 main () function is mandatory for any program and it includes two parts, the
declaration part and the executable part.

 The last section, i.e. sub-program section is optional and used when we require
including user defined functions in the program.

First C Program
Before starting the abcd of C language, you need to learn how to write, compile and run the first c
program.

To write the first c program, open the C console and write the following code:

1. #include <stdio.h>
2. #include <conio.h>
3. void main () {
4. printf ("Hello C Language");
5. getch ();
6. }

#include <stdio.h> includes the standard input output library functions. The printf () function
is defined in stdio.h.

#include <conio.h> includes the console input output library functions. The getch () function is
defined in conio.h file.

void main () The main () function is the entry point of every program in c language. The void
keyword specifies that it returns no value.

printf () The printf () function is used to print data on the console.

getch () The getch () function asks for a single character. Until you press any key, it blocks the
screen.

C TOKENS: The smallest individual units are known as tokens. C has six types of tokens.
1: Identifiers

2: Keywords

3: Constants

4: Strings

5: Special Symbols
6: Operators

Identifiers:
Identifiers refer to the names of variables, constants, functions and arrays. These are user-defined
names is called Identifiers. These identifiers are defined against a set of rules.
Ex: Valid Invalid

STDNAME Return

SUB $stay

TOT_MARKS 1RECORD

_TEMP STD NAME.

Y2K

Data Types/Types:
To store data the program must reserve space which is done using datatype. A datatype is a
keyword/predefined instruction used for allocating memory for data. A data type specifies
the type of data that a variable can store such as integer, floating, character etc. It used for
declaring/defining variables or functions of different types before to use in a program.

There are 4 types of data types in C language.


Types Data Types
Basic Data Type int, char, float, double

Derived Data Type array, pointer, structure, union

Enumeration Data Type enum

Void Data Type void

Note: We call Basic or Primary data type.

The basic data types are integer-based and floating-point based. C language supports both signed
and unsigned literals. The memory size of basic data types may change according to 32- or 64-bit
operating system. Let’s see the basic data types. Its size is given according to 32-bit architecture.

Size and Ranges of Data Types with Type Qualifiers


Type Size (bytes) Range Control String

char or signed char 1 -128 to 127 %c

unsigned char 1 0 to 255 %c

int or signed int 2 -32768 to 32767 %d or %i

unsigned int 2 0 to 65535 %u

short int or signed short 1 -128 to 127 %d or %i


int

unsigned short int 1 0 to 255 %d or %i

long int or signed long int 4 -2147483648 to 2147483647 %ld

unsigned long int 4 0 to 4294967295 %lu

Float 4 3.4E-38 to 3.4E+38 %f or %g

Double 8 1.7E-308 to 1.7E+308 %lf

long double 10 3.4E-4932 to 1.1E+4932 %Lf

Variables
A variable is a name of memory location. It is used to store data. Variables are changeable,
we can change value of a variable during execution of a program. It can be reused many times.

Note: Variable are nothing but identifiers.

Rules to write variable names:


1. A variable name contains maximum of 30 characters/ Variable name
must be up to 8 characters.
2. A variable name includes alphabets and numbers, but it must start
with an alphabet.
3. It cannot accept any special characters, blank spaces except under
score( _ ).
4. It should not be a reserved word.

Ex: i rank1 MAX min Student_name StudentName


class_mark

Declaration of Variables: A variable can be used to store a value of any data type. The
declaration of variables must be done before they are used in the program. The general format for
declaring a variable.

Syntax: datatype variable-1, variable-2, ------ , variable-n;


Variables are separated by commas and declaration statement ends with a semicolon.

Ex: int x, y, z;
double a,b;
char m,n;

Assigning values to variables: values can be assigned to variables using the assignment
operator (=). The general format statement is :

Syntax: variable = constant;

Ex: x=100;
a= 12.25;
m=‟f‟;

we can also assign a value to a variable at the time of the variable is declared. The general format
of declaring and assigning value to a variable is:

Syntax : datatype variable = constant;


Ex ; int x=100;
float a=12.25;
char m=‟f‟;

Types of Variables in C

There are many types of variables in c:

1. local variable
2. global variable
3. static variable

Constants
Constants refer to fixed values that do not change during the execution of a program.

Note: constants are also called literals.


C supports several kinds of constants.

CONSTANTS

Numeric Constants Character Constants

Integer Constants Real Constants Single Character Constants String Constants

TYPES OF C CONSTANT:
1. Integer constants
2. Real or Floating point constants
3. Character constants
4. String constants
5. Backslash character constants

Escape sequences or backslash characters:


a) \n newline
b) \r carriage return
c) \t tab
d) \v vertical tab
e) \b backspace
f) \f form feed (page feed)
g) \a alert (beep)
h) \‟ single quote(„)
i) \” double quote(“)
j) \? Question mark (?)
k) \\ backslash (\)

Two ways to define constant in C


There are two ways to define constant in C programming.
1. const keyword 2.
#define preprocessor
3.
1) C const keyword
The const keyword is used to define constant in C programming.
1. const float PI=3.14;
Now, the value of PI variable can't be changed.
1. #include <stdio.h>
2. #include <conio.h>
3. void main (){
4. const float PI=3.14;
5. clrscr ();
6. printf ("The value of PI is: %f”, PI);

7. getch ();
8. }
Output:
The value of PI is: 3.140000

2) C #define pre-processor
The #define preprocessor is also used to define constant.

C#define
The #define preprocessor directive is used to define constant or micro substitution. It can use any
basic data type.
Syntax:
#define token value
Let's see an example of #define to define a constant.
#include <stdio.h>
1. #define PI 3.14
2. main () {
3. printf("%f”, PI);

4. }
Output:
3.140000

Formatted and Unformatted Console I/O Functions.

Input / Output (I/O) Functions: In „C‟ language, two types of Input/output functions are
available, and all input and output operations are carried out through function calls. Several
functions are available for input / output operations in „C‟. These functions are collectively known as
the standard i/o library.
Input: In any programming language input means to feed some data into program. This can be
given in the form of file or from command line.
Output: In any programming language output means to display some data on screen, printer or in
any file.
The Standard Files
C programming treats all the devices as files. So devices such as the display are addressed in the
same way as files and the following three files are automatically opened when a program executes
to provide access to the keyboard and screen.
Standard File File Pointer Device

Standard input stdin Keyboard

Standard output stdout Screen

Standard error stderr Your screen

OPERATORS AND EXPRESSIONS:


Operators : An operator is a Symbol that performs an operation. An operator acts some
variables are called operands to get the desired result.

Ex: a+b;
Where a,b are operands and + is the operator.

Types of Operator :
1) Arithmetic Operators.
2) Relational Operators.
3) Logical Operators.
4) Assignment Operators. 5). Unary Operators.

6) Conditional Operators.
7) Special Operators.
8) Bitwise Operators.
9) Shift Operators.
Arithmetic Operators
An arithmetic operator performs mathematical operations such as addition, subtraction and
multiplication on numerical values (constants and variables). C Program to demonstrate the
working of arithmetic operators
#include <stdio.h>
void main()
{
int a = 9,b = 4, c;

c = a+b;
printf("a+b = %d \n",c);

c = a-b; printf("a-b
= %d \n",c);

c = a*b;
printf("a*b = %d \n",c);

c=a/b;
printf("a/b = %d \n",c);

c=a%b;
printf("Remainder when a divided by b = %d \n",c);

}
Output
a+b = 13
a-b = 5
a*b = 36
a/b = 2
Remainder when a divided by b=1

Relational Operators. A relational operator checks the relationship between two operands.
If the relation is true, it returns 1; if the relation is false, it returns value 0.
Operands may be variables, constants or expressions.

Relational operators are used in decision making and loops.

Operator Meaning Example Return value


< is less than 2<9 1
<= is less than or equal to 2<=2 1
> is greater than 2>9 0
>= is greater than or equal to 3 > = 2 1
== is equal to 2==3 0
!= is not equal to 2!=2 0
// C Program to demonstrate the working of relational operators

#include <stdio.h> int main() { int a = 5, b = 5,

c = 10; printf("%d == %d = %d \n", a, b, a ==

b) ; // true printf("%d == %d = %d \n", a, c, a ==

c) ; // false printf("%d > %d = %d \n", a, b, a >

b) ; //false printf("%d > %d = %d \n", a, c, a >

c) ; //false printf("%d < %d = %d \n", a, b, a <

b) ; //false printf("%d < %d = %d \n", a, c, a <

c) ; //true printf("%d != %d = %d \n", a, b, a !=

b) ; //false printf("%d != %d = %d \n", a, c, a !=

c) ; //true printf("%d >= %d = %d \n", a, b, a >=

b) ; //true printf("%d >= %d = %d \n", a, c, a >=

c) ; //false printf("%d <= %d = %d \n", a, b, a <=

b) ; //true printf("%d <= %d = %d \n", a, c, a <=

c) ; //true return 0; }

Output

5 == 5 = 1

5 == 10 = 0

5>5=0

5 > 10 = 0

5<5=0

5 < 10 = 1

5 != 5 = 0
5 != 10 = 1

5 >= 5 = 1

5 >= 10 = 0

5 <= 5 = 1

5 <= 10 = 1

Logical Operators.

These operators are used to combine the results of two or more conditions. An expression
containing logical operator returns either 0 or 1 depending upon whether expression results true or
false. Logical operators are commonly used in decision making in C programming.
Operator Meaning Example Return value
&& Logical AND (9>2)&&(17>2) 1
|| Logical OR (9>2) || (17 = = 7) 1
! Logical NOT 29!=29 0
Logical AND : If any one condition false the complete condition becomes false.

Truth Table
Op1 Op2 Op1 && Op2
true true true
true false false
false true false
false false false

Logical OR : If any one condition true the complete condition becomes true.

Truth Table
Op1 Op2 Op1 // Op2
true true true

true false true


false true true
false false false

Logical Not : This operator reverses the value of the expression it operates on i.e, it makes a
true expression false and false expression true.

Op1 Op1 !
true false
false true
// C Program to demonstrate the working of logical operators
#include <stdio.h>

int main() { int a = 5, b = 5, c = 10, result; result

= (a = b) && (c > b); printf("(a = b) && (c > b)

equals to %d \n", result); result = (a = b) && (c <

b); printf("(a = b) && (c < b) equals to %d \n",

result); result = (a = b) || (c < b); printf("(a = b)

|| (c < b) equals to %d \n", result); result = (a != b)

|| (c < b); printf("(a != b) || (c < b) equals to %d

\n", result); result = !(a != b); printf("!(a == b)

equals to %d \n", result); result = !(a == b);

printf("!(a == b) equals to %d \n", result); return

0; }

Output

(a = b) && (c > b) equals to 1

(a = b) && (c < b) equals to 0

(a = b) || (c < b) equals to 1

(a != b) || (c < b) equals to 0

!(a != b) equals to 1

!(a == b) equals to 0

Assignment Operators. Assignment operators are used to assign a value (or) an expression
(or) a value of a variable to another variable.

Syntax : variable name=expression (or) value (or) variable

Ex : x=10;
y=a+b;
z=p;

Compound assignment operator:

„C‟ provides compound assignment operators to assign a value to variable in order to assign a new
value to a variable after performing a specified operation.

Operator Example Meaning


+= x+=y x=x+y
-= x-=y x=x-y
*= x*=y x=x*y
/= x/=y x=x/y
%= x%=y X=x%y

// C Program to demonstrate the working of assignment operators

#include

<stdio.h> int

main() { int a =

5, c; c = a;

printf("c = %d \n",

c); c += a; // c = c+a

printf("c = %d \n", c);

c -= a; // c = c-a

printf("c = %d \n", c);

c *= a; // c = c*a

printf("c = %d \n", c);

c /= a; // c = c/a

printf("c = %d \n", c);

c %= a; // c = c%a
printf("c = %d \n", c);

return 0; }

Output

c=5

c = 10

c=5

c = 25

c=5

c=0

Increment and Decrement Operators /Unary Operators:


Unary operators are having higher priority than the other operators. Unary operators, meaning
they only operate on a single operand.

Increment Operator in C Programming

1. Increment operator is used to increment the current value of variable by adding integer 1.

2. Increment operator can be applied to only variables.


3. Increment operator is denoted by ++.

We have two types of increment operator i.e Pre-Increment and Post-Increment Operator.
Pre-Increment

Pre-increment operator is used to increment the value of variable before using in the expression. In the
Pre-Increment value is first incremented and then used inside the expression.

b = ++y;

In this example suppose the value of variable „y‟ is 5 then value of variable „b‟ will be 6 because the
value of „y‟ gets modified before using it in a expression.

Post-Increment

Post-increment operator is used to increment the value of variable as soon as after executing
expression completely in which post increment is used. In the Post-Increment value is first used
in a expression and then incremented.

b = x++;

In this example suppose the value of variable „x‟ is 5 then value of variable „b‟ will be 5 because old
value of „x‟ is used.

Note:

We cannot use increment operator on the constant values because increment operator operates on
only variables. It increments the value of the variable by 1 and stores the incremented value back
to the variable

b=

++5; or

b=

5++;

The syntax of the operators is given below.

++<variable name> --<variable name>


<variable name>++ <variable name>--
The operator ++ adds 1 to the operand and – subtracts 1 from the operand. These operators in two
forms: prefix (++x) and postfix(x++).

Operator Meaning
++x Pre increment
- -x Pre decrement
x++ Post increment
x-- Post decrement

Where
1 : ++x : Pre increment, first increment and then do the operation.
2 : - -x : Pre decrement, first decrements and then do the operation. 3 : x++ : Post
increment, first do the operation and then increment.
4 : x- - : Post decrement, first do the operation and then decrement.

// C Program to demonstrate the working of increment and decrement operators


#include
<stdio.h> int
main () {
int a = 10, b = 100; float
c = 10.5, d = 100.5;
printf("++a = %d \n", ++a);
printf("--b = %d \n", --b);
printf("++c = %f \n", ++c);
printf("--d = %f \n", --d);
return 0;
}

Output
++a = 11
--b = 99
++c = 11.500000
++d = 99.500000

Postfix and Prefix Expression in Same Statement


#include<stdio.h>
#include<conio.h>
void main () {
int i = 0, j = 0;
j = i++ + ++i;

printf("%d\n", i);
printf("%d\n", j);
}

Output:
2
2

Explanation of Program

Conditional Operator/ Ternary operator: conditional operator checks the condition


and executes the statement depending of the condition.
A conditional operator is a ternary operator, that is, it works on 3 operands.
Conditional operator consists of two symbols.

1 : question mark (?).


2 : colon ( : ).

Syntax: condition ? exp1 : exp2;

It first evaluate the condition, if it is true (non-zero) then the “exp1” is


evaluated, if the condition is false (zero) then the “exp2” is evaluated.

#include
<stdio.h> int
main(){ char
February; int
days;

printf("If this year is leap year, enter 1. If not enter any integer: ");
scanf("%c",&February);
// If test condition (February == 'l') is true, days equal to 29.
// If test condition (February =='l') is false, days equal to 28.
days = (February == '1') ? 29 : 28;
printf("Number of days in February = %d",days);
return 0;
}

Output
If this year is leap year, enter 1. If not enter any integer: 1
Number of days in February = 29

Bitwise Operators:
Bitwise operators are used to manipulate the data at bit level. It operates on integers only. It may
not be applied to float. In arithmetic-logic unit (which is within the CPU), mathematical operations
like: addition, subtraction, multiplication and division are done in bit-level which makes processing
faster and saves power. To perform bit-level operations in C programming, bitwise operators are
used.
Operator Meaning
& Bitwise AND
| Bitwise OR
^ Bitwise XOR
<< Shift left
>> Shift right
~ One’s complement.

Bitwise AND operator &


The output of bitwise AND is 1 if the corresponding bits of two operands is 1. If either bit of an
operand is 0, the result of corresponding bit is evaluated to 0.
Let us suppose the bitwise AND operation of two integers 12 and 25.
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)

Bit Operation of 12 and 25


00001100
& 00011001

00001000 = 8 (In decimal)


Example #1: Bitwise AND
#include
<stdio.h>
int main () {

int a = 12, b = 25;


printf("Output = %d", a&b);
return 0;}
Output
Output =8

Bitwise OR operator |
The output of bitwise OR is 1 if at least one corresponding bit of two operands is 1. In C
Programming, bitwise OR operator is denoted by |.
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bitwise OR Operation of 12 and 25
00001100
| 00011001

00011101 = 29 (In decimal)

Example #2: Bitwise OR


#include
<stdio.h>
int main () {
int a = 12, b = 25;
printf("Output = %d", a|b);
return 0;

}
Output
Output =29

Expressions

Expressions: An expression is a combination of operators and operands which reduces to a single


value. An operator indicates an operation to be performed on data that yields a value. An operand
is a data item on which an operation is performed.

A simple expression contains only one operator.

Ex: 3+5 is a simple expression which yields a value 8, -a is also a single expression.
A complex expression contains more than one operator.
Ex: complex expression is 6+8*7.

Ex; Algebra Expressions C-expression


1 : ax2+bx+c 1: a*x*x+b*x+c
2 : a+bx 2 : a+b*x.
3 : 4ac/b 3 : 4*a*c/b.
4 : x2/y2-1 4 : x*x/y*y-1

Operator Precedence:
Arithmetic Operators are evaluated left to right using the precedence of operator when the
expression is written without the [Link] are two levels of arithmetic operators in C.

1: High Priority * / %
2 : Low Priority + -.

Arithmetic Expression evaluation is carried out using the two phases from left to right.

1 : First phase: The highest priority operator is evaluated in the 1st phase.
2 : Second Phase: The lowest priority operator is evaluated in the 2nd phase.

Ex: a=x-y/3+z*2+p/4. x=7,


y=9, z=11, p=8. a= 7-
9/3+11*2+8/4.

1st phase:
1 : a = 7-3+11*2+8/4
2 : a = 7-3+22+8/4 3: a = 7-3+22+2
2nd phase :
1 : a = 4+22+2
2 : a = 26+2
3 : a = 28

The order of evaluation can be changed by putting parenthesis in an expression.


Ex: 9-12/(3+3)*(2-1)

Whenever parentheses are used, the expressions within parantheses highest priority. If two or
more sets of parenthesis appear one after another. The expression contained in the left-most set is
evaluated first and the right-most in the last.
1st phase:
1 : 9-12/6*(2-1)
2 : 9-12/6*1
2nd phase:
1: 9-2*1
2: 9-2.
3rd phase:
1: 7.

Operator Precedence and Associativity:

Every operator has a precedence value. An expression containing more than one operator is
known as complex expression. Complex expressions are executed according to precedence of
operators.

Associativity specifies the order in which the operators are evaluated with the same precedence in
a complex expression. Associativity is of two ways, i.e. left to right and right to left. Left to right
associativity evaluates an expression starting from left and moving towards right. Right to left
associativity proceeds from right to left.

UNIT II
STATEMENTS
A statement causes the computer to carry out some definite action. There are three different
classes of statements in C:

Selection Statement/Conditional Statements/Decision Making Statements

A selection statement selects among a set of statements depending on the value of a controlling
expression. Or

Moving execution control from one place/line to another line based on condition

Or

Conditional statements control the sequence of statement execution, depending on the value of a
integer expression

C‟ language supports two conditional statements.

1: if

2: switch.

1: if Statement: The if Statement may be implemented in different forms.

1: simple if statement.

2: if –else statement

3: nested if-else statement.

4: else if ladder.

if statement.

The if statement controls conditional branching. The body of an if statement is executed if the
value of the expression is nonzero. Or if statement is used to execute the code if condition
is true. If the expression/condition is evaluated to false (0), statements inside the body of if is
skipped from execution.

Syntax: if(condition/expression)

true statement; }

statement-x;
If the condition/expression is true, then the true statement will be executed otherwise the true
statement block will be skipped and the execution will jump to the statement-x. The „true
statement‟ may be a single statement or group of statement.

If there is only one statement in the if block, then the braces are optional. But if
there is more than one statement the braces are compulsory

Flowchart

Example:

#include<stdio.h>
int main () {
a=15, b=20;
if(b>a) {
printf ("b is greater");
}

Output: b is greater

#include
<stdio.h>
int main () {
int number;

printf ("Enter an integer: ");


scanf ("%d", &number);
// Test expression is true if number is less than 0
if (number < 0)

{
printf ("You entered %d.\n", number);
}

printf ("The if statement is easy.");

return 0;
}
Output 1
Enter an integer: -2
You entered -2.
The if statement is easy.

Output 2
Enter an integer: 5
The if statement in C programming is easy.

If-else statement: The if-else statement is an extension of the simple if statement. The general
form is. The if...else statement executes some code if the test expression is true (nonzero) and
some other code if the test expression is false (0).

Syntax: if (condition)
{
true statement;
}
else
{
false statement;
}
statement-x;

If the condition is true, then the true statement and statement-x will be executed and if the
condition is false, then the false statement and statement-x is executed. Or
If test expression is true, codes inside the body of if statement is executed and, codes inside the
body of else statement is skipped.
If test expression is false, codes inside the body of else statement is executed and, codes inside the
body of if statement is skipped.

Flowchart

Example:
// Program to check whether an integer entered by the user is odd or even

#include <stdio.h>
int main ()
{
int number;
printf ("Enter an integer: ");
scanf ("%d”, &number);
// True if remainder is 0
if (number%2 == 0)
printf ("%d is an even integer.”, number);
else
printf ("%d is an odd integer.”,
number); return 0; }
Output
Enter an integer: 7
7 is an odd integer.

Nested if-else statement


When a series of decisions are involved, we may have to use more than on if-else statement in
nested form. If –else statements can also be nested inside another if block or else block or both.
If the condition-1 is false, the statement-3 and statement-x will be executed. Otherwise it
continues to perform the second test. If the condition-2 is true, the true statement-1 will be

executed otherwise the statement-2 will be executed and then the control is transferred to the
statement-x

Flowchart

Example
#include<stdio.h>
int var1, var2;
printf ("Input the value of var1:");
scanf ("%d", &var1);
printf ("Input the value of var2:");
scanf ("%d”, &var2); if (var1 !=var2)
{
printf ("var1 is not equal to var2");
//Below – if-else is nested inside another if block
if (var1 >var2)
{
printf ("var1 is greater than var2");
}
else
{
printf ("var2 is greater than var1");
}
}
else
{
printf ("var1 is equal to var2");
}

No curly braces are required in the above case, but if we have more than one statement

inside if condition, then we must enclose them inside curly braces.

5. == must be used for comparison in the expression of if condition, if you use = the expression will

always return true, because it performs assignment not comparison.

6. Other than 0(zero), all other values are considered as true.

Switch statement: when there are several options and we have to choose only one option from
the available ones, we can use switch statement. Depending on the selected option, a particular
task can be performed. A task represents one or more statements.

Syntax:
switch(expression)
{
case value-1:
statement/block-1;
break;
case value-2:
statement/block t-2;
break;
case value-3:
statement/block -3;
break;
case value-4:
statement/block -4;
break;
default:
default- statement/block t;

break;

}
Flowchart

Points to Remember

It isn’t necessary to use break after each block, but if you do not use it, all the consecutive block of
codes will get executed after the matching block.
1. int i = 1;

2. switch(i)

3. {

4. case 1:

5. printf("A"); // No break

6. case 2:

7. printf("B"); // No break

8. case 3:

9. printf("C");

break;

}
Output : A B C

The output was supposed to be only A because only the first case matches, but as there is no break

statement after the block, the next blocks are executed, until the cursor encounters a break.

default case can be placed anywhere in the switch case. Even if we don't include the default case switch

statement works.

Iteration Statements/ Loop Control Statements

How it Works

A sequence of statements are executed until a specified condition is true. This sequence of statements
to be executed is kept inside the curly braces { } known as the Loop body. After every execution of
loop body, condition is verified, and if it is found to be true the loop body is executed again. When the
condition check returns false, the loop body is not executed.
The loops in C language are used to execute a block of code or a part of the program several times.
In other words, it iterates/repeat a code or group of code many times.

Or Looping means a group of statements are executed repeatedly, until some logical condition is
satisfied.

Why use loops in C language?

Suppose that you have to print table of 2, then you need to write 10 lines of code. By using the loop
statement, you can do it by 2 or 3 lines of code only.

A looping process would include the following four steps.

1 : Initialization of a condition variable.

2 : Test the condition.

3 : Executing the body of the loop depending on the condition.

4 : Updating the condition variable.

C language provides three iterative/repetitive loops.

1 : while loop

2 : do-while loop

3 : for loop

While Loop: Syntax: variable

initialization ;

while (condition)

{ statements ; variable increment or

decrement ;

while loop can be addressed as an entry control loop. It is completed in 3 steps.

• Variable initialization. ( e.g. int x=0; )

• condition (e.g. while(x<=10))

• Variable increment or decrement ( x++ or x-- or x=x+2 )


The while loop is an entry-controlled loop statement, i.e means the condition is evaluated first
and it is true, then the body of the loop is executed. After executing the body of the loop, the
condition is once again evaluated and if it is true, the body is executed once again, the process of
repeated execution of the loop continues until the condition finally becomes false and the control is
transferred out of the loop.

Example: Program to print first 10 natural numbers


#include<stdio.h>

#include<conio.h>

void main ()

int x;

x=1; while(x<=10)

printf ("%d\t", x);

x++; } getch(); }

Output 1 2 3 4 5 6 7 8 9 10

C Program to reverse number


#include<stdio.h>

#include<conio.h>

Int main ()

int n, reverse=0, rem;

clrscr();

printf("Enter a number: ");


scanf("%d", &n);

while(n!=0)

rem=n%10;

reverse=reverse*10+rem; n/=10;

printf ("Reversed Number: %d", reverse);

getch ();

Flowchart

do-while loop
Syntax: variable initialization;

do{ statements ;

variable increment or decrement ;

} while (condition);

The do-while loop is an exit-controlled loop statement The body of the loop are executed first and
then the condition is evaluated. If it is true, then the body of the loop is executed once again. The
process of execution of body of the loop is continued until the condition finally becomes false and the
control is transferred to the statement immediately after the loop. The statements are always executed
at least once.

Flowchart

Example: Program to print first ten multiple of 5


#include<stdio.h>

#include<conio.h>

void main () {

int a, i;

a=5; i=1;

do { printf("%d\t”,

a*i); i++; }while(i

<= 10); getch(); }

Output

5 10 15 20 25 30 35 40 45 50

Example

main () {

int i=0 do

printf ("while vs do-while\n");

} while (i= =1);

printf ("Out of loop");

Output: while vs do-

while

Out of loop

For Loop:
• This is an entry controlled looping statement.

• In this loop structure, more than one variable can be initialized.

• One of the most important features of this loop is that the three actions can be taken at a time
like variable initialization, condition checking and increment/decrement.
• The for loop can be more concise and flexible than that of while and do-while loops.

Syntax: for (initialization; condition; increment/decrement)

Statements;

Example:

#include<stdio.h>

#include<conio.h> void

main ()

int x;

for (x=1; x<=10; x++)

{ printf("%d\t",x);

} getch(); }

Output

1 2 3 4 5 6 7 8 9 10

Program to calculate the sum of first n natural numbers

#include <stdio.h>

int main () {

int num, count, sum = 0;

printf ("Enter a positive integer: ");

scanf ("%d", &num);

// for loop terminates when n is less than count

for (count = 1; count <= num; ++count)

{
sum += count;

printf ("Sum = %d", sum);

return 0;}

Output

Enter a positive integer: 10

Sum = 55

Flow Chart of for Loop :


Infinitive for loop in C

If you don't initialize any variable, check condition and increment or decrement variable in for loop, it
is known as infinitive for loop. In other words, if you place 2 semicolons in for loop, it is known as
infinitive for loop.

for (; ;) {

printf("infinitive for loop example by javatpoint");

Nested for loop


We can also have nested for loops, i.e one for loop inside another for loop. nesting is often used for
handling multidimensional arrays.

Syntax:

for (initialization; condition; increment/decrement)

{ for (initialization; condition; increment/decrement)

{ statement;

}
Example: main () {

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

for (int j=0; j<=5; j++)

printf ("%d, %d”, i, j);

Example: Program to print half Pyramid of numbers

#include<stdio.h>

#include<conio.h>

void main () {

int i, j;

for(i=1; i<5;i++)
{ printf("\n");

for(j=i;j>0;j--)

printf("%d",j);

} }

getch(); }

Output

21

321

4321 54321

ARRAYS
Using Arrays in C

C supports a derived data type known as array that can be used to handle large amounts of data
(multiple values) at a time.

Definition:

An array is a data structured that can store a fixed size sequential collection of elements of same data
type.

What’s the need of an array?

Suppose you have to store marks of 50 students, one way to do this is allotting 50 variables.
So, it will be typical and hard to manage. For example, we can not access the value of these
variables with only 1 or 2 lines of code.

Another way to do this is array. By using array, we can access the elements easily. Only few
lines of code are required to access the elements of array.

Where arrays are used

• to store list of Employee or Student names,


• to store marks of a students,

• or to store list of numbers or characters etc.


Advantage of C Array

1) Code Optimization: Less code to the access the data.

2) Easy to traverse data: By using the for loop, we can retrieve the elements of an array easily. 3)
Easy to sort data: To sort the elements of array, we need a few lines of code only.

4) Random Access: We can access any element randomly using the array.

Disadvantage of Array

Fixed Size: Whatever size, we define at the time of declaration of array, we can't exceed the
limit. So, it doesn't grow the size dynamically like LinkedList Declaration of an Array

data-type variable-name[size/length of array];

For example:

int arr[10];

int arr[ 5];

Here int is the data type, arr is the name of the array and 10 is the size of array. It means array arr
can only contain 10 elements of int type. Index of an array starts from 0 to size-1 i.e first element of
arr array will be stored at arr[0] address and last element will occupy arr[9].
Initialization of an Array

After an array is declared it must be initialized. Otherwise, it will contain garbage value(any random
value). An array can be initialized at either compile time or at runtime.

Compile time Array initialization

Compile time initializtion of array elements is same as ordinary variable initialization.

Syntax : data_type array_name[size]={v1,v2,…vn/list of values ;

Example int age[5]={22,25,30,32,35};

int marks[4]={ 67, 87, 56, 77 }; //integer array initialization

float area[5]={ 23.4, 6.8, 5.5 }; //float array initialization int

marks[4]={ 67, 87, 56, 77, 59 }; //Compile time error

Different ways of initializing arrays :

1 : Initilizing all specified memory locations

2 : Partial array initialization.

3 : Intilization without size.

4 : String initialization.

1 : Initilizing all specified memory locations : If the number of values to be initialized is equal
to size of array. Arrays can be initialized at the time of declaration. Array elements can be initialized
with data items of type int,float,char, etc.

Ex: consider integer initialization

int a[5]={10,20,30,40,50}; During

compilation, 5 contiguous memory

locations are reserved by the compiler for


the variable a and all these locations are

initialized.

The array a is initialized as a[0]


a[1] a[2] a[3] a[4]
10 20 30 40 50
1000 1002 1004 1006 1008

If the size of integer is 2 bytes, 10 bytes will be allocated for the variable a. Ex :

consider character initialization

char b [8] = {„C‟, ‟O‟, ‟M‟, ‟P‟, ‟U‟,‟T‟,‟E‟,‟R‟};

The array b is initialized as

b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7]

C O M P U T E R
Other Examples: char b[5] ={„J‟,‟B‟,‟R‟,‟E‟,‟C‟,‟B‟};

//error: number of initial values are more than the size of array.

Other Example: int a[5]={10,20,30,40,50,60};

//error: Number of initial values are more than the size of array.

2 : Partial Array Initialization : partial array initialization is possible in C language. If the


number of values to be initialized is less than the size of the array, then the elements are initialized in
the order from 0th location. The remaining locations will be initialized to zero automatically.

Ex : Consider the partial initialization

int a[5]={10,15};

Even though compiler allocates 5 memory locations, using this declaration


statement, the compiler initializes first two locations with 10 and 15, the next set of memory locations
are automatically initialized to zero.
The array a is partial initialization as a[0]
a[1] a[2] a[3] a[4]
10 15 0 0 0
1000 1002 1004 1006 1008

How to access the elements of an array?


You can access elements of an array by indices/index. You can use array subscript (or index) to access
any element stored in array. Subscript starts with 0, which means array name [0] would be used to
access first element in an array.

In general array name[n-1] can be used to access nth element of an array. where n is any integer
number.

Example

float mark[5];

Suppose you declared an array mark as above. The first element is mark[0], second element is
mark[1] and so on.
Few key notes:

• Arrays have 0 as the first index not 1. In this example, mark [0]
• If the size of an array is n, to access the last element, (n-1) index is used. In this example,
mark [4]
• Suppose the starting address of mark [0] is 2120d. Then, the next address, a[1], will be 2124d,
address of a[2] will be 2128d and so on. It's because the size of a float is 4 bytes.

Input data into array

As you can see, in above example that I have used „for loop‟ and „scanf statement‟ to enter data into
array. You can use any loop for data input.

Code:

for (x=0; x<=19; x++)

{ printf ("enter the integer number %d\n", x);

scanf("%d", &num[x]);

Reading out data from an array

For example you want to read and display array elements, you can do it just by using any loop.
Suppose array is my data[20].

for (int i=0; i<20; i++)

{ printf("%d\n", my data[x]);

Example

#include<stdio.h>

#include<conio.h>

void main () {
C Page 45
PROGRAMMING
int i;

int arr [] = {2,3,4}; //Compile time array initialization

for(i=0 ; i<3 ; i++) {

printf ("%d\t”, arr[i]);

} getch ();}

Output

2 3 4

Example

1. include <stdio.h>
2. #include <conio.h>
3. void main(){
4. int i=0;
5. int marks [5]={20,30,40,50,60};//declaration and initialization of array 6. clrscr();
7.
8. //traversal of array
9. for(i=0; i<5;i++){
10. printf ("%d \n”, marks[i]); 11. }
12.
13. getch();
14. }

Output
20
30
40
50
60

Runtime Array initialization

An array can also be initialized at runtime using scanf() function. This approach is usually used
for initializing large array, or to initialize array with user specified values.

Example

#include<stdio.h>

#include<conio.h>

void main ()

C Page 46
PROGRAMMING
{ int arr[4];

int i, j;

printf ("Enter array element"); for(i=0;i<4;i++)

{ scanf("%d",&arr[i]); //Run time array initialization

} for(j=0;j<4;j++)

{ printf("%d\n",arr[j]);

} getch(); }

Two Dimensional Arrays


The two-dimensional array in C language is represented in the form of rows and columns, also
known as matrix. It is also known as array of arrays or list of arrays.

The two dimensional, three dimensional or other dimensional arrays are also known as
multidimensional arrays.

Declaration of two dimensional Array datatype array

name[size1][size2];

Example int

twodimen[4][3];

Example:

int a[3][4];

C Page 47
PROGRAMMING
Initialization of 2D Array int

arr[4][3]={{1,2,3},{2,3,4},{3,4,5},{4,5,6}};

Accessing Two-Dimensional Array Elements

An element in a two-dimensional array is accessed by using the subscripts, i.e., row index and
column index of the array.

Example

1. #include <stdio.h>
2. #include <conio.h>
3. void main () {
4. int i=0, j=0;
5. int arr [4][3]={{1,2,3},{2,3,4},{3,4,5},{4,5,6}};
6. clrscr ();
7. //traversing 2D array
8. for(i=0;i<4;i++){
9. for(j=0;j<3;j++){
10. printf("arr[%d] [%d] = %d \n",i,j, arr[i][j]);
11. }//end of j
12. }//end of i
13. getch();
14. }

C Page 48
PROGRAMMING
Output
arr[0][0] = 1 arr[0][1] =
2 arr[0][2] = 3 arr[1][0]
= 2 arr[1][1] = 3
arr[1][2] = 4 arr[2][0] =
3 arr[2][1] = 4 arr[2][2]
= 5 arr[3][0] = 4
arr[3][1] = 5 arr[3][2] =
6

Multidimensional Arrays
How to initialize a multidimensional array?

Initialization of a three-dimensional array.

You can initialize a three-dimensional array in a similar way like a two dimensional array. Here's an
example

int test [2][3][4] = {

{ {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} },

{ {13, 4, 56, 3}, {5, 9, 3, 5}, {3, 1, 4, 9} }

};

Example

#include <stdio.h> int

main ()

// this array can store 12 elements

int i, j, k, test[2][3][2]; printf("Enter

12 values: \n"); for(i = 0; i < 2; ++i) {

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

< 2; ++k ) { scanf("%d",

&test[i][j][k]);

C Page 49
PROGRAMMING
// Displaying values with proper index.

printf("\nDisplaying values:\n"); for(i = 0; i < 2; ++i) { for

(j = 0; j < 3; ++j) { for(k = 0; k < 2; ++k ) {

printf("test[%d][%d][%d] = %d\n", i, j, k, test[i][j][k]);

} }

return 0;}

Output

Enter 12 values:

123456789101112 Displaying

Values: test[0][0][0] = 1

test[0][0][1] = 2 test[0][1][0] = 3

test[0][1][1] = 4 test[0][2][0] = 5

test[0][2][1] = 6 test[1][0][0] = 7

test[1][0][1] = 8 test[1][1][0] = 9

test[1][1][1] = 10 test[1][2][0] =

11 test[1][2][1] = 12

STRINGS:
String Concepts

String is an array of characters that is terminated by \0 (null character). This null character
indicates the end of the string. Strings are always enclosed by double quotes (“ " ). Whereas,
character is enclosed by single quotes.

Or

In „C‟ language the group of characters, digits, and symbols enclosed within double quotation (“
" ) marks are called as string otherwise a string is an array of characters and terminated by NULL
character which is denoted by the escape sequence „\0‟.

C Strings

C Page 50
PROGRAMMING
Declaration of String: C does not support string as a data type. However, it allows us to represent
strings as character arrays. In C, a string variable is any valid C variable name and it is always declared
as an array of characters.

The general form of declaration of a string variable is :

Syntax: char string name[size];

The size determines the number of characters in the string name.

Note: In declaration of string size must be required to mention otherwise it gives an error. Ex:

char str []; // Invalid char str[0]; // Invalid char str[-1]; // Invalid char str[10];

// Valid char a[9]; //Valid

Using this declaration, the compiler allocates 9 memory locations for the variable a ranging
from 0 to 8.

0 1 2 3 4 5 6 7 8

Here, the string variable a can hold maximum of 9 characters including NULL (\0)
character.

Initializing Array string

Syntax: char string name[size]= {“string”};

Note: In Initialization of the string if the specific number of characters is not initialized it then rest of
all character will be initialized with NULL.

char str [5] ={'5','+','A'};

str[0]; ---> 5 str[1]; --->

+ str[2]; ---> A str[3];

---> NULL str[4]; --->

NULL

Note: In initialization of the string we can not initialized more than size of string elements.

Ex:

char str [2] ={'5','+','A','B'}; // Invalid

C Page 51
PROGRAMMING
Different ways of initialization can be done in various ways:

1 : Initializing locations character by character.

2 : Partial array initialization.

3 : Initialization without size.

4 : Array initialization with a string.

1 : Initializing locations character by character

Consider the following declaration with initialization,

Char b[9] ={„C‟,‟O‟,‟M‟,‟P‟,‟U‟,‟T‟,‟E‟,‟R‟};

The compiler allocates 9 memory locations ranging from 0 to 8 and these locations are
initialized with the characters in the order specified. The remaining locations are automatically
initialized to null characters.

C O M P U T E R \0

0 1 2 3 4 5 6 7 8

2 : Partial Array Initialization: If the characters to be initialized is less than the size of the array,
then the characters are stored sequentially from left to right. The remaining locations will be
initialized to NULL characters automatically.

Ex: Consider the partial initialization

int a[10]={„R‟,‟A‟,‟M‟,‟A‟ };

The compiler allocates 10 bytes for the variable a ranging from 0 to 9 and initializes
first four locations with the ASCII characters of „R‟, „A‟, „M‟, „A”. The remaining locations are
automatically filled with NULL characters (i.e., \0).

R A M A \0 \0 \0 \0 \0 \0

0 1 2 3 4 5 6 7 8 9

3 : Initialization without size : consider the declaration along with the initialization

char b[]={„C‟,‟O‟,‟M‟,‟P‟,‟U‟,‟T‟,‟E‟,‟R‟};

C Page 52
PROGRAMMING
In this declaration, The compiler will set the array size to the total number of initial
values i.e 8. The character will be stored in these memory locations in the order specified.

b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7]


C O M P U T E R

4) Array Initialization with a String: consider the declaration with string initialization.

char b [ ] = “COMPUTER”;

Here, the string length is 8 bytes. But, string size is 9 bytes. So the compiler reserves 8+1
memory locations and these locations are initialized with the characters in the order specified. The
string is terminated by \0 by the compiler.

C O M P U T E R \0

0 1 2 3 4 5 6 7 8

The string “COMPUTER” contin 8 charactes, because it is a string. It always ends with null
character. So, the array is 9 bytes (i.e string length+1 byte for null character).

Reading and Writing Strings : The „%s‟ control string can be used in scanf() statement to read a string
from the terminal and the same may be used to write string to the terminal in printf() statement.

Example: char name[10];

scanf(“%s”,name);

printf(“%s”,name);

Example:

1. #include <stdio.h>

2. void main ()

3. {

4. char ch[13]={'c', 'p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', i', „n‟, „g‟, „\0‟};

5. char ch2[13]="cprogramming";

6.

7. printf("Char Array Value is: %s\n", ch);

8. printf("String Literal Value is: %s\n", ch2);

C Page 53
PROGRAMMING
9. }

Output

Char Array Value is: cprogramming

String Literal Value is: cprogramming

Example:

#include <stdio.h> int main()

{ char name[20];

printf("Enter name: ");

scanf("%s", name);

printf("Your name is %s.",

name);

return 0; }

Output

Enter name: Dennis Ritchie

Your name is Dennis.

String Input/output Functions

The strings can be read from the keyboard and can be displayed onto the monitor using
various functions.

The various input and output functions that are associated with can be classified as

C Page 54
PROGRAMMING
Formated I/O Functions Unformated I/O Functions

scanf( print()
) getc( putc()
)
fscanf( fprintf()
) getchar( putchar(
) )
gets( puts(
) )
getch()

getche(
)

Unformated I/O Functions

1 : getchar() function : A single character can be given to the computer using „C‟ input library

function getchar().

Syntax : char variable=getchar();

The getchar() function is written in standared I/O library. It reads a single character from a
standared input device. This function do not require any arguments, through a pair of parantheses, must
follow the statements getchar().

#include<stdio.h>

#include<conio.h>

#include<ctype.h> void

main()

C Page 55
PROGRAMMING
{ char ch;

clrscr();

printf("Enter any character/digit:");

ch=getchar(); if(isalpha(ch)>0)

printf("it is a alphabet:%c\n",ch); else

if(isdigit(ch)>0) printf("it is a

digit:%c\n",ch); else

printf("it is a alphanumeric:%c\n",ch); getch();

}.

OUTPUT : Enter any character/Digit : abc

it is a alphabet:a

2 : putchar() function :The putchar() function is used to display one character at a time on the
standared output device. This function does the reverse operation of the single character input function.

Syntax : putchar(character varaiable);

#include<stdio.h>

#include<conio.h>

#include<ctype.h> void

main()

{ char ch; printf("Enter any alphabet either in lower or

uppercase:"); ch=getchar(); if(islower(ch))

putchar(toupper(ch));

else

putchar(tolower(ch)); getch();

OUTPUT :Enter any alphabet either in lower or uppercase :a

C Page 56
PROGRAMMING
A

3 : gets() : The gets() function is used to read the string (String is a group of characters) from the
standard input device (keyboard).

Syntax : gets(char type of array variable);

Ex :#include<stdio.h>

#include<conio.h> void

main()

char str[40];

clrscr();

printf("Enter String name:");

gets(str);

printf("Print the string name%s:",str);

getch();

OUTPUT : Enter the string : reddy

Print the string :reddy

4 : puts() :The puts() function is used to display the string to the standared output device (Monitor).

Syntax : puts(char type of array variable);

Program using gets() function and puts() function.

#include<stdio.h>

#include<conio.h> void

main()

{ char str[40];

puts("Enter

String name:");

C Page 57
PROGRAMMING
gets(str); puts("Print the string

name:"); puts(str); getch();

OUTPUT :Enter string name :

subbareddy

Print the string name

subbareddy

getch() function :The getch function reads a single character directly from the keyboard, without
echoing to the screen.

Syntax : int getch(); Ex :

#include<stdio.h>

void main()

{ char c;

c=getch();

getche() function :The getche() function reads a single character from the keyboard and echoes it to
the current text window.

Syntax : int getche(); Ex :

#include<stdio.h>

void main()

char c;

c=getche();

getc() function : This function is used to accept a single character from the standared input to a
character variable.

Syntax : character variable=getc();

C Page 58
PROGRAMMING
putc() function :This function is used to display a single character in a character variable to standared
output device.

Syntax : putc(character variable);

Array of Strings

String Manipulation Functions/ String Handling Functions


The various string handling functions that are supported in C language are as shown
String Function Description

strlen(str) Returns the length of the string str.

strcpy(str1,str2) Copies the string str2 to string str1

strcat(str1,str2) Append string str2 to string str1.

strlwr(str) Converts the string str to lowercase

strupr(str) Converts the string str to uppercase.

strrev(str) Reverse the string str.

strcmp(str1,str2) Compare two strings str1 and str2.

All these functions are defined in string.h header file.

1 : strlen(string) – String Length : This function is used to count and return the number of characters
present in a string.

Syntax: var=strlen(string);

Ex: Program using strlen () function

#include<stdio.h>

#include<conio.h>

#include<string.h>

void main () {

char name []="JBREC";

C Page 59
PROGRAMMING
int len1,len2; clrscr();

len1=strlen(name); len2=strlen("JBRECECE"); printf("The

string length of %s is: %d\n",name,len1); printf("The string

length of %s is: %d","JBRECECE",len2);

getch();

OUTPUT :

The string length of JBREC is : 5

The string length of JBRECECE is :8

Write a program to find the length of string

#include<stdio.h>

#include<conio.h> void

main()

char str[10]; int index; printf("Enter the

string:"); scanf("%s",str);

for(index=0;str[index]!=0;index++);

printf("The length of string is:%d",index);

getch();

OUTPUT :

Enter the string : subbareddy

The length of string is :10

2 : strcpy(string1,string2) – String Copy : This function is used to copy the contents of one string to
another string.

C Page 60
PROGRAMMING
Syntax : strcpy(string1,string2); Where

string1 : is the destination string. string

2: is the source string.

i.e the contents of string2 is assigned to the contents of string1.

Ex : Program using strcpy() function

#include<stdio.h>

#include<conio.h>

#include<string.h> void

main()

char str1[]="REDDY";

char str2[10]; strcpy(str2,str1);

printf("The string1 is :%s\n",str1);

printf("The string2 is :%s\n",str2);

strcpy(str2,str1+1); printf("The string1

is :%s\n",str1); printf("The string2 is

:%s",str2);

OUTPUT :

The string1 is : REDDY

The string2 is : REDDY

The string1 is : REDDY

The string2 is : EDDY

//Write a program to copy contents of one string to another string.

#include<stdio.h>

#include<conio.h> void main() {

C Page 61
PROGRAMMING
char str1[10],str2[20]; int

index; printf("Enter the

string\n"); scanf(“%s”,str1);

for(index=0;str1[index]!='\0';index++)

str2[index]=str1[index];

str2[index]='\0';

printf("String1 is :%s\n",str1);

printf("String2 is :%s\n",str2);

getch();

OUTPUT:

Enter the string: c programming

String1 is: c programming

String2 is: c programming

3: strlwr(string) – String Lowercase: This function is used to converts upper case letters of the string
in to lower case letters.

Syntax: strlwr(string);

#include<stdio.h>

#include<conio.h>

#include<string.h>

void main ()

{ char str [] ="JBREC";

clrscr ();

strlwr(str);

printf ("The lowercase is: %s\n”, str);

getch ();

C Page 62
PROGRAMMING
}

OUTPUT: The lowercase is: jbrec

Write a program to which converts given string in to lowercase.

#include<stdio.h>

#include<conio.h>

void main ()

char str [10];

int index;

printf ("Enter the string:"); scanf ("%s”,

str);

for (index=0; str[index]! ='\0’; index++)

if(str[index]>='A' && str[index]<='Z')

str[index]=str[index]+32;

printf("After conversion is :%s",str); getch();

OUTPUT: Enter the string: SUBBAREDDY

After conversion string is: subbareddy

4: strupr(string) – String Uppercase: This function is used to converts lower case letters of the string
in to upper case letters.

Syntax: strupr(string);

Program using strupr () function.

#include<stdio.h>

C Page 63
PROGRAMMING
#include<conio.h>

#include<string.h>

void main () { char

str[]="jbrec";

strupr(str);

printf ("Uppercase is :%s\n",str); getch();

OUTPUT: Uppercase is : JBREC

Write a program to which converts given string in to uppercase.

#include<stdio.h> #include<conio.h> void

main () { char str[10]; int index;

printf("Enter the string:");

scanf("%s",str);

for(index=0;str[index]!='\0';index++)

if(str[index]>='a' && str[index]<='z')

str[index]=str[index]-32;

printf ("After conversion is :%s",str); getch();

OUTPUT: Enter the string : subbareddy

C Page 64
PROGRAMMING
UNIT – III

FUNCTIONS:

User‐ Defined Functions

Definition: A function is a block of code/group of statements/self contained block of statements/


basic building blocks in a program that performs a particular task. It is also known as procedure or
subroutine or module, in other programming languages.

To perform any task, we can create function. A function can be called many times. It provides
modularity and code reusability.

Advantage of functions

1) Code Reusability

By creating functions in C, you can call it many times. So we don't need to write the same code again
and again.

2) Code optimization

It makes the code optimized we don't need to write much code.

3) Easily to debug the program.

Example: Suppose, you have to check 3 numbers (781, 883 and 531) whether it is prime number or
not. Without using function, you need to write the prime number logic 3 times. So, there is repetition of
code.

But if you use functions, you need to write the logic only once and you can reuse it several times.

C Page 65
PROGRAMMING
C Page 66
PROGRAMMING
Types of Functions

There are two types of functions in C programming:

1. Library Functions: are the functions which are declared in the C header files such as scanf(),
printf(), gets(), puts(), ceil(), floor() etc. You just need to include appropriate header files to use
these functions. These are already declared and defined in C libraries. oints to be
Remembered

System defined functions are declared in header files

System defined functions are implemented in .dll files. (DLL stands for Dynamic Link
Library).

To use system defined functions the respective header file must be included.

2. User-defined functions: are the functions which are created by the C programmer, so that
he/she can use it many times. It reduces complexity of a big program and optimizes the code.
Depending upon the complexity and requirement of the program, you can create as many user-
defined functions as you want.

ELEMENTS OF USER-DEFINED FUNCTINS :

In order to write an efficient user defined function, the programmer must familiar with the following
three elements.

C Page 67
PROGRAMMING
1 : Function Declaration. (Function Prototype).

2 : Function Call.

3 : Function Definition

Function Declaration. (Function Prototype).

A function declaration is the process of tells the compiler about a function name. Syntax

return type function name(parameter/argument); return

type function-name (); Ex : int add(int a,int b);

int add ();

Note: At the time of function declaration function must be terminated with ;.

Calling a function/function call

When we call any function control goes to function body and execute entire code.

Syntax : function-name(); function-name(parameter/argument);

return value/ variable = function-name(parameter/argument);

Ex : add(); // function without parameter/argument

add(a,b); // function with parameter/argument c=fun(a,b); //

function with parameter/argument and return values

Defining a function.

Defining of function is nothing but give body of function that means write logic inside function
body. Syntax return_ type function-name(parameter list) // function header.

declaration of variables; body of

function; // Function body return

statement; (expression or value) //optional

C Page 68
PROGRAMMING
Eg: int add( int x, int y) int add( int x, int y)

{ {

int z; ( or ) return ( x + y );

z = x + y; }

return z;

The execution of a C program begins from the main() function.

When the compiler encounters functionName(); inside the main function, control of the program
jumps to void functionName()

And, the compiler starts executing the codes inside the user-defined function.

The control of the program jumps to statement next to functionName(); once all the codes inside the
function definition are executed.

Example:

C Page 69
PROGRAMMING
#include<stdio.h>

#include<conio.h>

void sum(); // declaring a function

clrsct();

int a=10,b=20, c; void sum() //

defining function

c=a+b; printf("Sum: %d",

c);

} void main() { sum(); //

calling function

Output Sum:30

Example:

#include <stdio.h> int add Numbers (int a, int b); //

function prototype int main() { int n1,n2,sum;

printf("Enters two numbers: "); scanf("%d

%d",&n1,&n2);

sum = addNumbers(n1, n2); // function call printf("sum = %d",sum);

return 0; } int addNumbers(int a,int b) // function

definition

int result; result = a+b; return result;

// return statement

C Page 70
PROGRAMMING
Return Statement

C Page 71
PROGRAMMING
Syntax of return statement

Syntax : return; // does not return any value

return(exp); // the specified exp value to calling function.

For example,
return a;
return (a+b);
The return statement terminates the execution of a function and returns a value to the calling
function. The program control is transferred to the calling function after return statement.
In the above example, the value of variable result is returned to the variable sum in
the main() function.

PARAMETERS :
parameters provides the data communication between the calling function and called function.

They are two types of parametes

or

C Page 72
PROGRAMMING
1 : Actual parameters.

2 : Formal parameters.

1 : Actual Parameters : These are the parameters transferred from the calling function (main
program) to the called function (function).

2 : Formal Parameters :These are the parameters transferred into the calling function (main
program) from the called function(function).

• The parameters specified in calling function are said to be Actual Parameters.

• The parameters declared in called function are said to be Formal Parameters.

• The value of actual parameters is always copied into formal parameters.

Ex: main ()

fun1(a , b ); //Calling function

fun1(x, y ) //called function

..... .

Where

a, b are the Actual Parameters

x, y are the Formal Parameters

PASSING PARAMETERS TO FUNCTIONS: There are two ways to pass value or data to
function in C language: call by value and call by reference. Original value is not modified in call by
value but it is modified in call by reference.

C Page 73
PROGRAMMING
The called function receives the information from the calling function through the parameters. The
variables used while invoking the calling function are called actual parameters and the variables used
in the function header of the called function are called formal parameters.

C provides two mechanisms to pass parameters to a function.

1 : Pass by value (OR) Call by value.

2 : Pass by reference (OR) Call by Reference.

1 : Pass by value (OR) Call by value :

In call by value, value being passed to the function is locally stored by the function parameter in
stack memory location. If you change the value of function parameter, it is changed for the current
function only. It will not change the value of variable inside the caller method such as main(). Or

When a function is called with actual parameters, the values of actual parameters are copied into
formal parameters. If the values of the formal parametes changes in the function, the values of the
actual parameters are not changed. This way of passing parameters is called pass by value or call by
value.

Ex :

#include<stdio.h>

#include<conio.h>

C Page 74
PROGRAMMING
void swap(int ,int );

void main() {

int i,j;

printf("Enter i and j values:");

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

printf("Before swapping:%d%d\n",i,j);

swap(i,j);

printf("After swapping:%d%d\n",i,j);

getch();

} void

swap(int a,int b)

int temp;

temp=a;

a=b;

b=temp;

Output

Enter i and j values: 10 20

Before swapping: 10 20

After swapping: 10 20

2 : Pass by reference (OR) Call by Reference : In pass by reference, a function is called with
addresses of actual parameters. In the function header, the formal parameters receive the addresses of
actual parameters. Now the formal parameters do not contain values, instead they contain addresses.
Any variable if it contains an address, it is called a pointer variable. Using pointer variables, the
values of the actual parameters can be changed. This way of passing parameters is called call by
reference or pass by reference.

Ex : #include<stdio.h>

#include<conio.h>

C Page 75
PROGRAMMING
void swap(int *,int *);

void main() {

int i,j;

printf("Enter i and j values:");

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

printf("Before swapping:%d%d\n",i,j);

swap(&i ,&j);

printf("After swapping:%d%d\n",i,j);

void swap(int *a,int *b)

int temp;

temp=*a;

*a=*b;

*b=temp;

Output

Enter i and j values: 10 20

Before swapping:10 20

After swapping: 20 10

C Page 76
PROGRAMMING

You might also like