3 Data Structures - 8096095
3 Data Structures - 8096095
C PROGRAMMING
The C language is derived from B language which was in turn derived from
BCPL(Basic Combined Programming Language).
C is a middle level language and generally also considered as high level language.
C is highly portable.
C is format free language.
Programs written in C are fast and efficient.
C is a structured programming language.
C is extensible as it can have user defined functions.
C is case sensitive. The keywords in the compiler are defined in lower case.
The standards for C language is given by ANSI(American National Standard Institute)
The popular C compilers used are Turbo and Borland.
Every C program should definitely have one function called main function.
The character set in C is made up of letters, digits, special characters and white spaces.
The total number of printable characters are 94.
C tokens are made up of keywords, identifiers, constants, operators and separators.
There are 32 keywords in C.
Keywords have special meaning to the compiler.
The various keywords in C are
auto break case char const continue default do
double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while
Identifiers are the names of the variables, functions and arrays.
The rules for naming the identifiers is
i. it should not be a keyword
ii. it should not have white spaces
iii. it should not have any special characters except underscore
iv. it should not start with a digit
v. its length should not exceed 31 characters.
Some invalid variable names are 4xyz, abc def, cdf*xz.
Constants have fixed values and do not change during the execution of the program
Numeric constants are made up of integer constants and real constants.
Integers can be represented in decimal, octal and hexadecimal.
The octal integer starts with 0.
The value of octal 023 is 19 in decimal.
The hexadecimal integer starts with 0x.
The value of hexadecimal 0x15 is 21.
Real numbers are also called floating point numbers.
A real number may also be represented in exponential or scientific notation.
Single character constants are represented within single quotations.
Eg. ‘a’, ‘4’
A string constant is a sequence of characters enclosed within double quotes.
Eg. “hello”, “Rama”
SAIMEDHA 1
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
C supports some special character constants which are supported in output functions like
printf. They are called escape sequences.
Constant meaning
‘\a’ audible bell
‘\n’ new line
‘\b’ back space
‘\r’ carriage return
‘\t’ horizontal tab
‘\0’ null character
‘\\’ back slash
The four fundamental data types in C are int, char, float, double.
The memory required for each data type is given by
char - 1 byte
int - 2 bytes
float - 4 bytes
double - 8 bytes
A number can be signed or unsigned. In an unsigned number all the bits are used for
magnitude where as in signed number 1 bit is used for sign.
An unsigned number is always positive.
The qualifiers like short, long are used to specify the special sizes.
The sizes of some data types with qualifiers is given below
short int - 1 byte
long int - 4 bytes
long double- 10bytes
float is single precision and has 6 digits after decimal point .
double is double precision and has 14 digits after decimal point.
User defined data types can be defined by using the keyword typedef.
They are used to improve the meaning of the programs.
enum is another user defined data type.
Eg. enum color { red, blue, green};
If a declaraction is given in this way red is assigned 0,blue is assigned 1, green is assigned 2.
The syntax for declaring a variable is
Storageclass datatype variablename;
There are 4 storage classes in C.
They are
auto - local variables with scope and life within a function
static - local variables with scope within the function and life
through out the program
register - local variable stored in register
extern - global variable
The scope of the variable is the area of program within which it is accessible.
The life of the variable is the time till the variable dies.
If a variable is declared as volatile then that variable’s value may be changed at any time by
some external sources.
The largest value a variable can hold depends on the machine.
SAIMEDHA 2
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 3
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
Pre-incrementation and post-incrementation are the same if they are used as single
statements. They differ only when used in expressions.
The ternary operator is ? : operator. It is also called conditional operator.
Syntax exp1 ? exp2 : exp3
If exp1 is true then exp2 is evaluated if not exp3 is evaluated.
Bit-wise operators are used for manipulation at bit level.
& bit-wise and ^ bit-wise exclusive or
| bit-wise or << left shift
~ one’s complement >> right shift
A comma linked list of expressions are evaluated from left to right and the value of the right
most expression is the value of the combined expression.
Value =(x=5,y=15,y-x)
The value will be assigned the value 10.
The sizeof operator returns the number of bytes the operand occupies.
Eg. sizeof(int) results a value 2.
An arithmetic expression will be evaluated from left to right using rules of precedence.
C has the facility of automatic type conversion.
Explicitly converting the data type is called type casting.
The input and output statements are scanf and printf functions.
The format specifiers used are
%d integer
%f float
%lf double
%c character
%s string
The if statement is used as a conditional statement.
The syntax of using if statement is
if(expr)
{ ……
}
The { and } is used to group some set of statements. This is called a compound block.
If the expr evaluates to non-zero value then it is true otherwise it is false.
The switch statement is used in the place of if-else ladder when there are more number of
conditions to be tested.
The various case statements are used within the switch statement.
Each case statement should end with break statement.
The goto statement is an unconditional loop.
If a loop does not terminate it is called infinite loop.
There are 3 loop statements
1. while 2. do … while3. for
The while loop is entry controlled loop and do.. while loop is exit controlled loop.
Syntax of while loop:
while(condition)
{
set of statements
SAIMEDHA 4
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
}
Syntax of do.. while is
do
{
set of statements
} while(cond);
Every statement in C is terminated by semicolon which is called statement terminator.
The syntax of for loop is
for(initialization; test condition ; increment)
{
set of statements
}
The initialization is done first, then the condition is tested and after executing the set of
statements updation is done.
Arrays : A list of items can be given one variable name using one subscript . Such a
variable is called one-dimensional array.
If an array is not initialized it will have garbage values.
An array is initialized using { and }.
An integer array can store only integer type of data.
Memory is allocated at the compilation time. It is static memory allocation.
Eg. int a[10];
An array a will be declared for 10 integers.
A memory of 20 bytes will be allocated for it.
The array declaration int c[ ]; is invalid because the size of the array is not given.
The array initialization can be given in this way
Char z[3]={‘a’,’c’,’d’};
If some are initialized and others are not initialized they are set to zero.
An array is given indices to refer various items in the array. The array index start with 0.
The definition of arrays reduces the number of variables of the same type to be defined.
A two dimensional array can be taken as an array of single dimensional arrays.
A two dimensional array is declared as follows
type arrayname[row_size][col_size];
A two dimensional is initialized similar to a single dimensional array.
C allows multi-dimensional arrays.
There is no limit on the number of dimensions.
It becomes difficult for the programmer to visualize arrays of more than 4 dimensions.
Strings:
A string is an array of characters.
A string is terminated by a special character called null character(\0).
A string is given within double quotations.
The size of the string should be equal to the maximum number of characters in the string
plus one.
C permits to initialize a character array without specifying the number of elements.
In such cases the size will be determined automatically.
Eg: char a[ ] = “hello”;
SAIMEDHA 5
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
Some of the important string functions defined in string.h header file are
strcat strcpy strcmp strlen
The function strcat() takes two strings s1 and s2 as arguments and it appends str2 at the end
of str1.
The function strcpy() takes two strings s1 and s2 as arguments and copies the second string
s2 into first string s1.
The function strcmp() takes two strings s1 and s2 as arguments and compares them as which
one precedes the other. It returns an integer. It returns 0 if both the strings are equal. It
return a negative value if str1 comes first in the dictionary. It returns a positive value if str2
comes first in the dictionary.
The function strlen() takes a string as argument and returns the length of the string
excluding \0.
Functions
C functions can be classified into two categories
i. library functions
ii. user-defined functions
Library functions are not required to be written by programmers. They are pre-defined and
placed into number of header files.
To use the library functions we have to include the corresponding header file in which the
function is declared.
Examples of header files: stdio.h dos.h conio.h stdlib.h math.h string.h
Examples of library functions : printf() scanf() getchar() cos()
User-defined Functions:
C functions are easy to define and use.
main() is a specially recognized user-defined function in C.
The use of having user defined functions is that it makes coding, debugging and testing
easier. A function when defined can be re-used number of times.
Using functions facilitates top-down modular programming.
A function is a self contained block of code that performs a particular task.
The inner details of the function are not visible to the rest of the program.
Any function can call any other function.
There are two methods of declaring the function arguments.
In the classic method or the older method the function arguments are placed separately after
the definition of the function name.
In the newer method or ANSI method the function arguments are declared along with the
function name.
Modern compilers support both the versions of function declaration.
The function declaration or function prototype tells the compiler the name of the function ,
the return type , the number and type of arguments.
The function definition has function declarator followed by function body.
Syntax of function declarator
returntype functionname( argument-list)
If this is followed by semi-colon it is called function declaration.
returntype functionname(argument-list);
SAIMEDHA 6
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
Function declaration is used before the function definition to tell the compiler about the
function so that it can be used before definition.
If the function declarator is followed by function body it is called function definition.
returntype functionname(argument-list)
{
declaration of local variables
executable statements
return statement
}
The local variables are defined only if necessary.
The functionname must follow the same rules of C variable names.
The argument-list contains valid variable names separated by commas. The list is
surrounded by parentheses.
A function may or may not return any value.
A function should return one and only one value.
There can be more than one return statement in a function.
There cannot be two return statements successively.
A function can be called by using the name of the function.
There are 3 categories of functions depending on whether arguments are present or not and
whether the value is returned or not.
1. Functions with no arguments and no return value
2. Functions with arguments and no return value
3. Functions with arguments and return value
When a function has no arguments , it does not receive any data from the calling function.
When a function does not return any value , there is no data transfer between calling
function land the called function.
If there nothing to be returned, return statement is optional.
The arguments used in the function definition are called formal arguments or dummy
arguments.
The arguments used in the calling function are called actual arguments.
The actual and formal arguments should match in number, type and order.
The default return type is integer.
C permits nesting of functions.
A function can call itself. This is called recursion.
A stack is used internally for recursion.
Recursive functions can be effectively used to solve problems where the problem is divided
into small problems of same sort.
Recursive functions take more time when compared to iterative functions.
Arrays can also be passed as arguments to functions.
To pass an array to a function, it is sufficient to list the name of the array without subscripts.
When an entire array is passed as an argument , the contents of the array are not copied into
formal array, but the information about the addresses of array elements are passed.
The names of the arguments in the prototype declaration need not be the same names given
in prototype definition.
There can be functions with variable number of arguments. It is indicated by ellipsis(…).
SAIMEDHA 7
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
Examples for the functions with variable number of arguments are printf(), scanf().
A function that returns a value can be used in arithmetic expressions.
A function cannot be present on the left hand side of the assignment statement.
A function can be placed either before or after the main function.
When more functions are used they can appear in any order.
The variables may be broadly classified depending on the place of their declaration, as
internal(local) and external(global) variables.
Internal variables are those declared within a function.
External variables are declared outside of any function.
There are 4 storage classes in C . They are
i. Automatic variables
ii. External variables
iii. Static variables
iv. Register variables.
Automatic variables created in the function when it is called and they are destroyed
automatically when the function is exited.
If the storage class is not given explicitly then by default it is taken as automatic variable.
Variables that are both alive and active throughout the entire program are known as
external variables. They are known as global variables.
Global variables can be accessed by any function in the program.
Global variables are initialized to zero by default.
The variable declared as extern can be accessed from any function.
The extern declaration does not allocate storage space for variables.
Multiple files can share a variable if it is defined as external variable.
If we declare a variable as global in two different files used by a single program, then the
linker will have a conflict as to which variable to use.
The scope of static variables is within the function .
The life of the static variables is through out the program.
A static variable is initialized only once when the program is compiled. It is never initialized
again.
A static external variable is available only within the file where it is defined while the simple
external variable can be accessed by other files.
The variables defined as register are stored in the register so that it is accessed very fast.
Only very frequently accessed variables are defined as register.
As the number of registers in the microprocessor are limited the number of register variables
should be very less.
Structures and Unions:
Structures and unions are composite data types.
A structure is used to pack items of different data types.
The concept of structures is similar to that of a record.
The structure declaration tells the format of the various items in it.
When a structure is declared memory is not allocated. Memory is allocated only
When structure variables are created.
Each member within a structure can be of different type.
The total memory allocated for a structure variable is the sum of the various data
SAIMEDHA 8
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 9
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
All files should be declared of the type FILE before they are used. Data structure of a file is
defined as FILE in the header file.
The various functions used for file operations are
fopen() creates a new file or opens existing file
fclose() closes a file which has been opened for use
getc() reads a character from a file
putc() writes a character to a file
fprintf() writes s set of data values to a file
fscanf() reads a set of data values from a file
getw() reads an integer to a file
fseek() sets the position to the desired position in the file
ftell() gives the current position in the file
rewind() sets the position to the beginning of the file
The various modes of opening a file are
R open the file for reading only
W open the file for writing only
A open the file for appending data
R+ the existing file is opened to the beginning for both reading and writing
W+ same as w except for reading and writing
A+ same as a except for reading and writing
A file must be closed as soon as all operations on it have completed.
EOF is End-Of-File marker. It is a symbolic constant defined as –1 in library files.
The feof() function is used to test for an end of file condition.
Even main() function has arguments. They are passed as arguments to the command line.
Therefore they are called command line arguments.
The two arguments of main function are argc and argv .
The variable argc is argument counter that counts the number of arguments on the command
line.
The variable argv is an argument vector that represents an array of character pointers that
point to the command line arguments.
The argument vector contains the entire command line in memory.
The process of allocating memory at runtime is called dynamic memory allocation.
Dynamic memory allocation techniques permit us to allocate additional memory or to release
unwanted space in memory.
The 4 functions that support dynamic memory allocation are
malloc() allocates requested size of bytes and returns a pointer to the first
byte of the allocated space.
calloc() allocates space for an array of elements initializes them to zero
and then returns a pointer to memory
free() frees previously allocated space
realloc() modifies the size of previously allocated space
When memory allocation fails then NULL is returned.
The malloc() function returns a pointer of type void.
malloc() function allocate a block of contiguous memory.
SAIMEDHA 10
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
calloc() allocates multiple blocks of storage, each of the same size and then sets all bytes to
zero.
Reallocation or modification of already allocated memory is done by realloc() function.
Preprocessor directives start with a special symbol #.
The preprocessor directives are used for 3 purposes.
i. macro substitution directives
ii. file inclusion directives
iii. compiler control directives
Macro substitution is a process where an identifier in a program is replaced by a predefined
string composed of one or more tokens.
This task is performed by using #define.
Macros can have arguments.
Macros can be nested.
Macros are open subroutines whereas ordinary functions are closed subroutines.
Recursion is also possible in macros.
An external file containing functions or macro definitions can be included as a part of a
program so that we need not rewrite those functions or macro definitions.
Debugging and testing are done to detect errors in the program. The compiler can detect
syntactic and semantic errors where as it cannot detect errors in the algorithm.
DATA STRUCTURES
A program is generally given by a combination of data structures and algorithms.
Program = data structures + algorithms
Data is a collection of raw facts.
It can be of different types namely numeric ,text, Boolean, date etc.
The type of data is given by the data type.
The structures which logically relate various data items in some manner are
called data structures.
The representation of a particular data structure in the memory of a computer
is called storage structure.
The representation of storage structure in auxiliary memory is called file
structure.
An algorithm is a sequence of steps to be followed to complete a particular task.
Time and space complexities are determined to compare algorithms.
Time complexity is the amount of time required to execute the algorithm.
Space complexity is the amount of space required to execute the algorithm.
Both time complexity and space complexity are given as a function of the input
size ‘n’.
There are 3 ways of representing time complexity
i. Big O notation ii. Omega notation iii. Theta notation.
Big O notation represents the upper bounds.
Omega notation represents the lower bounds.
Theta notation represents tight bounds.
SAIMEDHA 11
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 12
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
Stack is used in the process of conversion of infix expression into polish notation.
Queues
It is a list which permits deletions at one end and insertions at the other end.
The information is processed in the same order as it is received . FIFO(First In First Out) or
FCFS(First Come First Served).
A queue which operates based on priorities is called priority queue.
The two pointers Front and Rear keeps track of the queue.
The Front pointer points to the starting of the queue and it is where deletions are
performed.
The Rear pointer points to the end of the queue and it is where insertions are performed.
Memory allocated for the queue is optimally utilized if it is represented as a circular queue.
A deque (doubly-ended queue) is a linear list in which insertions and deletions are made at
both the ends.
The input-restricted deque allows insertions at only one end, while an output-restricted
deque permits deletions from only one end.
Linked lists
A list is an ordered set consisting of a variable number of elements to which insertions and
deletions can be made.
A list which displays the relationship of adjacency between elements is said to be linear.
The insertion and deletion of elements in a list is specified by the position.
In an array the time taken to access any item is the same whereas it differs from one time to
another in a linked list.
A linked list is made up of number of nodes of the same type.
Each node consists of various data items and a pointer as links.
The pointers require more amount of memory.
Linked lists can be used to represent the polynomials.
If each node has only one pointer then the list formed is linear linked list. The link stores
the address of the next node.
Insertions and deletions of nodes in a linked list is very easy known the position of the node
where it is to be inserted or from where it is to be deleted.
The last node has NULL in its link.
A linear linked list can be traversed in only one direction.
If the last node points to the first node then it is called circular linked list.
The problem with circular linked list is that it is difficult to keep track when the traversal
end. So a special node without data is placed at the starting of the list and it is called head
list.
If two pointers are placed in each node , one to store the address of successor node and other
to store predecessor node then it is called a doubly linked list.
The burden of handling the pointers is more for doubly linked lists.
In doubly linked list the traversals can takes place in both the directions.
Trees
Tree is a non-linear data structure.
Any general tree can be converted into a binary tree.
Any node in a binary tree has either 0,1 or 2 successors.
The nodes with no successors are called terminal nodes or leaves.
SAIMEDHA 13
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
Two trees are said to be similar if they have the same structure.
If a node has two successors, then the node is called parent and the other two nodes are
called left child and right child respectively.
The depth or height of the tree is the maximum number of nodes in any branch of the tree.
A tree is said to be complete if all the levels except the last level are full of nodes.
The height of a complete binary tree is log n + 1.
A binary tree can be traversed in 3 ways.
i. pre-order ii. in-order iii. post-order
In pre-order traversal
a. process the root
b. traverse left sub-tree in preorder
c. traverse right sub-tree in preorder
In in-order traversal
a. traverse the left sub-tree in in-order
b. process the root
c. traverse the right sub-tree in in-order
In post-order traversal
a. traverse the left sub-tree in post-order
b. traverse the right sub-tree in post-order
c. process the root
The average running time for searching an element in a binary search tree is O(log n).
While searching an item in the binary search tree a node is compared with one node and if
the value is less than the node we move to left sub-tree otherwise we move to right sub-tree.
Graphs
A graph is made up to set of vertices and set of edges connecting them.
The nodes are said to be adjacent or neighbors if there is an edge connecting the two
vertices.
The degree of a node u, deg(u) is the number of edges involving the node u.
The node with degree zero is called an isolated node.
Path from a node u to node v is given by a sequence of nodes.
P= (v1, v2, ….. vn)
If v1=vn then it is a closed path.
A path is said to be simple if it does not have any two nodes with repetition.
A simple closed graph is nothing but a cycle.
A graph is said to be connected if there is a path between any two of its nodes.
A tree is an acyclic graph which is connected.
A graph is said to be complete if every node is adjacent to every other node.
A complete graph with n vertices has n(n-1)/2 edges.
A graph is said to be labeled or weighted if a label or weight is given to each and every edge.
A multigraph has multiple edges and loops.
A directed graph is also called digraph and contains even direction in the edges.
The indegree of a node is the number of edges coming into that node.
The outdegree of a node is the number of edges going out of the node.
Graphs are represented by using Adjacency matrix.
A node v is reachable from node u if there is a path from u to v.
SAIMEDHA 14
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
Path matrix or Reachability matrix shows whether a particular node is reachable from
vertex to another or not.
A graph is traversed by using breadth first search and depth-first search.
Sorting and Searching
The worst case time complexity and average time complexity of bubble sort is O(n2).
The worst case time complexity of quick sort is O(n2) and average time complexity is O(n
log2n)
The worst case and average case time complexity of heap sort is O(n log2n).
The worst case and average case time complexity of insertion sort is O(n2).
The sort which is highly affected by the order in which the initial set of numbers are , is
insertion sort. If they are in the same order sorting is very faster and if they are in reverse
order then takes more time.
The worst case and average case time complexity of selection sort is O(n2).
In merge sort two lists in ascending order are merged together.
The worst case and average case time complexity of merge sort is O( n log2n ).
Radix sort is popularly used for sorting a list of large number of alphabetical words.
Hashing is method in which a key when operated on a function results in the address of that
record.
The most commonly used hashing methods are
i. division method
ii. mid-square method
iii. folding method
There is a possibility that two or more keys result in a same function value, it is called
collision.
Collision resolution can be done by either linear probing or quadratic probing or double
hashing.
SAIMEDHA 15
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
b=square(c)++;
printf(“%d”,b);
}
a. 3 b. 4 c. 9 d. 16
3. If x and y are variables declared as double x=0.005 , y = -0.01;. What is the value of
ceil(x+y) where ceil is a function to compute the ceiling of the number
a. 1 b. 0 c. 0.005 d. 0.5
4. What will be the output of the following program
main()
{
int i= 255, j=0177,k=0xa0;
printf(“%x %o %d”,i,j,k);
}
a. 255 0177 a0 b. ff 177 160 c. 255 0177 0xa0 d. error
5. In the case of ordinary int variables
a. the left most bit is reserved for sign b. the right most bit is reserved for sign
c. no bit is reserved for sign d. none
6. #define microprocessor command is used for defining
a. macros b. for loop c. symbolic constants d. both a and c
7. If i=20 and j = i << 1 then
a. i = j b. j =2i c. i= 2j d. j = i –1
8. The minimum number of temporary variables needed to swap the contents of two variables
is
a. 1 b. 2 c. 3 d.0
9. Coercion
a. takes place across assignment operator
b. takes place if an operator has operands of different data types
c. means casting d. both a and b
SAIMEDHA 16
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 17
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 18
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
#define row 3
#define col 4
int a[row][col] = { 1,2,3,4,5,6,7,8,9,10,11,12};
main()
{
int i,j,k=99;
for(i=0;i<row;i++)
for(j=0;j<col;j++)
if(a[i][j] < k)
k=a[i][j];
printf(“%d”,k);
}
a. 99 b. 12 c. 1 d. none
35. What is the output of the following program
main()
{
int a,*ptr,b,c;
a=25;
ptr=&a;
b=a+30;
c=*ptr;
printf(“%d,%d,%d”,a,b,c);
}
a. 25,25,25 b. 25,55,25 c. 25,55,55 d. none
36. What is the output of the following program
main()
{
char ch=’A’;
while(ch<=’F’)
{
switch(ch)
{
case ‘A’:
case ‘B’ :
case ‘C’ :
case ‘D’:
case ‘E’: ch++;
case ‘F’: ch++;
}
putchar(ch);
}
}
a. ABCDEF b. FG c. EFG d. CEG
37. Pick the correct one
a. while(0) { i=2; } 2 is assigned to i
SAIMEDHA 19
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 20
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 21
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
case i:
case j:
case k: printf(“All are same”); break;
}
}
a. error as no statements for first two cases
b. constant expressions required in the second and third case, we can’t use j and k
c. no error in the program
d. none of the above
48. Point out the error if any, in the following program
main()
{
int I=1;
switch(I)
{
printf(“\n Hello”);
case 1: printf(“\n case one”); break;
case 2: printf(“\n case two”); break;
case 1+3*4: printf(“\n case last”); break;
}
}
a. the first printf() can never get executed and all statements in a switch have to belong to
same case or the other
b. case label should not be an expression
c. the first printf should not exist, so error in program
d. none of the above
49. What would be the output of the following program
main()
{
int i=-3,j=2,k=0,m;
m= ++i && ++j || ++k;
printf(“%d %d %d”,i,j,k,m);
} a. –4 2 0 1 b. –4 3 0 0 c. –2 3 0 1 d. –2 3 1 1
50. What would be the output of the following program
main()
{
printf(“%d %d”,sizeof(3.14), sizeof(3.14f));
}
a. 4 4 b. garbage value c. 8 4 d. 4 8
51. By default any real number is treated as
a. float b. double c. long double d. depends upon memory model used
52. What would be the output of the program
main()
{
int arr[] ={ 12,13,14,15,16};
SAIMEDHA 22
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 23
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
{
float *p1,I=25.5;
char *p2;
p1 = &I;
p2 = &I;
}
a. executes successfully b. simply a warning
c. an error of suspicious pointer conversion d. none
59. What is the output of the following program
main()
{
char a[]=”neelesh”;
char *b=”neelesh”;
printf(“%d %d”,sizeof(a),sizeof(b));
printf(“%d %d”, sizeof(*a),sizeof(*b));
}
a. 11 2 1 1 b. 10 10 1 1 c. 1 2 10 10 d. none
60. Examine the following program
main()
{
const int x;
x=128;
printf(“%d”,x);
}
a. 128 b. error at compile time c. error at runtime d. none
61. Pick up the correct one from following
a. bool is a keyword in C b. asm is a keyword in C
c. void is a keyword in C d. none of the above
62. What would be the output of the following program
main()
{
int i=10,j=12,k,l,m;
k= i | j;
l= i & j;
m = i ^ j;
printf(“%d %d %d”,k,l,m);
}
a. 14 8 6 b. 6 8 14 c. 8 14 6 d. 6 14 8
63. Which of the following bitwise operator is used for masking a particular bit in a number
a. & b. | c. ! d. ^
64. What is the maximum memory that we can allocate by a single call of malloc()
a. 64KB b. 640KB c. 256 bytes d. infinite size
65. What would be the output of the second printf() in the following program
#include <alloc.h>
main()
SAIMEDHA 24
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
{
int *p;
p= (int *)malloc(20);
printf(“%u”,p); /*suppose this prints 1314*/
free(p);
printf(“%u”,p);
}
a. 1314 b. 1316 c. garbage d. error
66. What would be the output of the following program
main()
{
float a[]= { 12.4,2.3,4.5,6.7};
printf(“%d”,sizeof(a)/sizeof(a[0]));
}
a. 1 b. 0 c. 4 d. 2
67. What would be the output of the following program
main()
{
char str[5] = “hello”;
printf(“%s”,str);
}
a. error b. hello c. can’t say exactly d. none
68. Which of the following is true about ‘argv’
a. it is an array of character pointers
b. it is a pointer to an array of character pointers
c. you cannot use variable name other than argv
d. none
69. A C program contains the following array declaration char text[80]; and initialized with a
string “Getting a seat can be a challenging”. The output resulting from the printf(“% -
18.7s”,text);
a. Getting a seat cab be a challenging b. Getting a seat can
c. Getting d. Getting a seat can be a C
70. In the following program, how many functions are used
#include <stdio.h>
main()
{
printf(“hello friend”);
}
a. 0 b. 1 c. 2 d. all
71. What is the output of the following program
main()
{
char far *s1, *s2;
printf(“%d %d”,sizeof(s1),sizeof(s2));
}
SAIMEDHA 25
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
a. 2 2 b. 4 2 c. 4 4 d. 2 4
SAIMEDHA 26
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
main()
{
extern int fun(float);
int a;
a=fun(3.14);
printf(“%d”,a);
}
int fun(aa)
float aa;
{
return((int)aa);
}
a. 3 b. 3.14 c. 0 d. error
78. What would be the output of the following program
main()
{
struct emp
{
char name[20];
int age;
float sal;
};
struct emp e={“puli”};
printf(“%d %f”,e.age,e.sal);
}
a. 0 0.0000000 b. garbage values c. error d.0 0
79. What is the output of the following program
F();
main()
{
int (*p)() = F;
(*p)();
}
F()
{
printf(“Donot waste time”);
}
a. Donot waste time b. Donot study Enjoy c. error d. none
80. What is the output of the following program
main()
{
int I=8;
while( )
{
printf(“%d”,I++);
SAIMEDHA 27
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
}
printf(“Always be an Indian”);
}
a. Always be an Indian b. 10 c. error d. none
83. What is the output of the following program
main()
{
int a=2,b;
a>=5?b=100:b=200;
printf(“%d”,b);
}
a. 100 b.200 c. error d. garbage value
84. What is the output of the following program
main()
SAIMEDHA 28
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
{
char str[]=”Come on dance. This is the day to celebrate”;
int a=5;
printf(a>10?”%40s”:”%s”,str);
}
a. Come on dance. This is the day to celebrate b. Come
c. Come on celebrate. d. Error
SAIMEDHA 29
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
{
int I = -3,j=2,k=0,m;
m = ++I || ++j && ++k;
printf(“%d %d %d %d”,I,j,k,m);
}
a. –3 2 0 1 b. –2 2 0 1 c. –2 3 0 –1 d. none
91. What would be the output of the following program
main()
{
int I=-3,j=2,k=0,m;
m = ++ I && ++j && ++k;
printf(“%d %d %d %d”,I,j,k,m);
}
a. –3 2 0 1 b. –2 3 1 1 c. –2 2 0 1 d. none
92. What is the output of the following program
main()
{
float b=0.8;
if( b < 0.8)
printf(“Good Morning”);
else
printf(“Good Night”);
}
a. Good Morning b. Good Night c. Good Afternoon d. none
93. What is the output of the following program
main()
{
float b=0.8;
if( b < 0.8f)
printf(“Good Morning”);
else
printf(“Good Night”);
}
a. Good Morning b. Good Night c. Good Afternoon d. none
94. What is the output of the following program
main()
{
printf(“%f”,sqrt(36.0));
}
a. 6.0 b. 6 c. 6.000000 d. some absurd result
95. If you want to round off x, a float , to an int value . The correct way to do so is
a. y=(int)(x+0.5) b. y= int(x+0.5) c. y=(int) x + 0.5 d. y=(int)((int )x+0.5)
96. Which of the following is wrong
a. float type takes 4 bytes and the format specifier used for it is %f
b. double type takes 8 bytes and the format specifier used for it is %lf
SAIMEDHA 30
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
c. long double type takes 10 bytes the format specifier used for it is %Lf
d. none of the above
97. What would be the output of the following program
main()
{
printf(“%d %d %d”,sizeof(2.13f),sizeof(2.13),sizeof(2.13l));
}
a. 4 4 4 b. 4 garbage garbage c. 4 8 10 d. error
98. A float occupies 4 bytes. If the hexadecimal equivalent of each of these bytes is A,B,C and D
, then when this float is stored in memory these bytes get stored in this order
a. ABCD b. DCBA c. 0xABCD d. none
SAIMEDHA 31
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
{
printf(“hi”);
}
a. 2 b. 3 c. error d. none
103. What is the output of the following program
main()
{
int b;
b=f(20);
printf(“%d”,b);
}
int f(int a)
{
a >10 ? return(40) : return(50);
}
a. 40 b.50 c. error d. none
104. How many times the string will be printed
main()
{
printf(“I have one brother”);
main();
}
a. infinite number of times b. error
c. 65535 d. till the stack does not overflow
105. What would be output of the following program
#define SQR(x) x*x
main()
{
int a,b=10;
a=SQR(b+2);
printf(“%d”,a);
}
a. 144 b. b+2 * b+2 c.32 d. garbage
106. What is the output of the following program
#define CUBE(x) (x*x*x)
main()
{
int a,b=3;
a=CUBE(++b);
printf(“%d %d”,a,b);
}
a. 27 3 b. 64 4 c. 216 6 d. none
107. What is the type of the variable abc according to the following definition
#define FLOATPTR float *
FLOATPTR xyz,abc;
SAIMEDHA 32
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 33
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 34
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
120. What would be the output of the following program, if the array begins at address
5000.
main()
{
int abba[] = { 6,4,7,3,3};
printf(“%u %d”,abba,sizeof(abba));
}
a. 5000 2 b. 5000 10 c. 5002 10 d. error
121. What would be the output of the following program, if the array begins at the address
8000
main()
{
float fff[20]={5,4,6};
printf(“%u %u”,fff,&fff);
}
a. 8000 8000 b. 8000 5000 c. 8000 8004 d. negative values
122. What would be the output of the following program, if the array begins at the address
6000
main()
{
int abc[]={3,4,5,4};
printf(“%u %u”,abc+1,&abc+1);
}
a. 6001 6001 b. 6002 6002 c. 6002 7000 d. error
123. What would be the output of the following program
main()
{
int a[]=”hello”;
a=”no hello”;
printf(“%d”,strlent(a));
}
a. 5 b. 8 c. 9 d. error
124. What would be the output of the following program
main()
{
double x[]={2.3,34.4,4.5};
printf(“%d”, sizeof(x)/sizeof(x[1]));
}
a. 2 b. 3 c. 8 d. x is a double array it cannot be printed as integer
125. What would be the output of the following program, if the array begins at the address
8000
main()
{
int b[3][4] ={ 4,3,2,5,6,3,2,7,7,6,5,4};
printf(“%u %u”,b+1,&b+1);
SAIMEDHA 35
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
}
a. 8001 8001 b. 8002 8002 c. 8002 8024 d.8008 8024
126. What is the output of the following program
main()
{
printf(“kishore”+2);
}
a. kishore b. ki c. shore d. error
127. What is the output of the following program
main()
{
char s1[]=”right”,s2[]=”right”;
if(s1==s2)
printf(“yes”);
else
printf(“no”);
}
a. yes b. no c. error d. none
128. What would be the output of the following program in C
main()
{
char xyz[4]=”Balu”;
printf(“%s”,xyz);
}
a. Balu b. error c. cannot predict d. none
129. What is the output of the following program
main()
{
int k=5;
printf(“%d %d %d”,k==5,k<30,k=80);
}
a. 1 1 80 b. 0 0 80 c. 5 30 80 d. none
SAIMEDHA 36
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
a. a b. r c. error d. jayaram
132. What is the output of the following program
main()
{
struct student
{
char *x;
int age;
};
struct student s1 = { “mahesh”,21};
struct student s2=s1;
printf(“%s”,s2.x);
}
a. mahesh b. garbage c. error in assigning structure d. none
133. What is the output of the following program
main()
{
struct student
{
char *x;
int age;
};
struct student s1 = { “mahesh”,21};
struct student s2=s1;
if(s1==s2)
printf(“hello”);
}
a. hello b. no output
c. error in assigning structure variables d. error in comparing structure variables
134. Which of the following is false
a. a structure can have a pointer to itself
b. structures can be passed as arguments in functions
c. bit fields of structures are used to save space in structures
d. the size of all the elements in an union should be same
135. What is the output of the following program
main()
{
union a
{
int x;
char ch[2];
};
union a z1={2,3};
printf(“%d”,z1.x);
}
SAIMEDHA 37
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 38
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
printf(“%%%%%%”);
}
a. %%%%%% b. %%% c. %%%% d. error
142. What is the output of the following program
main()
{
int x=4;
printf(“x=%*d”,x,x);
}
a. x=4 4 b. x= 4 c. x=4 d.error
143. Which of the following statement is false
a. we can specify variable field width in scanf()
b. we can specify variable field width in printf()
c. a file written in text mode cannot be read in binary mode
d. we should not write a file without an intervening call to fflush(),fseek(),rewind()
144. Which of the following statement is true
a. the variable argc and argv are always local to main b. C is superset of C++
c. C is not case sensitive d. C is not free format
145. The maximum combined length of the command line arguments including the spaces
between adjacent arguments is
a. 128 characters b. 256 characters
c. 67 characters d. depends on operating system
146. If the program (xyz) is run from the command line as
xyz red green blue What is the output
main(int argc,char *argv[])
{
while(argc)
printf(“%s”,argv[--argc]);
}
a. xyz red green blue b. xyz red green c. blue green red xyz d. garbage
147. If the program (xyz) is run from the command line as
xyz red green blue What is the output
main(int argc,char *argv[])
{
printf(“%c”,*++argv[2]);
}
a. e b. r c. g d. error
148. What would be the output of the following program
main()
{
int I=32,j=0x20,k,l,m;
k=I|j;
l = I &j;
m= k^I;
printf(“%d %d %d %d %d”,I,j,k,l,m);
SAIMEDHA 39
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
}
a. 32 32 32 32 0 b. 0 0 0 0 0 c. 0 32 32 32 32 d. 32 32 32 32 32
149. What is the output of the following program
main()
{
unsigned int m=32;
printf(“%x”,~m);
}
a. ffff b. 0000 c. ffdf d. ddfd
150. Which of the following is false
a. & operator is used for checking a particular bit is on or off
b. & operator is used for turning off a particular bit
c. | operator is used for putting a particular bit on
d. left shifting rotates the left most bits to the right end
151. What is the output of the following program
main()
{
unsigned int a =0xffff;
~a;
printf(“%x”,a);
} a. ffff b. 0 c. 00ff d. error
152. What would be the output of the following program
main()
{
unsigned char I=0x80;
printf(“%d”,I<<1);
}
a. 0 b. 256 c. 100 d. none
153. What is the output of the following program
main()
{
printf(“%x”,-1>>4);
}
a. ffff b. 0fff c. 0000 d.depends on computer architecture
154. If the definition is given in the following way which is false
#define xyz char *
xyz a,b;
a. a is a character pointer b. b is a character pointer
c. b is character d. error
155. What would be the output of the following program
main()
{
int y=128;
const int x=y;
printf(“%d”,x);
SAIMEDHA 40
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
}
a. 128 b. garbage c. error d. 0
156. What is the output of the following program
int get()
{
return(30);
}
main()
{
const int x=get();
printf(“%d”,x);
}
a. 30 b. garbage c. error d. 0
157. What would be the output of the following
main()
{
const int x=5;
int *ptr;
ptr=&x;
*ptr =10;
printf(“%d”,x);
}
a. 5 b. 10 c. error d. garbage
158. What would be the output of the following
main()
{
const int x=5;
const int *ptr;
ptr=&x;
*ptr =10;
printf(“%d”,x);
}
a. 5 b. 10 c. error d. garbage
159. What is the output of the following
main()
{
const int k=9;
int * const p=&k;
printf(“%d”,*p);
}
a. 9 b. garbage c. error d. none
160. Choose the correct answer
a. use of goto enhances the logical clarity of a code
b. use of goto makes the debugging task easier
c. use goto when you want to jump out of a nested loop
SAIMEDHA 41
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 42
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
175. Which data structure is needed to convert infix notations to postfix notation
a. linear list b. queue c. tree d. stack
176. Recursive procedures are implemented by
a. queues b. stacks c. linked lists d. strings
177. A linear list of elements in which deletion can be done from one end (front) and
Insertion can take place only at the other end(rear) is known as
a. queue b. stack c. tree d. deque
178. A linear list in which elements can be added or removed at either end but not in
the middle is known as
a. queue b. deque c. stack d. tree
179. A list of integers is read in , one at a time , and a binary search tree is constructed .
next the tree is traversed and the integers are printed. Which traversal would result
in a printout which duplicates the original order of the list of integers
a. preorder b. postorder c. inorder d. none
180. The five items : A,B,C,D and E are pushed in a stack , one after the other starting
from A. The stack is popped four times and each element is inserted in a queue.
The two elements are deleted from the queue and pushed back on the stack . Now
one item is popped from the stack. The popped item is
a. A b. B c. C d. D
181. The time required to search an element in a binary search tree having n elements
is
a. O(1) b. O(log n) c. O(n) d. O(n log n)
182. Consider that n elements are to be sorted . What is the worst case time complexity
of bubble sort
a. O(1) b. O(log n ) c. O(n) d. O(n2)
183. Consider that n elements are to be sorted. What is the worst case time complexity
of shell sort
a. O(n) b. O(n log n) c. O(n1.2) d. O(n2)
184. What is the worst case time complexity of straight insertion sort algorithm to sort
n elements
a. O(n) b. O(n log n) c. O(n1.2) d. O(n2)
185. What is the worst case time complexity of binary insertion sort algorithm to sort
n elements
a. O(n) b. O(n log n) c. O(n1.2) d. O(n2)
186. If each node in a tree has value greater than every value in its left subtree and has
Value less than every value in its right subtree, the tree is known as
a. complete tree b. full binary tree c. binary search tree d. threaded tree
187. Which of the following procedure is the slowest
a. quick sort b. heap sort c. shell sort d. bubble sort
188. The infix expression A+(B-C)*D is correctly represented in prefix notation as
a. A+B-C*D b. +A*- BCD c. ABC-D*+ d. A+BC-D*
189. What is the postfix expression of the following tree
a. 655321++**+ b. 1+2*3+4*5+6 c. 12+34+56+** d.*+12*+34+56
SAIMEDHA 43
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
1 2
3 4 5 6
190. A list of data items usually words or bytes, with the accessing restriction that
elements can be added or removed at one end of the list only, is known as
a. stack b. memory c. linked list d. heap
191. In what order the elements of a pushdown stack are accessed
a. FIFO b. LIFO c. LILO d. none
192. Which of the following is a tabular listing of contents of certain registers and
Memory locations at different times during the execution of a program
a. loop program b. program trace c. subroutine program d. sorting program
193. How many values can be held by an array A(-1..m, 1..m)
a. m b. 2m c. m(m+1) d. m(m+2)
194. An undirected graph with n vertices and e edges are represented by adjacency
Matrix. What is the time required to determine whether the graph is connected
a. O(e) b. O(n) c. O(n2) d. O(e+n)
195. An undirected graph with n vertices and e edges are represented by adjacency
Matrix. What is the time required to determine the degree of any vertex
a. O(e) b. O(n) c. O(n2) d. O(e+n)
196. A directed graph with n vertices and e edges are represented by adjacency
Matrix. What is the time required to determine the in-degree of any vertex
a. O(e) b. O(n) c. O(n2) d. O(e+n)
197. Which of the following statements is false
a. every tree is bipartite graph b. a tree contains a cycle
c. a tree with n nodes contains n-1 edges d. a tree is a connected graph
198. A graph G with n nodes is bipartite if it contains
a. n edges b. a cycle of odd length c. no cycle of odd length d. none
199. In what tree, for every node the height of its left subtree and right subtree differ
atleast by one
a. binary search tree b. AVL tree c. complete tree d. threaded tree
200. Which of the following sorting method is stable
a. straight insertion sort b. binary insertion sort
c. shell sort d. heap sort
201. A complete binary tree with the property that the value at each node is at least as
SAIMEDHA 44
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 45
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234
BSNL – JTO - LICE C AND DATA STRUCTURES
SAIMEDHA 46
HYDERABAD-9494941234 TIRUPATI-9494861234 VIJAYAWADA-9494891234