PSC Questions Sessional
PSC Questions Sessional
ANS VARIABLES
DATA TYPES
DATA TYPES IN C ARE CATEGORIZED INTO SEVERAL TYPES. HERE’S A BRIEF OVERVIEW OF
EACH :
INT : USED TO STORE INTEGERS (WHOLE NUMBERS ). EXAMPLE: INT AGE = 25;
ARRAYS: USED TO STORE MULTIPLE VALUES OF THE SAME TYPE. EXAMPLE: INT
NUMBERS [5] = {1, 2, 3, 4, 5};
STRUCT STUDENT {
INT ID ;
FLOAT MARKS ;
};
UNION DATA {
INT I ;
FLOAT F;
CHAR STR [20];
};
ENUM :USED TO DEFINE A VARIABLE THAT CAN BE ASSIGNED ONE OUT OF A SET
OF POSSIBLE VALUES . E XAMPLE :
1. ARITHMETIC OPERATORS
THESE OPERATORS ARE USED TO PERFORM BASIC ARITHMETIC OPERATIONS .
OPERATO EXAMPL
DESCRIPTION RESULT
R E
GIVES THE SUM OF A AND
+ ADDITION A +B
B
DIFFERENCE BETWEEN A
- SUBTRACTION A - B
AND B
MULTIPLICATI
* A *B PRODUCT OF A AND B
ON
QUOTIENT OF A DIVIDED
/ DIVISION A /B
BY B
REMAINDER OF A DIVIDED
% MODULUS A %B
BY B
2. RELATIONAL OPERATORS
THESE OPERATORS COMPARE TWO VALUES.
OPERATO EXAMPL
DESCRIPTION RESULT
R E
== EQUAL TO A == B TRUE IF A EQUALS B
!= NOT EQUAL TO A != B TRUE IF A IS NOT EQUAL TO B
> GREATER THAN A >B TRUE IF A IS GREATER THAN B
< LESS THAN A <B TRUE IF A IS LESS THAN B
GREATER THAN OR TRUE IF A IS GREATER THAN OR
>= A >= B
EQUAL TO EQUAL TO B
LESS THAN OR EQUAL TRUE IF A IS LESS THAN OR EQUAL
<= A <= B
TO TO B
3. LOGICAL OPERATORS
THESE OPERATORS ARE USED TO PERFORM LOGICAL OPERATIONS .
OPERATO DESCRIPTIO EXAMPL
RESULT
R N E
LOGICAL TRUE IF BOTH A AND B
&& A && B
AND ARE TRUE
` B̀ TRUE IF EITHER A OR B
` ` LOGICAL OR
A IS TRUE
LOGICAL
! !A TRUE IF A IS FALSE
NOT
4. ASSIGNMENT OPERATORS
THESE OPERATORS ARE USED TO ASSIGN VALUES TO VARIABLES .
OPERATO EXAMPL
DESCRIPTION EXPLANATION
R E
= ASSIGNMENT A = 10 ASSIGNS VALUE 10 TO A
A +=
+= ADDITION ASSIGNMENT ADDS 10 TO A AND ASSIGNS THE RESULT TO A
10
SUBTRACTION SUBTRACTS 10 FROM A AND ASSIGNS THE
-= A -= 10
ASSIGNMENT RESULT TO A
MULTIPLICATION MULTIPLIES A BY 10 AND ASSIGNS THE RESULT
*= A *= 10
ASSIGNMENT TO A
DIVIDES A BY 10 AND ASSIGNS THE RESULT TO
/= DIVISION ASSIGNMENT A /= 10
A
A %= FINDS THE REMAINDER OF A DIVIDED BY 10
%= MODULUS ASSIGNMENT
10 AND ASSIGNS IT TO A
5. BITWISE OPERATORS
THESE OPERATORS ARE USED TO PERFORM BIT-LEVEL OPERATIONS .
OPERATO DESCRIPTI
EXAMPLE RESULT
R ON
BITWISE BITS THAT ARE 1 IN BOTH A
& A &B
AND AND B BECOME 1
BITWISE B̀ BITS THAT ARE 1 IN
` ` `A
OR EITHER A OR B BECOME 1
BITWISE BITS THAT ARE 1 IN A OR B,
^ A ^B
XOR BUT NOT BOTH , BECOME 1
BITWISE
~ ~A ALL BITS IN A ARE INVERTED
NOT
SHIFTS A'S BITS TO THE LEFT
<< LEFT SHIFT A << 2
BY 2 PLACES
RIGHT SHIFTS A'S BITS TO THE
>> A >> 2
SHIFT RIGHT BY 2 PLACES
6. MISCELLANEOUS OPERATORS
OPERATO
DESCRIPTION EXAMPLE
R
RETURNS THE SIZE OF A
SIZEOF SIZEOF (A)
VARIABLE
& ADDRESS OF &A (RETURNS THE ADDRESS OF VARIABLE A)
* POINTER *PTR (POINTER TO A VARIABLE)
(A > B) ? A : B (RETURNS A IF THE CONDITION IS
?: TERNARY OPERATOR
TRUE , OTHERWISE RETURNS B)
ANS
TY
DESCRIPTION EXAMPLE
PE
CODE IF A CONDITION IS
CODE }
TRUE
ANS 1. IF STATEMENT
THE IF STATEMENT IS USED TO EXECUTE A BLOCK OF CODE ONLY IF A
SPECIFIED CONDITION IS TRUE .
C
#INCLUDE <STDIO.H>
INT MAIN () {
INT NUM = 10;
IF (NUM > 5) {
PRINTF ("T HE NUMBER IS GREATER THAN 5\ N");
}
RETURN 0;
}
OUTPUT:
THE NUMBER IS GREATER THAN 5
2. IF-ELSE STATEMENT
THE IF-ELSE STATEMENT IS USED TO EXECUTE A BLOCK OF CODE IF A
CONDITION IS TRUE , AND ANOTHER BLOCK OF CODE IF THE CONDITION IS
FALSE .
C
#INCLUDE <STDIO.H>
INT MAIN () {
INT NUM = 3;
IF (NUM > 5) {
PRINTF ("T HE NUMBER IS GREATER THAN 5\ N");
} ELSE {
PRINTF ("T HE NUMBER IS NOT GREATER THAN 5\ N");
}
RETURN 0;
}
OUTPUT:
THE NUMBER IS NOT GREATER THAN 5
3. ELSE-IF LADDER
THE ELSE-IF LADDER IS USED TO CHECK MULTIPLE CONDITIONS ONE AFTER
ANOTHER .
C
#INCLUDE <STDIO.H>
INT MAIN () {
INT NUM = 7;
UNIT 3
Q1 EXPLAIN DECLARATION AND INITIALIZATION OF ONE-DIMENSIONAL ARRAY WITH
EXAMPLE
EXAMPLE:
C
INT NUMBERS [5];// T HIS DECLARES AN ARRAY NAMED NUMBERS CAPABLE OF
HOLDING 5 INTEGERS .
INITIALIZATION OF A ONE-DIMENSIONAL ARRAY
INITIALIZATION ASSIGNS VALUES TO AN ARRAY AT THE TIME OF DECLARATION .
METHOD 1: SPECIFY VALUES AT DECLARATION
YOU CAN INITIALIZE AN ARRAY BY LISTING THE VALUES IN CURLY BRACES {} RIGHT
AFTER THE ARRAY DECLARATION .
EXAMPLE:
C
INT NUMBERS [5] = {1, 2, 3,
ANS SEARCHING
SEARCHING REFERS TO THE PROCESS OF LOCATING A SPECIFIC ELEMENT WITHIN A
COLLECTION OF ELEMENTS ( LIKE AN ARRAY OR LIST ).
1. LINEAR SEARCH
LINEAR SEARCH CHECKS EACH ELEMENT IN THE ARRAY ONE BY ONE UNTIL THE
DESIRED ELEMENT IS FOUND OR THE END OF THE ARRAY IS REACHED .
EXAMPLE:
C
#INCLUDE <STDIO.H>
INT LINEAR S EARCH (INT ARR [], INT SIZE , INT KEY) {
FOR (INT I = 0; I < SIZE; I++) {
IF (ARR[I] == KEY) {
RETURN I ; // R ETURN THE INDEX WHERE THE ELEMENT IS FOUND
}
}
RETURN -1; // E LEMENT NOT FOUND
}
INT MAIN () {
INT NUMBERS [] = {4, 2, 7, 1, 9};
INT KEY = 7;
RETURN 0;
}
OUTPUT:
ELEMENT FOUND AT INDEX: 2
2. BINARY SEARCH
BINARY SEARCH IS MORE EFFICIENT THAN LINEAR SEARCH BUT REQUIRES THE
ARRAY TO BE SORTED . I T WORKS BY REPEATEDLY DIVIDING THE SEARCH INTERVAL
IN HALF.
EXAMPLE:
C
#INCLUDE <STDIO.H>
INT BINARY S EARCH (INT ARR [], INT SIZE , INT KEY) {
INT LOW = 0, HIGH = SIZE - 1;
IF (ARR[MID] == KEY) {
RETURN MID ; // E LEMENT FOUND
} ELSE IF (ARR[MID] < KEY) {
LOW = MID + 1; // S EARCH IN THE RIGHT HALF
} ELSE {
HIGH = MID - 1; // S EARCH IN THE LEFT HALF
}
}
RETURN -1; // E LEMENT NOT FOUND
}
INT MAIN () {
INT NUMBERS [] = {1, 2, 4, 7, 9}; // S ORTED ARRAY
INT KEY = 7;
RETURN 0;
}
OUTPUT:
ELEMENT FOUND AT INDEX: 3
SORTING
SORTING REFERS TO ARRANGING THE ELEMENTS IN A SPECIFIC ORDER, OFTEN
ASCENDING OR DESCENDING .
1. BUBBLE SORT
BUBBLE SORT REPEATEDLY STEPS THROUGH THE LIST, COMPARES ADJACENT
ELEMENTS , AND SWAPS THEM IF THEY ARE IN THE WRONG ORDER .
EXAMPLE:
C
#INCLUDE <STDIO.H>
INT MAIN () {
INT NUMBERS [] = {4, 2, 7, 1, 9};
RETURN 0;
}
OUTPUT:
SORTED ARRAY: 1 2 4 7 9
2. INSERTION SORT
INSERTION SORT BUILDS THE FINAL SORTED ARRAY ONE ITEM AT A TIME. IT’S MUCH
LESS EFFICIENT ON LARGE LISTS COMPARED TO MORE ADVANCED ALGORITHMS LIKE
QUICKSORT , HEAPSORT , OR MERGE SORT .
EXAMPLE:
C
#INCLUDE <STDIO.H>
INT MAIN () {
INT NUMBERS [] = {4, 2, 7, 1, 9};
RETURN 0;
}
OUTPUT:
SORTED ARRAY: 1 2 4 7 9
UNIT 4
Q1 WRITE A PROGRAM TO CHECK WHETHER A STRING IS PALINDROME (REVERSED) OR NOT
WITHOUT USING STRING FUNCTION .
#INCLUDE <STDIO.H>
IF (ISPALINDROME(STR)) {
PRINTF ("T HE STRING IS A PALINDROME .\N");
} ELSE {
PRINTF ("T HE STRING IS NOT A PALINDROME .\N");
}
RETURN 0;
}
Q2 EXPLAIN STRING MANIPULATION LIBRARY FUNCTIONS WITH THEIR SYNTAXES.
ANS 1. STRCPY()
COPIES ONE STRING TO ANOTHER.
SYNTAX:
C
CHAR STR 1[100], STR 2[100] = "H ELLO";
STRCPY (STR 1, STR 2); // STR1 NOW CONTAINS "HELLO"
2. STRCAT()
CONCATENATES (APPENDS) ONE STRING TO THE END OF ANOTHER.
SYNTAX:
C
CHAR STR 1[100] = "H ELLO, ", STR2[] = "WORLD!";
STRCAT (STR 1, STR 2); // STR 1 NOW CONTAINS "H ELLO , W ORLD!"
3. STRLEN()
RETURNS THE LENGTH OF A STRING.
SYNTAX:
C
CHAR STR [] = "HELLO";
SIZE _T LEN = STRLEN (STR ); // LEN IS 5
4. STRCMP()
COMPARES TWO STRINGS LEXICOGRAPHICALLY .
SYNTAX:
C
CHAR STR 1[] = "H ELLO", STR2[] = "WORLD";
INT RESULT = STRCMP(STR1, STR2); // RESULT IS NEGATIVE SINCE "HELLO" <
"WORLD"
5. STRNCPY()
COPIES A SPECIFIED NUMBER OF CHARACTERS FROM ONE STRING TO ANOTHER.
SYNTAX:
C
CHAR STR 1[100], STR 2[100] = "H ELLO";
STRNCPY (STR 1, STR 2, 3); // STR 1 NOW CONTAINS "H EL"
6. STRNCAT()
APPENDS A SPECIFIED NUMBER OF CHARACTERS FROM ONE STRING TO ANOTHER.
SYNTAX:
C
CHAR STR 1[100] = "H ELLO", STR2[] = "WORLD";
STRNCAT (STR 1, STR 2, 3); // STR 1 NOW CONTAINS "H ELWOR "
7. STRNCMP()
COMPARES A SPECIFIED NUMBER OF CHARACTERS FROM TWO STRINGS .
SYNTAX:
C
C
CHAR STR 1[] = "H ELLO", STR2[] = "H ELLY";
INT RESULT = STRNCMP(STR1, STR2, 4); // RESULT IS ZERO SINCE FIRST 4
CHARACTERS ARE THE SAME
8. STRTOK()
SPLITS A STRING INTO TOKENS BASED ON A DELIMITER.
SYNTAX:
C
C
CHAR STR []= "HELLO,WORLD,HERE";
CHAR * TOKEN = STRTOK (STR , ",");
// TOKEN NOW CONTAINS "HELLO". SUBSEQUENT CALLS SPLIT THE REST.
9. STRCHR()
SEARCHES FOR THE FIRST OCCURRENCE OF A CHARACTER IN A STRING.
SYNTAX:
C
C
CHAR STR []= "HELLO";
CHAR * PTR = STRCHR (STR , ' E'); // PTR POINTS TO " ELLO "
10. STRRCHR()
SEARCHES FOR THE LAST OCCURRENCE OF A CHARACTER IN A STRING.
SYNTAX:
C
CHAR STR []= "HELLO WORLD";
CHAR * PTR = STRRCHR (STR , ' O'); // PTR POINTS TO " ORLD"
UNIT 5
Q1 EXPLAIN IN BRIEF 1) CALL BY VALUE 2) CALL BY REFERENCE
ANS CALL BY VALUE
DEFINITION: IN CALL BY VALUE, A COPY OF THE ACTUAL PARAMETER'S VALUE IS
PASSED TO THE FUNCTION . T HE FUNCTION OPERATES ON THIS COPY, SO ANY
CHANGES MADE TO THE PARAMETER INSIDE THE FUNCTION DO NOT AFFECT THE
ORIGINAL VALUE .
EXAMPLE:
C
#INCLUDE <STDIO.H>
INT MAIN () {
INT X = 10;
MODIFY VALUE (X);
PRINTF ("X = % D\ N", X); // O UTPUT : X = 10 ( REMAINS UNCHANGED )
RETURN 0;
}
CALL BY REFERENCE
DEFINITION: IN CALL BY REFERENCE, A REFERENCE (OR POINTER) TO THE ACTUAL
PARAMETER IS PASSED TO THE FUNCTION . T HE FUNCTION OPERATES ON THE
ADDRESS OF THE PARAMETER , SO ANY CHANGES MADE TO THE PARAMETER INSIDE
THE FUNCTION DIRECTLY AFFECT THE ORIGINAL VALUE .
EXAMPLE:
C
#INCLUDE <STDIO.H>
INT MAIN () {
INT X = 10;
MODIFY VALUE (&X);
PRINTF ("X = % D\ N", X); // O UTPUT : X = 20 ( VALUE IS CHANGED )
RETURN 0;
}