Skip to content

Zoho Placement Papers 2025 - Latest C Programming Questions & Solutions

Access free Zoho placement papers 2025, latest C programming questions with solutions, detailed exam pattern, interview questions, and complete preparation guide. Download Zoho 2025 placement papers PDF.

This page contains Zoho placement papers from 2025 with the latest questions, solutions, and exam patterns. Use these current year papers to prepare effectively for Zoho placement process and interviews.

Zoho 2025 C Output Questions

Complete collection of 2025 C output prediction questions with detailed explanations

View C Output Questions →

Zoho 2025 Interview Experience

Real interview experiences from candidates who cleared 2025 Zoho placement

Read Experiences →

SectionQuestionsTimeDifficultyFocus Areas
Quantitative Aptitude10-1530-40 minEasy-MediumPercentages, ratios, basic math
C Output Prediction10-1540-50 minMedium-HardPointers, arrays, loops, recursion
C Coding2-320-30 minMediumPattern printing, array logic

Total: 25-35 questions, 90-120 minutes (pen-paper or online)

Key Changes in 2025:

  • More emphasis on modular code structure
  • Increased application complexity
  • Advanced pointer concepts (pointer to pointer, array of pointers)
  • Technical interview focuses on code review and optimization
  • Enhanced evaluation of code quality

This section contains real questions from Zoho placement papers 2025 based on candidate experiences and actual exam patterns.

Q1: Missing Number Series

Problem: Find the missing number in the series: 2, 6, 12, 20, ?

Solution: Pattern: Differences are 4, 6, 8, 10… 2 + 4 = 6 6 + 6 = 12 12 + 8 = 20 20 + 10 = 30

Answer: 30

Q2: Age Problem

Problem: If the sum of the ages of a father and his son is 60 years, and the father’s age is four times that of his son, what are their ages?

Solution: Let son’s age = x years Father’s age = 4x years x + 4x = 60 5x = 60 x = 12

Son’s age = 12 years Father’s age = 48 years

Answer: Son: 12 years, Father: 48 years

Q3: Percentage Calculation

Problem: A person sells a pen at a 25% profit. If the cost price is ₹40, what is the selling price?

Solution: Profit = 25% of ₹40 = ₹10 Selling Price = Cost Price + Profit = ₹40 + ₹10 = ₹50

Answer: ₹50

Q4: Number Reverse

Problem: If a number is reversed (e.g., 1234 → 4321), and the difference between the original and reversed number is 3087, what is the original number?

Solution: Let original number = 1000a + 100b + 10c + d Reversed = 1000d + 100c + 10b + a Difference = 999(a-d) + 90(b-c) = 3087

Testing: If a=4, d=1: 999(3) = 2997 Remaining: 3087 - 2997 = 90 So b-c = 1, possible values b=3, c=2

Answer: 4321 (original), 1234 (reversed)

Q5: Shopkeeper Profit

Problem: A shopkeeper marks his goods 20% above the cost price and allows a discount of 10%. Find his gain percent.

Solution: Let CP = ₹100 MP = ₹100 + 20% = ₹120 Discount = 10% of ₹120 = ₹12 SP = ₹120 - ₹12 = ₹108 Gain = ₹108 - ₹100 = ₹8 Gain % = (8/100) × 100 = 8%

Answer: 8%

Q6: Compound Interest Difference

Problem: If the difference between the simple interest and compound interest on a certain sum for 2 years at 5% per annum is ₹25, find the sum.

Solution: CI - SI = P[(1+R/100)² - 1] - (P×R×T/100) = P[(1.05)² - 1] - (P×5×2/100) = P[1.1025 - 1] - 0.1P = 0.1025P - 0.1P = 0.0025P 0.0025P = 25 P = ₹10,000

Answer: ₹10,000

Q7: Work Together

Problem: A man can do a piece of work in 10 days, and another man can do it in 15 days. How long will they take to complete the work together?

Solution: First man’s 1 day work = 1/10 Second man’s 1 day work = 1/15 Combined 1 day work = 1/10 + 1/15 = (3+2)/30 = 5/30 = 1/6 Time taken together = 6 days

Answer: 6 days

Q8: Rectangle Area

Problem: If the perimeter of a rectangle is 60 cm and its length is twice its breadth, find the area of the rectangle.

Solution: Let breadth = x cm, length = 2x cm Perimeter = 2(length + breadth) = 2(2x + x) = 6x = 60 x = 10 cm Length = 20 cm, Breadth = 10 cm Area = 20 × 10 = 200 cm²

Answer: 200 cm²

Q9: Journey Distance

Problem: A person travels 3/8 of a journey by train, 1/4 by bus, and the remaining 120 km by car. Find the total distance of the journey.

Solution: Let total distance = D km By train = 3D/8 By bus = D/4 = 2D/8 By car = 120 km Total: 3D/8 + 2D/8 + 120 = D 5D/8 + 120 = D 120 = D - 5D/8 = 3D/8 D = 120 × 8/3 = 320 km

Answer: 320 km

Q10: Simple Interest Triples

Problem: A sum of money triples itself in 12 years at simple interest. What is the annual rate of interest?

Solution: Let Principal = P, Amount = 3P Interest = 3P - P = 2P SI = P × R × T / 100 2P = P × R × 12 / 100 2 = 12R / 100 R = 200/12 = 16.67%

Answer: 16.67% per annum

Q11: Average Speed Return Journey

Problem: A person covers a certain distance at a speed of 50 km/h and returns at 30 km/h. What is the average speed for the entire journey?

Solution: Let distance = D km Time forward = D/50 hours Time return = D/30 hours Total time = D/50 + D/30 = D(3+5)/150 = 8D/150 = 4D/75 hours Total distance = 2D km Average speed = 2D / (4D/75) = 2D × 75/4D = 37.5 km/h

Answer: 37.5 km/h

Q12: Profit on Articles

Problem: If the cost price of 20 articles is equal to the selling price of 15 articles, find the profit percentage.

