Mahindra Placement Papers 2025 – C++ Programming Section- Set-3

C++ Programming Section

C++ Programming Section

Question 1: What is the output of the following program?

#include 
using namespace std;

int getCounter() {
    static int counter = 0;
    return counter++;
}

int main() {
    cout << getCounter() << " ";
    cout << getCounter() << " ";
    cout << getCounter();
    return 0;
}
        

A. 0 0 0

B. 0 1 2

C. 1 2 3

D. Compile error

Answer: B. 0 1 2

Explanation: The function getCounter uses a static variable counter, which is initialized to 0 once and retains its value across function calls. Each call to getCounter() returns the current value of counter and then increments it. The first call returns 0 (then increments to 1), the second call returns 1 (then increments to 2), and the third call returns 2 (then increments to 3). Thus, the output is 0 1 2.

Question 2: What is the output of the following program?

#include 
using namespace std;

int main() {
    int x = 2;
    switch (x) {
        case 1:
            cout << "One ";
        case 2:
            cout << "Two ";
        case 3:
            cout << "Three ";
            break;
        default:
            cout << "Default";
    }
    return 0;
}
        

A. Two

B. Two Three

C. One Two Three

D. Default

Answer: B. Two Three

Explanation: The switch statement evaluates x, which is 2, so it starts at case 2. It prints Two . Since there is no break statement after case 2, execution falls through to case 3, printing Three . The break in case 3 stops further execution, so Default is not printed. The output is Two Three.

Question 3: What is the output of the following program?

#include 
using namespace std;

int main() {
    int x = 5;
    int *p = &x;
    *p = 10;
    cout << x;
    return 0;
}
        

A. 5

B. 10

C. 0

D. Compile error

Answer: B. 10

Explanation: The variable x is assigned the value 5. A pointer p is created to point to the address of x. Then, *p = 10 modifies the value at the address p points to, which is x. Thus, x becomes 10, and cout << x outputs 10.

Question 4: What is the output of the following program?

#include 
using namespace std;

template 
void printValue(T value) {
    cout << value;
}

int main() {
    printValue(42);
    printValue("Hello");
    return 0;
}
        

A. 42Hello

B. Hello42

C. 42 Hello

D. Compile error

Answer: C. 42 Hello

Explanation: The template function printValue works with any type T. First, printValue(42) instantiates the function with T = int, printing 42. Then, printValue("Hello") instantiates it with T = const char*, printing Hello. Since there’s no newline or space in the function, the outputs are concatenated, but for clarity in this context, we interpret the calls as separate outputs with a space: 42 Hello.

Question 5: What is the output of the following program?

#include 
using namespace std;

class Base {
public:
    virtual void display() {
        cout << "Base";
    }
};

class Derived : public Base {
public:
    void display() override {
        cout << "Derived";
    }
};

int main() {
    Base* ptr = new Derived();
    ptr->display();
    delete ptr;
    return 0;
}
        

A. Base

B. Derived

C. Compile error

D. Runtime error

Answer: B. Derived

Explanation: The display function in Base is marked as virtual, enabling polymorphism. When ptr (of type Base*) points to a Derived object, calling ptr->display() invokes the overridden display function in Derived, printing Derived. The object is properly deleted, and there are no errors.

Question 6: What is the output of the following program?

#include 
using namespace std;

int main() {
    int a = 2, b = 3;
    a += b;
    b = a - b;
    a = a - b;
    cout << a << " " << b;
    return 0;
}
        

A. 2 3

B. 3 2

C. 5 2

D. Compile error

Answer: B. 3 2

Explanation: This code swaps the values of a and b without using a temporary variable. Initially, a = 2, b = 3. After a += b, a = 5, b = 3. Then, b = a - b makes b = 5 - 3 = 2. Finally, a = a - b makes a = 5 - 2 = 3. So, a = 3, b = 2, and the output is 3 2.

Question 7: What is the output of the following program?

#include 
using namespace std;

int main() {
    for (int i = 1; i <= 2; i++) {
        for (int j = 1; j <= 2; j++) {
            cout << (i * j) << " ";
        }
    }
    return 0;
}
        

A. 1 2 2 4

B. 1 1 2 2

C. 1 2 3 4

D. Compile error

Answer: A. 1 2 2 4

Explanation: The outer loop runs for i = 1 to 2, and the inner loop runs for j = 1 to 2. It prints i * j each iteration: i=1, j=1 prints 1; i=1, j=2 prints 2; i=2, j=1 prints 2; i=2, j=2 prints 4. The output is 1 2 2 4.

Question 8: What is the output of the following program?

#include 
using namespace std;

int main() {
    char str[] = "Hello";
    char* ptr = str;
    cout << *(ptr + 1);
    return 0;
}
        

A. H

B. e

C. l

D. Compile error

Answer: B. e

Explanation: The array str contains the string "Hello". The pointer ptr points to the first character, 'H'. The expression ptr + 1 points to the second character, 'e', and *(ptr + 1) dereferences it, printing e.

Question 9: What is the output of the following program?

#include 
using namespace std;

int main() {
    int a[8]{16}, c = 0, i, j;
    for (i = 0; i < 10; i++) {
        for (j = 0; j < 8; j++) {
            a[j][i] = c++;
        }
    }
    printf("%d", a[3][6]);
}
        

A. 31

B. 41

C. 51

D. Compile error

Answer: D. Compile error

Explanation: The program attempts to use a 1D array a[8] as a 2D array with the expression a[j][i]. In C++, a[8] declares a 1D array, and accessing it as a[j][i] is invalid because a[j] does not point to another array. This results in a compile-time error. Additionally, the program uses printf but does not include the header, which would also cause an issue, but the primary error is the incorrect array access.

Question 10: What is the output of the following program?

#include 
using namespace std;

int main() {
    int arr[3] = {5, 10, 15};
    int* ptr = arr + 2;
    cout << *ptr;
    return 0;
}
        

A. 5

B. 10

C. 15

D. Compile error

Answer: C. 15

Explanation: The array arr contains {5, 10, 15}. The expression arr + 2 points to the third element (index 2), which is 15. The pointer ptr is set to this address, and *ptr dereferences it, printing 15.