Functions Questions
Practice Functions MCQs with answers and explanations. Page 5 of 5.
Category
C++ Programming
Topic
Functions
Page
5 / 5
Mode
Practice
Questions
Open any question to view the answer and explanation.
C++ function with multiple defaulted parameters used as a polynomial: compute two outputs for x = 2.3.
#include <iostream.h>
double CuriousTabFunction(double, double, double = 0, double = 0, double = 0);
int main()
{
double d = 2.3;
cout << CuriousTabFunction(d, 7) << " ";
cout << CuriousTabFunction(d, 7, 6) << endl;
return 0;
}
double CuriousTabFunction(double x, double p, double q, double r, double s)
{
return p + (q + (r + s * x) * x) * x; // Horner-like form
}
Open
View answer
C++ defaults, compound assignments, and parameter passing by value: trace member updates and print x and y.
#include <iostream.h>
class CuriousTab
{
int x, y, z;
public:
void Apply(int xx = 12, int yy = 21, int zz = 9)
{
x = xx; // x = 12
y = yy += 10; // yy becomes 10 locally; y = 10
z = x -= 2; // x becomes 10; z = 10
}
void Display()
{
cout << x << " " << y << endl;
}
void SetValue(int xx, int yy)
{
Apply(xx, 0, yy); // pass-by-value
}
};
int main()
{
CuriousTab *pCuriousTab = new CuriousTab;
(*pCuriousTab).SetValue(12, 20);
pCuriousTab->Display();
delete pCuriousTab;
return 0;
}
Open
View answer
C++ modulo is not defined for floating-point operands: identify the outcome when using % with float values in a method.
#include <iostream.h>
void Tester(float xx, float yy = 5.0); // unrelated free function
class CuriousTab
{
float x;
float y;
public:
void Tester(float xx, float yy = 5.0)
{
x = xx;
y = yy;
cout << ++x % --y; // invalid: % requires integral operands
}
};
int main()
{
CuriousTab objCuriousTab;
objCuriousTab.Tester(5.0, 5.0);
return 0;
}
Open
View answer
C++ overloaded constructors and default arguments in a base class: predict what is printed when the derived object chooses the 1-arg base constructor.
#include <iostream.h>
class Base
{
public:
char S, A, M;
Base(char x, char y)
{
S = y - y;
A = x + x;
M = x * x;
}
Base(char, char y = 'A', char z = 'B')
{
S = y;
A = y + 1 - 1;
M = z - 1;
}
void Display() { cout << S << " " << A << " " << M << endl; }
};
class Derived : public Base
{
char x, y, z;
public:
Derived(char xx = 65, char yy = 66, char zz = 65) : Base(x)
{
x = xx; y = yy; z = zz;
}
void Display(int n)
{
if (n) Base::Display();
else cout << x << " " << y << " " << z << endl;
}
};
int main()
{
Derived objDev;
objDev.Display(0 - 1); // non-zero → calls Base::Display()
return 0;
}
Open
View answer
C++ overloading with a competing overload that has a default argument: which function is called and what is printed?
#include <iostream.h>
int CuriousTabTest(int x, int y);
int CuriousTabTest(int x, int y, int z = 5);
int main()
{
cout << CuriousTabTest(2, 4) << endl;
return 0;
}
int CuriousTabTest(int x, int y) { return x * y; }
int CuriousTabTest(int x, int y, int z /= 5/) { return x * y * z; }
Open
View answer
C++ operator overloading with a default argument on operator+ (member): compute the result of objA + 5 and print it.
#include <iostream.h>
class Addition
{
int x;
public:
Addition() { x = 0; }
Addition(int xx) { x = xx; }
Addition operator+(int xx = 0)
{
Addition objTemp;
objTemp.x = x + xx;
return objTemp;
}
void Display() { cout << x << endl; }
};
int main()
{
Addition objA(15), objB;
objB = objA + 5;
objB.Display();
return 0;
}
Open
View answer
C++ overload resolution on (float, char, char): compute and print K from character arithmetic.
#include <iostream.h>
class CuriousTab
{
int K;
public:
void CuriousTabFunction(float, int, char);
void CuriousTabFunction(float, char, char);
};
int main()
{
CuriousTab objIB;
objIB.CuriousTabFunction(15.09f, 'A', char('A' + 'A'));
return 0;
}
void CuriousTab::CuriousTabFunction(float, char y, char z)
{
K = int(z);
K = int(y);
K = y + z; // integer promotions apply
cout << "K = " << K << endl;
}
Open
View answer
C++ (member access across objects) — predict the output printed by show() when it is invoked on an object whose fields were set just before the call.
#include<iostream.h>
class Tab
{
int x, y;
public:
void show(void);
void main(void);
};
void Tab::show(void)
{
Tab b;
b.x = 2;
b.y = 4;
cout << x << " " << y;
}
void Tab::main(void)
{
Tab b;
b.x = 6;
b.y = 8;
b.show();
}
int main(int argc, char *argv[])
{
Tab run;
run.main();
return 0;
}
What exactly is printed to stdout?
Open
View answer
C++ (constructor overload selection and copy construction) — determine the output printed after constructing Derived via two different constructors.
#include<iostream.h>
class Base {
int x, y;
public:
Base() { x = y = 0; }
Base(int xx) { x = xx; }
Base(int p, int q = 10) { x = p + q; y = q; }
void Display(void) { cout << x << " " << y << endl; }
} objDefault(1, 1);
class Derived : public Base {
Base obj;
public:
Derived(int xx, int yy) : Base(xx, xx + 1) { }
Derived(Base objB = objDefault) { }
};
int main() {
Derived objD(5, 3);
Derived *ptrD = new Derived(objD);
ptrD->Display();
delete ptrD;
return 0;
}
What does the program print?
Open
View answer
C++ (overload resolution with defaults) — which overload is selected and what value of x is printed?
#include<iostream.h>
class CuriousTab {
int x; float y;
public:
void CuriousTabFunction(int = 0, float = 0.00f, char = 'A');
void CuriousTabFunction(float, int = 10.00, char = 'Z');
void CuriousTabFunction(char, char, char);
};
int main() {
CuriousTab objCuriousTab;
objCuriousTab.CuriousTabFunction(10 * 1.0, int(56.0));
return 0;
}
void CuriousTab::CuriousTabFunction(int xx, float yy, char zz) {
x = xx + int(yy);
cout << "x = " << x << endl;
}
void CuriousTab::CuriousTabFunction(float xx, int yy, char zz) {
x = zz + zz;
y = xx + yy;
cout << " x = " << x << endl;
}
void CuriousTab::CuriousTabFunction(char xx, char yy, char zz) {
x = xx + yy + zz;
y = float(xx * 2);
cout << " x = " << x << endl;
}
What is printed?
Open
View answer
C++ (constructor selection, shadowing, and references) — determine the output after calling SetValue and Display.
#include<iostream.h>
class CuriousTab {
int x; float y;
public:
CuriousTab(int x) { x = x; }
CuriousTab(int p = 0, int q = 10) { x = p += 2; y = q * 1.0f; }
void SetValue(int &y, float z) { x = y; y = (int)z; }
void Display(void) { cout << x; }
};
int main() {
int val = 12;
CuriousTab objCuriousTab(val);
CuriousTab objTmp();
objCuriousTab.SetValue(val, 3.14f);
objCuriousTab.Display();
return 0;
}
What is printed?
Open
View answer
C++ strings (C-style) — predict the concatenated message built by the constructor with default parameters and print via Display().
#include<iostream.h>
#include<string.h>
class CuriousTabString {
char x[50]; char y[50]; char z[50];
public:
CuriousTabString() { }
CuriousTabString(char* xx) { strcpy(x, xx); strcpy(y, xx); }
CuriousTabString(char* xx, char* yy = " C++", char* zz = " Programming!") {
strcpy(z, xx); strcat(z, yy); strcat(z, zz);
}
void Display(void) { cout << z << endl; }
};
int main() {
CuriousTabString objStr("Learn", " Java");
objStr.Display();
return 0;
}
What is the exact output?
Open
View answer
C++ (recursion with default arguments in a member function) — does the call terminate or loop forever, and what would be printed?
#include<iostream.h>
class CuriousTab {
public:
void CuriousTab(int x = 15) {
x = x / 2;
if (x > 0)
CuriousTab();
else
cout << x % 2;
}
};
int main() {
CuriousTab objIB;
objIB.CuriousTab();
return 0;
}
Choose the correct behavior.
Open
View answer
C++ (name qualification in multiple-base-like contexts) — evaluate the printed sum after calling the specifically qualified BaseTwo::Display.
#include<iostream.h>
static double gDouble; static float gFloat; static double gChar; static double gSum = 0;
class BaseOne { public: void Display(double x = 0.0, float y = 0.0, char z = 'A') {
gDouble = x; gFloat = y; gChar = int(z); gSum = gDouble + gFloat + gChar; cout << gSum; } };
class BaseTwo { public: void Display(int x = 1, float y = 0.0, char z = 'A') {
gDouble = x; gFloat = y; gChar = int(z); gSum = gDouble + gFloat + gChar; cout << gSum; } };
class Derived : public BaseOne, public BaseTwo { void Show() { cout << gSum; } };
int main() {
Derived objDev;
objDev.BaseTwo::Display(10, 20, 'Z');
return 0;
}
What value is printed?
Open
View answer
C++ (recursion with static indices and post-recursion swapping) — determine the final array order printed by Display().
#include<iostream.h>
struct CuriousTabArray {
int arr[5];
public:
void CuriousTabFunction();
void Display();
};
void CuriousTabArray::CuriousTabFunction() {
static int i = 0, j = 4;
i++; j--;
if (j > 0) CuriousTabFunction();
int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;
i--; j++;
}
void CuriousTabArray::Display() {
for (int i = 0; i < 5; i++) cout << arr[i] << " ";
}
int main() {
CuriousTabArray objArr = {{5, 6, 3, 9, 0}};
objArr.CuriousTabFunction();
objArr.Display();
return 0;
}
What output is produced?
Open
View answer
C++ (recursion with static indices and pre-recursion swapping) — determine the array order produced and printed.
#include<iostream.h>
struct CuriousTab {
int arr[5];
public:
void CuriousTabFunction(void);
void Display(void);
};
void CuriousTab::Display(void) {
for (int i = 0; i < 5; i++) cout << arr[i] << " ";
}
void CuriousTab::CuriousTabFunction(void) {
static int i = 0, j = 4;
int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;
i++; j--;
if (j != i) CuriousTabFunction();
}
int main() {
CuriousTab objCuriousTab = {{5, 6, 3, 9, 0}};
objCuriousTab.CuriousTabFunction();
objCuriousTab.Display();
return 0;
}
What output is produced?
Open
View answer
C++ (method hiding vs base call) — what happens when a derived Display() calls Display() without qualification?
#include<iostream.h>
class Base {
int x, y, z;
public:
Base() { x = y = z = 0; }
Base(int xx, int yy = 'A', int zz = 'B') { x = xx; y = x + yy; z = x + y; }
void Display(void) { cout << x << " " << y << " " << z << endl; }
};
class Derived : public Base {
int x, y;
public:
Derived(int xx = 65, int yy = 66) : Base(xx, yy) { y = xx; x = yy; }
void Display(void) { cout << x << " " << y << " "; Display(); }
};
int main() {
Derived objD;
objD.Display();
return 0;
}
Choose the correct statement.
Open
View answer
In legacy C++ (iostream.h), what happens when a private member function is called from main versus a public one? Carefully read the code and predict the program's behavior.
#include<iostream.h>
class CuriousTabSample
{
private:
int AdditionOne(int x, int y = 1)
{
return x * y;
}
public:
int AdditionTwo(int x, int y = 1)
{
return x / y;
}
};
int main()
{
CuriousTabSample objCuriousTab;
cout << objCuriousTab.AdditionOne(4, 8) << " ";
cout << objCuriousTab.AdditionTwo(8, 8);
return 0;
}
Open
View answer
Practice smarter
Solve a few questions daily and revisit weak topics regularly to improve accuracy.