Solution: Let CP of 1 article = ₹1 CP of 20 articles = ₹20 SP of 15 articles = ₹20 (given) SP of 1 article = ₹20/15 = ₹4/3 Profit = ₹4/3 - ₹1 = ₹1/3 Profit % = (1/3)/1 × 100 = 33.33%

Answer: 33.33%

Q13: Discount Calculation

Problem: A shopkeeper gives a discount of 15% on the marked price. If the selling price is ₹425, what was the marked price?

Solution: Let MP = ₹100 Discount = 15% of ₹100 = ₹15 SP = ₹100 - ₹15 = ₹85 When SP = ₹85, MP = ₹100 When SP = ₹425, MP = (425/85) × 100 = ₹500

Answer: ₹500

Q14: Boat Speed Downstream

Problem: A man can row 7 km/h in still water. If the river is flowing at 3 km/h, how long will it take him to row 12 km downstream?

Solution: Speed in still water = 7 km/h Speed of stream = 3 km/h Downstream speed = 7 + 3 = 10 km/h Time = Distance/Speed = 12/10 = 1.2 hours = 1 hour 12 minutes

Answer: 1 hour 12 minutes

Q15: Age Difference

Problem: If the sum of the ages of A and B is 50 years, and the difference between their ages is 10 years, find their individual ages.

Solution: Let A’s age = x years, B’s age = y years x + y = 50 x - y = 10 Adding: 2x = 60, x = 30 y = 50 - 30 = 20

Answer: A: 30 years, B: 20 years

Q16: Pipe Filling

Problem: Two pipes A and B can fill a tank in 20 minutes and 30 minutes respectively. If both are opened together, how long will it take to fill the tank?

Solution: Pipe A fills 1/20 of tank per minute Pipe B fills 1/30 of tank per minute Combined = 1/20 + 1/30 = (3+2)/60 = 5/60 = 1/12 per minute Time to fill = 12 minutes

Answer: 12 minutes

Q17: Percentage Increase in Savings

Problem: A man spends 80% of his income. If his income increases by 25% and his expenditure increases by 20%, what is the percentage increase in his savings?

Solution: Let income = ₹100 Expenditure = ₹80, Savings = ₹20 New income = ₹125 New expenditure = ₹80 + 20% = ₹96 New savings = ₹125 - ₹96 = ₹29 Increase in savings = ₹29 - ₹20 = ₹9 Percentage increase = (9/20) × 100 = 45%

Answer: 45%

Q18: Train Crossing Pole

Problem: A train 150 meters long is running at a speed of 60 km/h. In how much time will it pass a pole?

Solution: Speed = 60 km/h = 60 × 5/18 = 50/3 m/s Distance = 150 meters Time = Distance/Speed = 150 / (50/3) = 150 × 3/50 = 9 seconds

Answer: 9 seconds

Q19: Sum of Natural Numbers

Problem: If the sum of the first n natural numbers is 210, what is the value of n?

Solution: Sum = n(n + 1)/2 = 210 n(n + 1) = 420 n² + n - 420 = 0 (n + 21)(n - 20) = 0 n = 20 (positive value)

Answer: 20

Q20: Compound Interest Amount

Problem: A man invests ₹10,000 in a scheme which offers 10% per annum compound interest. Find the amount after 2 years.

Solution: Principal = ₹10,000 Rate = 10%, Time = 2 years Amount = P(1 + R/100)² = 10000(1 + 10/100)² = 10000(1.1)² = 10000 × 1.21 = ₹12,100

Answer: ₹12,100

Q1: Multi-dimensional Array with Pointers

Problem: What is the output?

#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*p)[3] = arr;
printf("%d %d\n", *(*(p+1)+1), p[0][2]);
return 0;
}

Solution: p points to first row p+1 points to second row *(p+1) points to first element of second row = 4 *(p+1)+1 points to second element of second row = 5 ((p+1)+1) = arr[1][1] = 5 p[0][2] = arr[0][2] = 3

Answer: 5 3

Q6: Function Pointer

Problem: What is the output?

#include <stdio.h>
int add(int a, int b) { return a + b; }
int multiply(int a, int b) { return a * b; }
int main() {
int (*func)(int, int) = add;
printf("%d ", func(5, 3));
func = multiply;
printf("%d\n", func(5, 3));
return 0;
}

Solution: func initially points to add: func(5, 3) = add(5, 3) = 8 func then points to multiply: func(5, 3) = multiply(5, 3) = 15

Answer: 8 15

Q3: String Manipulation with Pointers

Problem: What is the output?

#include <stdio.h>
int main() {
char *str = "ZOHO2025";
printf("%s ", str + 4);
printf("%c\n", *(str + 3));
return 0;
}

Solution: str points to “ZOHO2025” str + 4 points to “2025” *(str + 3) = ‘O’

Answer: 2025 O

Q4: Post and Pre Decrement

Problem: What is the output?

#include <stdio.h>
int main() {
int x = 10;
int y = x-- - --x;
printf("%d\n", y);
return 0;
}

Solution: This is undefined behavior. The order of evaluation of x— and —x is unspecified, and modifying x twice between sequence points leads to undefined behavior.

Answer: Undefined behavior

Q5: Division by Zero

Problem: What is the output?

#include <stdio.h>
int main() {
int a = 5;
int b = 0;
int c = a / b;
printf("%d\n", c);
return 0;
}

Solution: Division by zero causes undefined behavior. The program may crash or produce unpredictable results.

Answer: Undefined behavior (runtime error)

Q6: Pointer Arithmetic Swap

Problem: What is the output?

#include <stdio.h>
int main() {
int a = 5, b = 10;
int *p = &a, *q = &b;
*p = *p * *q;
*q = *p / *q;
*p = *p / *q;
printf("%d %d\n", a, b);
return 0;
}

Solution: *p = 5 * 10 = 50 (a = 50) *q = 50 / 10 = 5 (b = 5) *p = 50 / 5 = 10 (a = 10) Final: a = 10, b = 5

Answer: 10 5

Q7: While Loop Semicolon

Problem: What is the output?

#include <stdio.h>
int main() {
int i = 0;
while (i < 5);
{
printf("%d", i);
i++;
}
return 0;
}

Solution: The semicolon after while creates an infinite loop. The code block after is never executed. The program will hang or loop indefinitely.

Answer: Infinite loop (program hangs)

Q8: Assignment vs Comparison

Problem: What is the output?

#include <stdio.h>
int main() {
int x = 10;
if (x = 5)
printf("Five");
else
printf("Not Five");
return 0;
}

Solution: x = 5 is assignment, not comparison. It assigns 5 to x and returns 5 (non-zero, true). So “Five” is printed.

Answer: Five

Q9: Uninitialized Pointer

Problem: What is the output?

#include <stdio.h>
int main() {
int *ptr;
*ptr = 10;
printf("%d\n", *ptr);
return 0;
}

Solution: ptr is uninitialized and points to garbage memory. Dereferencing it causes undefined behavior. The program may crash or print garbage value.

Answer: Undefined behavior (crash or garbage value)

Q10: Post-decrement in Expression

Problem: What is the output?

#include <stdio.h>
int main() {
int i = 4;
printf("%d ", i--);
printf("%d\n", --i);
return 0;
}

Solution: First printf: i— uses 4, then i becomes 3 Second printf: —i decrements first, i becomes 2, prints 2

Answer: 4 2

Q11: Multiple Decrements

Problem: What is the output?

#include <stdio.h>
int main() {
int x = 15;
int y = x-- + --x;
printf("%d\n", y);
return 0;
}

Solution: This is undefined behavior. Modifying x twice between sequence points (x— and —x) leads to undefined behavior.

Answer: Undefined behavior

Q12: Pointer to Pointer

Problem: What is the output?

#include <stdio.h>
int main() {
int x = 10;
int *p = &x;
int **q = &p;
printf("%d %d %d\n", x, *p, **q);
return 0;
}

Solution: x = 10 p = &x, so *p = 10 q = &p, so *q = p = &x, so **q = *p = 10

Answer: 10 10 10

Q13: Array and Pointer Equivalence

Problem: What is the output?

#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;
printf("%d %d\n", *(p + 3), arr[3]);
return 0;
}

Solution: p points to arr[0] *(p + 3) = arr[3] = 4 arr[3] = 4

Answer: 4 4

Q14: Character Array and Pointer

Problem: What is the output?

#include <stdio.h>
int main() {
char str[] = "ZOHO2025";
char *ptr = str;
printf("%c %s\n", *(ptr + 4), ptr + 5);
return 0;
}

Solution: ptr points to “ZOHO2025” *(ptr + 4) = ‘2’ ptr + 5 points to “025”

Answer: 2 025

Q15: Increment in Printf

Problem: What is the output?

#include <stdio.h>
int main() {
int a = 5;
printf("%d %d %d\n", a, a++, a--);
return 0;
}

Solution: This is undefined behavior. The order of evaluation of function arguments is unspecified, and modifying a variable multiple times between sequence points leads to undefined behavior.

Answer: Undefined behavior

Q16: Nested Ternary

Problem: What is the output?

#include <stdio.h>
int main() {
int a = 8;
int b = 12;
int c = a > b ? a : (b > 10 ? b : 0);
printf("%d\n", c);
return 0;
}

Solution: a > b is false (8 > 12 is false) So evaluate: b > 10 ? b : 0 b > 10 is true (12 > 10) So c = b = 12

Answer: 12

Q17: Pointer Arithmetic What is the output?

int arr[] = {1,2,3,4,5};
int *ptr = arr + 2;
printf("%d", *(ptr+1));

Solution:

arr points to arr[0] = 1
arr + 2 points to arr[2] = 3
ptr = arr + 2, so ptr points to arr[2] = 3
ptr+1 points to arr[3] = 4
*(ptr+1) = arr[3] = 4

Answer: 4

Q18: Array of Pointers What is the output?

int a = 10, b = 20, c = 30;
int *arr[] = {&a, &b, &c};
printf("%d %d", *arr[0], *(arr[1]+1));

Solution:

arr[0] = &a, so *arr[0] = a = 10
arr[1] = &b, arr[1]+1 points to memory after b (undefined behavior)

Answer: 10 (second value is undefined)

Q19: Recursive Function What is the output?

int func(int n) {
if(n <= 1) return 1;
return n * func(n-2);
}
printf("%d", func(5));

Solution:

func(5) = 5 * func(3)
func(3) = 3 * func(1)
func(1) = 1
func(3) = 3 * 1 = 3
func(5) = 5 * 3 = 15

Answer: 15

Q20: Nested Loops What is the output?

for(int i=1;i<=3;i++){
for(int j=1;j<=i;j++){
printf("%d", i*j);
}
printf("\\n");
}

Solution:

i=1: j=1, prints 1*1=1, newline
i=2: j=1, prints 2*1=2; j=2, prints 2*2=4, newline
i=3: j=1, prints 3*1=3; j=2, prints 3*2=6; j=3, prints 3*3=9, newline

Answer:

1
24
369

Q21: Complex Recursion (Fibonacci) What is the output?

int f(int n) {
if(n == 0) return 0;
if(n == 1) return 1;
return f(n-1) + f(n-2);
}
printf("%d", f(6));

Solution:

This is Fibonacci sequence:
f(0)=0, f(1)=1
f(2)=f(1)+f(0)=1+0=1
f(3)=f(2)+f(1)=1+1=2
f(4)=f(3)+f(2)=2+1=3
f(5)=f(4)+f(3)=3+2=5
f(6)=f(5)+f(4)=5+3=8

Answer: 8

Q22: Pointer to Array of Pointers

Problem: What is the output?

char *arr[] = {"ZOHO", "CORP", "INDIA"};
char **p = arr;
printf("%s ", *(p+1));
printf("%c", *(*(p+2)+2));

Solution: arr[0] = “ZOHO”, arr[1] = “CORP”, arr[2] = “INDIA” p = arr, so p points to arr[0] p+1 points to arr[1] = “CORP” *(p+1) = arr[1] = “CORP” p+2 points to arr[2] = “INDIA” *(p+2) = “INDIA” (points to first char ‘I’) *(p+2)+2 points to 3rd char of “INDIA” = ‘D’ ((p+2)+2) = ‘D’

Answer: CORP D

Q23: Complex Array and Pointer

Problem: What is the output?

int a[][3] = {{1,2,3},{4,5,6},{7,8,9}};
int *p = &a[0][0];
int (*q)[3] = a;
printf("%d ", *(p+5));
printf("%d", q[1][2]);

Solution: p points to a[0][0] = 1 p+5 points to 6th element in row-major order = a[1][2] = 6 *(p+5) = 6 q[1][2] = a[1][2] = 6

Answer: 6 6

Q24: Recursive String Processing

Problem: What is the output?

void print(char *s) {
if(*s) {
print(s+1);
printf("%c", *s);
}
}
print("ZOHO");

Solution: This recursively prints string in reverse: print(“ZOHO”) calls print(“OHO”) print(“OHO”) calls print(“HO”) print(“HO”) calls print(“O”) print(“O”) calls print("") print("") returns (base case) Then prints: ‘O’, ‘H’, ‘O’, ‘Z’

Answer: OHOZ

Q1: First Non-repeating Character

Problem: Find the first non-repeating character in a string.

Solution (C):

#include <stdio.h>
#include <string.h>
char firstNonRepeating(char str[]) {
int count[256] = {0};
int len = strlen(str);
// Count frequency of each character
for (int i = 0; i < len; i++)
count[(int)str[i]]++;
// Find first character with count 1
for (int i = 0; i < len; i++) {
if (count[(int)str[i]] == 1)
return str[i];
}
return '\0';
}
int main() {
char str[100];
printf("Enter string: ");
gets(str);
char result = firstNonRepeating(str);
if (result)
printf("First non-repeating: %c\n", result);
else
printf("No non-repeating character\n");
return 0;
}
Q2: Array Rotation

Problem: Rotate an array by K steps.

Solution (C):

#include <stdio.h>
void rotateArray(int arr[], int n, int k) {
k = k % n;
int temp[k];
// Store last k elements
for (int i = 0; i < k; i++)
temp[i] = arr[n - k + i];
// Shift remaining elements
for (int i = n - 1; i >= k; i--)
arr[i] = arr[i - k];
// Place stored elements at beginning
for (int i = 0; i < k; i++)
arr[i] = temp[i];
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = 5, k = 2;
rotateArray(arr, n, k);
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
Q3: Fibonacci Series

Problem: Print the Fibonacci series up to N terms.

Solution (C):

#include <stdio.h>
void fibonacci(int n) {
int a = 0, b = 1, next;
if (n >= 1) printf("%d ", a);
if (n >= 2) printf("%d ", b);
for (int i = 3; i <= n; i++) {
next = a + b;
printf("%d ", next);
a = b;
b = next;
}
printf("\n");
}
int main() {
int n;
printf("Enter N: ");
scanf("%d", &n);
fibonacci(n);
return 0;
}
Q4: Second Largest Element

Problem: Write a program to find the second largest element in an array.

Solution (C):

#include <stdio.h>
int secondLargest(int arr[], int n) {
int first = arr[0], second = -1;
for (int i = 1; i < n; i++) {
if (arr[i] > first) {
second = first;
first = arr[i];
} else if (arr[i] > second && arr[i] != first) {
second = arr[i];
}
}
return second;
}
int main() {
int arr[] = {12, 35, 1, 10, 34, 1};
int n = 6;
printf("Second largest: %d\n", secondLargest(arr, n));
return 0;
}
Q5: Palindrome String Check

Problem: Write a program to check if a given string is a palindrome.

Solution (C):

#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int len = strlen(str);
int start = 0, end = len - 1;
while (start < end) {
if (str[start] != str[end])
return 0;
start++;
end--;
}
return 1;
}
Q6: Factorial Iterative

Problem: Implement a function to find the factorial of a number using iteration.

Solution (C):

#include <stdio.h>
int factorial(int n) {
int result = 1;
for (int i = 2; i <= n; i++)
result *= i;
return result;
}
Q7: Even or Odd

Problem: Write a program to check if a given number is even or odd.

Solution (C):

#include <stdio.h>
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (num % 2 == 0)
printf("%d is even\n", num);
else
printf("%d is odd\n", num);
return 0;
}
Q8: Perfect Square Check

Problem: Write a program to check if a number is a perfect square.

Solution (C):

#include <stdio.h>
#include <math.h>
int isPerfectSquare(int n) {
int root = sqrt(n);
return root * root == n;
}
Q9: Sum of Prime Numbers

Problem: Implement a function to find the sum of all prime numbers up to a given number.

Solution (C):

#include <stdio.h>
int isPrime(int n) {
if (n <= 1) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
int sumOfPrimes(int n) {
int sum = 0;
for (int i = 2; i <= n; i++) {
if (isPrime(i))
sum += i;
}
return sum;
}
Q10: Reverse Words in Sentence

Problem: Write a program to reverse the words in a given sentence.

Solution (C):

#include <stdio.h>
#include <string.h>
void reverseWords(char str[]) {
int len = strlen(str);
int start = 0;
for (int i = 0; i <= len; i++) {
if (str[i] == ' ' || str[i] == '\0') {
int end = i - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
start = i + 1;
}
}
}
Q11: Longest Common Prefix

Problem: Implement a function to find the longest common prefix among a set of strings.

Solution (C):

#include <stdio.h>
#include <string.h>
void longestCommonPrefix(char strs[][100], int n, char result[]) {
if (n == 0) {
result[0] = '\0';
return;
}
int minLen = strlen(strs[0]);
for (int i = 1; i < n; i++) {
int len = strlen(strs[i]);
if (len < minLen) minLen = len;
}
int idx = 0;
for (int i = 0; i < minLen; i++) {
char c = strs[0][i];
for (int j = 1; j < n; j++) {
if (strs[j][i] != c) {
result[idx] = '\0';
return;
}
}
result[idx++] = c;
}
result[idx] = '\0';
}
Q12: Simple Calculator

Problem: Write a program to implement a simple calculator that can perform basic arithmetic operations.

Solution (C):

#include <stdio.h>
int main() {
char op;
float a, b;
printf("Enter operator (+, -, *, /): ");
scanf(" %c", &op);
printf("Enter two numbers: ");
scanf("%f %f", &a, &b);
switch(op) {
case '+': printf("%.2f\n", a + b); break;
case '-': printf("%.2f\n", a - b); break;
case '*': printf("%.2f\n", a * b); break;
case '/':
if (b != 0) printf("%.2f\n", a / b);
else printf("Division by zero!\n");
break;
default: printf("Invalid operator\n");
}
return 0;
}
Q13: Harshad Number

Problem: Write a program to check if a number is a Harshad number (divisible by sum of its digits).

Solution (C):

#include <stdio.h>
int sumOfDigits(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
int isHarshad(int n) {
int sum = sumOfDigits(n);
return (n % sum == 0);
}
Q14: Strong Number

Problem: Write a program to check if a number is a strong number (sum of factorial of digits equals the number).

Solution (C):

#include <stdio.h>
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
int isStrong(int n) {
int original = n, sum = 0;
while (n > 0) {
sum += factorial(n % 10);
n /= 10;
}
return sum == original;
}
Q15: Decimal to Hexadecimal

Problem: Write a program to convert a decimal number to its hexadecimal equivalent.

Solution (C):

#include <stdio.h>
void decimalToHex(int n) {
char hex[100];
int i = 0;
while (n > 0) {
int rem = n % 16;
if (rem < 10)
hex[i++] = rem + '0';
else
hex[i++] = rem - 10 + 'A';
n /= 16;
}
for (int j = i - 1; j >= 0; j--)
printf("%c", hex[j]);
printf("\n");
}
Q16: Insertion Sort

Problem: Write a program to implement the insertion sort algorithm.

Solution (C):

#include <stdio.h>
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}

Q17: Pyramid Pattern Write a program to print pyramid pattern:

*
***
*****
*******

Solution (C):

#include <stdio.h>
int main() {
int n = 4;
for(int i=1; i<=n; i++) {
for(int j=1; j<=n-i; j++) printf(" ");
for(int j=1; j<=2*i-1; j++) printf("*");
printf("\\n");
}
return 0;
}

Q18: Number Pattern Write a program to print:

1
22
333
4444

Solution (C):

#include <stdio.h>
int main() {
int n = 4;
for(int i=1; i<=n; i++) {
for(int j=1; j<=i; j++) {
printf("%d", i);
}
printf("\\n");
}
return 0;
}

Q19: Sort Odd-Even Indexed Sort odd-indexed elements descending, even-indexed ascending.

Input: [13,2,4,15,12,10,5] Output: [13,2,12,10,5,15,4]

Solution (C):

#include <stdio.h>
void sortArray(int arr[], int n) {
// Sort even indices (0,2,4...) ascending
for(int i=0; i<n; i+=2) {
for(int j=i+2; j<n; j+=2) {
if(arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
// Sort odd indices (1,3,5...) descending
for(int i=1; i<n; i+=2) {
for(int j=i+2; j<n; j+=2) {
if(arr[i] < arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}

Q20: Remove Duplicates Remove duplicates from array while maintaining order.

Input: [1,2,2,3,4,4,5] Output: [1,2,3,4,5]

Solution (C):

#include <stdio.h>
int removeDuplicates(int arr[], int n) {
if(n == 0) return 0;
int j = 0;
for(int i=1; i<n; i++) {
if(arr[i] != arr[j]) {
j++;
arr[j] = arr[i];
}
}
return j+1;
}

Q21: Remove Vowels with Condition Remove vowels from string, but if 2+ vowels together, ignore all.

Input: “beautiful” Output: “btfl”

Solution (C):

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int isVowel(char c) {
c = tolower(c);
return (c=='a' || c=='e' || c=='i' || c=='o' || c=='u');
}
void removeVowels(char str[]) {
int len = strlen(str);
int consecutive = 0;
int j = 0;
for(int i=0; i<len; i++) {
if(isVowel(str[i])) {
consecutive++;
} else {
if(consecutive < 2) {
// Add vowels if less than 2 consecutive
for(int k=0; k<consecutive; k++) {
str[j++] = str[i-consecutive+k];
}
}
consecutive = 0;
str[j++] = str[i];
}
}
str[j] = '\\0';
}

Q22: Reverse Words in String Reverse words in a string.

Input: “hello world” Output: “world hello”

Solution (C):

#include <stdio.h>
#include <string.h>
void reverseWords(char str[]) {
int len = strlen(str);
// Reverse entire string
for(int i=0; i<len/2; i++) {
char temp = str[i];
str[i] = str[len-1-i];
str[len-1-i] = temp;
}
// Reverse each word
int start = 0;
for(int i=0; i<=len; i++) {
if(str[i]==' ' || str[i]=='\\0') {
for(int j=start; j<(start+i)/2; j++) {
char temp = str[j];
str[j] = str[start+i-1-j];
str[start+i-1-j] = temp;
}
start = i+1;
}
}
}
Q1: Binary Search Tree Validation

Problem: Implement a function to check if a given binary tree is a Binary Search Tree (BST).

Solution (C):

#include <stdio.h>
#include <limits.h>
struct Node {
int data;
struct Node *left, *right;
};
int isBSTUtil(struct Node *node, int min, int max) {
if (node == NULL) return 1;
if (node->data < min || node->data > max) return 0;
return isBSTUtil(node->left, min, node->data - 1) &&
isBSTUtil(node->right, node->data + 1, max);
}
int isBST(struct Node *node) {
return isBSTUtil(node, INT_MIN, INT_MAX);
}
Q2: Merge Overlapping Intervals

Problem: Given a set of intervals, merge all overlapping intervals and return the non-overlapping intervals.

Solution (C):

#include <stdio.h>
#include <stdlib.h>
struct Interval {
int start;
int end;
};
int compare(const void *a, const void *b) {
struct Interval *i1 = (struct Interval *)a;
struct Interval *i2 = (struct Interval *)b;
return i1->start - i2->start;
}
void mergeIntervals(struct Interval arr[], int n) {
qsort(arr, n, sizeof(arr[0]), compare);
int index = 0;
for (int i = 1; i < n; i++) {
if (arr[index].end >= arr[i].start) {
arr[index].end = (arr[index].end > arr[i].end) ?
arr[index].end : arr[i].end;
} else {
index++;
arr[index] = arr[i];
}
}
for (int i = 0; i <= index; i++)
printf("[%d, %d] ", arr[i].start, arr[i].end);
}
Q3: Social Network Friend Finder

Problem: Develop a program to help a user find new friends in a social network based on given input data (mutual friends, interests, etc.).

Solution Structure:

struct User {
int id;
char name[50];
int friends[100];
int friendCount;
char interests[10][50];
int interestCount;
};
// Implement functions:
// - findMutualFriends() - Find users with mutual connections
// - findSimilarInterests() - Match based on interests
// - recommendFriends() - Suggest new friends
// - File operations for user data
Q4: Matrix Multiplication

Problem: Implement a function to perform matrix multiplication.

Solution (C):

#include <stdio.h>
void matrixMultiply(int A[][10], int B[][10], int C[][10], int m, int n, int p) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
C[i][j] = 0;
for (int k = 0; k < n; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
}
Q5: QuickSort Algorithm

Problem: Write a program to implement the quicksort algorithm.

Solution (C):

#include <stdio.h>
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
Q6: Binary Search

Problem: Implement a function to perform binary search on a sorted array.

Solution (C):

#include <stdio.h>
int binarySearch(int arr[], int n, int key) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == key) return mid;
if (arr[mid] < key) left = mid + 1;
else right = mid - 1;
}
return -1;
}
Q7: Merge Sort

Problem: Write a program to implement the merge sort algorithm.

Solution (C):

#include <stdio.h>
void merge(int arr[], int left, int mid, int right) {
int n1 = mid - left + 1, n2 = right - mid;
int L[n1], R[n2];
for (int i = 0; i < n1; i++) L[i] = arr[left + i];
for (int j = 0; j < n2; j++) R[j] = arr[mid + 1 + j];
int i = 0, j = 0, k = left;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) arr[k++] = L[i++];
else arr[k++] = R[j++];
}
while (i < n1) arr[k++] = L[i++];
while (j < n2) arr[k++] = R[j++];
}
void mergeSort(int arr[], int left, int right) {
if (left < right) {
int mid = left + (right - left) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
Q8: Linked List Implementation

Problem: Write a C program to implement a linked list and perform insertion, deletion, and traversal operations.

Solution Structure:

#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
// Implement functions:
// - insertAtBeginning()
// - insertAtEnd()
// - deleteNode()
// - traverse()
// - search()
Q9: Stack Implementation

Problem: Implement a stack using an array with push, pop, and peek operations.

Solution (C):

#include <stdio.h>
#define MAX 100
struct Stack {
int arr[MAX];
int top;
};
void push(struct Stack *s, int value) {
if (s->top < MAX - 1)
s->arr[++s->top] = value;
}
int pop(struct Stack *s) {
if (s->top >= 0)
return s->arr[s->top--];
return -1;
}
int peek(struct Stack *s) {
if (s->top >= 0)
return s->arr[s->top];
return -1;
}
Q10: Queue Implementation

Problem: Implement a queue using an array with enqueue and dequeue operations.

Solution (C):

#include <stdio.h>
#define MAX 100
struct Queue {
int arr[MAX];
int front, rear;
};
void enqueue(struct Queue *q, int value) {
if (q->rear < MAX - 1)
q->arr[++q->rear] = value;
}
int dequeue(struct Queue *q) {
if (q->front <= q->rear)
return q->arr[q->front++];
return -1;
}
Q11: Binary Search Tree

Problem: Implement a binary search tree and perform insertion, deletion, and inorder traversal.

Solution Structure:

#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *left, *right;
};
// Implement functions:
// - insert()
// - delete()
// - inorderTraversal()
// - search()
Q12: Longest Common Subsequence

Problem: Implement a function to find the longest common subsequence of two strings.

Solution (C):

#include <stdio.h>
#include <string.h>
int lcs(char X[], char Y[], int m, int n) {
int dp[m + 1][n + 1];
for (int i = 0; i <= m; i++) {
for (int j = 0; j <= n; j++) {
if (i == 0 || j == 0)
dp[i][j] = 0;
else if (X[i - 1] == Y[j - 1])
dp[i][j] = dp[i - 1][j - 1] + 1;
else
dp[i][j] = (dp[i - 1][j] > dp[i][j - 1]) ?
dp[i - 1][j] : dp[i][j - 1];
}
}
return dp[m][n];
}
Q13: Maximum Subarray Sum (Kadane’s Algorithm)

Problem: Find the maximum subarray sum using Kadane’s algorithm.

Solution (C):

#include <stdio.h>
int maxSubarraySum(int arr[], int n) {
int maxSoFar = arr[0], maxEndingHere = arr[0];
for (int i = 1; i < n; i++) {
maxEndingHere = (maxEndingHere + arr[i] > arr[i]) ?
maxEndingHere + arr[i] : arr[i];
maxSoFar = (maxEndingHere > maxSoFar) ?
maxEndingHere : maxSoFar;
}
return maxSoFar;
}
Q14: LRU Cache

Problem: Implement a LRU (Least Recently Used) cache.

Solution Structure:

// Use doubly linked list + hash table
// Implement get() and put() operations
// Maintain capacity and evict least recently used items
Q15: Graph BFS Traversal

Problem: Implement Breadth-First Search (BFS) traversal of a graph.

Solution (C):

#include <stdio.h>
#include <stdlib.h>
void BFS(int graph[][10], int start, int n) {
int visited[10] = {0};
int queue[10], front = 0, rear = 0;
visited[start] = 1;
queue[rear++] = start;
while (front < rear) {
int node = queue[front++];
printf("%d ", node);
for (int i = 0; i < n; i++) {
if (graph[node][i] && !visited[i]) {
visited[i] = 1;
queue[rear++] = i;
}
}
}
}
Q16: Graph DFS Traversal

Problem: Implement Depth-First Search (DFS) traversal of a graph.

Solution (C):

#include <stdio.h>
void DFS(int graph[][10], int visited[], int node, int n) {
visited[node] = 1;
printf("%d ", node);
for (int i = 0; i < n; i++) {
if (graph[node][i] && !visited[i]) {
DFS(graph, visited, i, n);
}
}
}
Q17: Dijkstra’s Algorithm

Problem: Implement Dijkstra’s algorithm for finding the shortest path in a graph.

Solution Structure:

// Use priority queue or min-heap
// Maintain distance array
// Update distances for all neighbors
// Return shortest path distances
Q18: KMP String Matching

Problem: Implement the KMP (Knuth-Morris-Pratt) string matching algorithm.

Solution (C):

#include <stdio.h>
#include <string.h>
void computeLPS(char pattern[], int lps[], int m) {
int len = 0, i = 1;
lps[0] = 0;
while (i < m) {
if (pattern[i] == pattern[len]) {
len++;
lps[i] = len;
i++;
} else {
if (len != 0) len = lps[len - 1];
else { lps[i] = 0; i++; }
}
}
}
void KMPSearch(char text[], char pattern[]) {
int n = strlen(text), m = strlen(pattern);
int lps[m];
computeLPS(pattern, lps, m);
int i = 0, j = 0;
while (i < n) {
if (pattern[j] == text[i]) { i++; j++; }
if (j == m) {
printf("Found at index %d\n", i - j);
j = lps[j - 1];
} else if (i < n && pattern[j] != text[i]) {
if (j != 0) j = lps[j - 1];
else i++;
}
}
}
Q1: Complex Pattern

Problem: Print the following pattern:

1
232
34543
4567654

Solution (C):

#include <stdio.h>
int main() {
int n = 4;
for(int i=1; i<=n; i++) {
// Spaces
for(int j=1; j<=n-i; j++) printf(" ");
// Increasing numbers
for(int j=i; j<=2*i-1; j++) printf("%d", j);
// Decreasing numbers
for(int j=2*i-2; j>=i; j--) printf("%d", j);
printf("\n");
}
return 0;
}
Q2: String Processing

Problem: Remove vowels from string, but if 2+ vowels together, ignore all.

Input: “beautiful” Output: “btfl”

Solution (C):

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int isVowel(char c) {
c = tolower(c);
return (c=='a' || c=='e' || c=='i' || c=='o' || c=='u');
}
void removeVowels(char str[]) {
int len = strlen(str);
int consecutive = 0;
int j = 0;
for(int i=0; i<len; i++) {
if(isVowel(str[i])) {
consecutive++;
} else {
if(consecutive < 2) {
// Add vowels if less than 2 consecutive
for(int k=0; k<consecutive; k++) {
str[j++] = str[i-consecutive+k];
}
}
consecutive = 0;
str[j++] = str[i];
}
}
str[j] = '\0';
}
Q3: Array Rotation and Search

Problem: Rotate array left by k positions, then find element at index.

Input: arr = [1,2,3,4,5], k = 2, index = 1 After rotation: [3,4,5,1,2] Output: 4 (element at index 1)

Solution (C):

#include <stdio.h>
void rotateLeft(int arr[], int n, int k) {
k = k % n;
int temp[k];
// Store first k elements
for(int i=0; i<k; i++) temp[i] = arr[i];
// Shift remaining elements
for(int i=0; i<n-k; i++) arr[i] = arr[i+k];
// Place stored elements at end
for(int i=0; i<k; i++) arr[n-k+i] = temp[i];
}
Q4: String Compression

Problem: Compress string by replacing consecutive characters with count.

Input: “aaabbcccdd” Output: “a3b2c3d2”

Solution (C):

#include <stdio.h>
#include <string.h>
void compress(char str[]) {
int len = strlen(str);
int count = 1;
int j = 0;
for(int i=1; i<=len; i++) {
if(str[i] == str[i-1]) {
count++;
} else {
str[j++] = str[i-1];
if(count > 1) {
char num[10];
sprintf(num, "%d", count);
for(int k=0; num[k]; k++) str[j++] = num[k];
}
count = 1;
}
}
str[j] = '\0';
}
Q5: Matrix Operations

Problem: Find sum of elements in each row and column of matrix.

Input:

1 2 3
4 5 6
7 8 9

Output: Row sums: 6, 15, 24 Column sums: 12, 15, 18

Solution (C):

#include <stdio.h>
void rowColumnSum(int mat[][3], int rows, int cols) {
// Row sums
for(int i=0; i<rows; i++) {
int sum = 0;
for(int j=0; j<cols; j++) sum += mat[i][j];
printf("Row %d sum: %d\n", i+1, sum);
}
// Column sums
for(int j=0; j<cols; j++) {
int sum = 0;
for(int i=0; i<rows; i++) sum += mat[i][j];
printf("Column %d sum: %d\n", j+1, sum);
}
}
Q1: Quiz Application

Problem: Build a quiz application with:

  • Load questions from file
  • Multiple choice questions
  • Score calculation
  • Display results
  • Question management

Key Features Required:

  • File-based question storage
  • Menu-driven interface
  • Score tracking
  • Result display
  • Error handling

Solution Structure:

#include <stdio.h>
#include <string.h>
struct Question {
char question[200];
char options[4][100];
int correctAnswer;
};
// Implement functions: loadQuestions, displayQuestion, checkAnswer, calculateScore, saveResults
Q2: Inventory Management System

Problem: Build an inventory system with:

  • Add/remove products
  • Update stock
  • Search products
  • Generate reports
  • File persistence

Key Features:

  • Product management using structures
  • Stock tracking
  • File-based storage
  • Search functionality
  • Report generation

Solution:

struct Product {
int id;
char name[100];
int quantity;
float price;
};
// Implement functions: addProduct, removeProduct, updateStock, searchProduct, generateReport, saveToFile
Q3: Student Management System

Problem: Build a student management system with:

  • Add/remove students
  • Update student details
  • Search by roll number/name
  • Calculate GPA
  • Generate report cards
  • File persistence

Key Features:

  • Student structure (roll, name, marks in 5 subjects)
  • GPA calculation
  • Report generation
  • File-based storage
  • Search and sort functionality

Solution Structure:

struct Student {
int rollNo;
char name[50];
float marks[5];
float gpa;
};
// Implement functions: addStudent, removeStudent, updateStudent,
// searchStudent, calculateGPA, generateReport, saveToFile, loadFromFile
Q4: Ticket Booking System

Problem: Build a ticket booking system with:

  • Show available shows/movies
  • Book tickets
  • Cancel bookings
  • View booking history
  • Seat selection
  • File storage

Key Features:

  • Show structure (ID, name, time, available seats)
  • Booking structure (booking ID, show ID, seats, customer name)
  • Seat management
  • File persistence

Solution Structure:

struct Show {
int id;
char name[100];
char time[20];
int totalSeats;
int availableSeats;
int seats[100]; // 0 = available, 1 = booked
};
struct Booking {
int bookingId;
int showId;
char customerName[50];
int seats[10];
int seatCount;
};
// Implement functions: addShow, bookTicket, cancelBooking,
// viewBookings, saveToFile, loadFromFile

Q5: Address Book Application Build an address book with:

  • Add contact (name, phone, email)
  • Search contact by name
  • Delete contact
  • Display all contacts
  • Save/load from file

Solution Structure:

#include <stdio.h>
#include <string.h>
struct Contact {
char name[50];
char phone[15];
char email[50];
};
void addContact(struct Contact contacts[], int *count) {
// Implementation
}
void searchContact(struct Contact contacts[], int count) {
// Implementation
}
void deleteContact(struct Contact contacts[], int *count) {
// Implementation
}
void saveToFile(struct Contact contacts[], int count) {
// File handling
}
int main() {
struct Contact contacts[100];
int count = 0;
int choice;
while(1) {
printf("\\n1. Add Contact\\n2. Search\\n3. Delete\\n4. Display All\\n5. Save\\n6. Exit\\n");
scanf("%d", &choice);
// Menu-driven implementation
}
return 0;
}

Q6: Banking System Application Build a banking system with:

  • Create account (account number, name, balance)
  • Deposit money
  • Withdraw money
  • Check balance
  • Transaction history
  • File storage

Key Features:

  • Account management
  • Transaction logging
  • File-based persistence
  • Input validation
  • Error handling

Hiring Volume

  • Expected Hires: 2,000+ freshers
  • MTS Role: 1,500+ selections
  • Software Engineer: 500+ selections
  • Growth: 30% increase expected

Salary Packages

  • MTS: ₹5-7 LPA
  • Software Engineer: ₹7-10 LPA
  • Senior Software Engineer: ₹12-18 LPA
  • Staff Engineer: ₹20-28 LPA

New Initiatives

  • Monthly off-campus drives
  • Skill-based hiring focus
  • Fast-track offers (2-3 weeks)
  • More tier-2/3 college visits

C Output Prediction

  • Advanced pointer concepts (pointer to pointer, array of pointers)
  • Complex recursion problems
  • Multi-dimensional arrays with pointers
  • Function pointers

Coding Problems

  • Complex pattern printing
  • String processing with conditions
  • Array manipulation with multiple constraints
  • Logic building problems

Application Round

  • Quiz applications (most common in 2025)
  • Inventory management systems
  • Banking systems
  • Library management systems

Technical Interview

  • Code review from previous rounds
  • Code optimization discussions
  • Deep C concepts (memory management)
  • Data structures implementation in C
  1. Modular Code: Emphasis on well-structured, modular code
  2. Code Quality: Clean, readable code is highly valued
  3. Application Complexity: More complex applications expected
  4. File Handling: Essential for application round
  5. Code Review: Technical interview focuses on code review
  1. Master Advanced C: Pointer to pointer, function pointers, complex arrays
  2. Practice Application Building: Build complete applications with file handling
  3. Code Modularity: Learn to write modular, well-structured code
  4. Code Review Practice: Be ready to explain and optimize your code
  5. Time Management: Practice building applications within 90-120 minutes

Round 1 (Aptitude & C Programming Test):

  • Focus on advanced pointer concepts (pointer to pointer, array of pointers)
  • Practice complex recursion problems
  • Master C output prediction with multi-dimensional arrays
  • Quick aptitude practice (30-40 min allocation)

Round 2 (Basic Programming - 5 problems):

  • Complex pattern printing variations
  • String processing with multiple conditions
  • Array manipulation with constraints
  • Time management: 2-3 hours for 5 problems

Round 3 (Application Round):

  • Build complete applications: Quiz apps, Inventory systems, Banking systems
  • Emphasize modular code structure
  • Proper file handling implementation
  • User-friendly menu-driven interface

Round 4 (Technical Interview):

  • Prepare for code review from previous rounds
  • Deep understanding of C concepts (memory, pointers)
  • Code optimization strategies
  • Data structures implementation in C

Round 5 (HR Interview):

  • Research Zoho’s 2025 initiatives and growth
  • Prepare for relocation questions (Chennai/Tenkasi)
  • Demonstrate learning mindset and long-term commitment

15-Day Study Plan

Follow the structured 15-day study plan covering all Zoho placement topics from basics to advanced.


View Study Plan →

Round-Wise Strategy

Detailed round-wise preparation strategy for each Zoho placement round.


View Strategy →

GitHub Resources

Access comprehensive Zoho preparation materials including round-wise questions and practice problems.


Visit Repository →


Practice 2025 papers for current year preparation! Download the papers above and start practicing today. Focus on C programming mastery, application building, and code quality.