Curioustab
Aptitude
General Knowledge
Verbal Reasoning
Computer Science
Interview
Take Free Test
Aptitude
General Knowledge
Verbal Reasoning
Computer Science
Interview
Take Free Test
Functions Questions
In C++ (2D array filled by column-major style indexing), what sequence does the program output? #include
class CuriousTabArray { int Matrix[3][3]; public: CuriousTabArray() { for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++) Matrix[j][i] = i + j; } void Display(void) { for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++) cout << Matrix[j][i] << " "; } }; int main() { CuriousTabArray objCuriousTab; objCuriousTab.Display(); return 0; }
In C++ (old-style iostream.h), a function with a default argument is called once and computes a factorial-like product. Predict the printed result. #include
long FactFinder(long = 5); int main() { for (int i = 0; i <= 0; i++) cout << FactFinder() << endl; // calls FactFinder(5) return 0; } long FactFinder(long x) { if (x < 2) return 1; long fact = 1; for (long i = 1; i <= x - 1; i++) fact = fact * i; // multiplies up to x-1 return fact; }
In C++ (iostream.h), a class method with default parameters modifies members and prints an expression using pre-increment and pre-decrement. Determine the output. #include
void Tester(int xx, int yy = 5); // unrelated free function class CuriousTab { int x; int y; public: void Tester(int xx, int yy = 5) { x = xx; y = yy; cout << ++x % --y; } }; int main() { CuriousTab objCuriousTab; objCuriousTab.Tester(5, 5); return 0; }
C++ recursive base-13 conversion using a class method: determine the output when the initial value is 130. #include
class Number { int Num; public: Number(int x = 0) { Num = x; } void Display() { cout << Num; } void Modify(); }; void Number::Modify() { int Dec; Dec = Num % 13; Num = Num / 13; if (Num > 0) Modify(); if (Dec == 10) cout << "A"; else if (Dec == 11) cout << "B"; else if (Dec == 12) cout << "C"; else if (Dec == 13) cout << "D"; // unreachable for base-13 remainders else cout << Dec; } int main() { Number objNum(130); objNum.Modify(); return 0; }
C++ function with multiple defaulted parameters used as a polynomial: compute two outputs for x = 2.3. #include
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 }
C++ defaults, compound assignments, and parameter passing by value: trace member updates and print x and y. #include
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; }
C++ modulo is not defined for floating-point operands: identify the outcome when using % with float values in a method. #include
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; }
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
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; }
C++ overloading with a competing overload that has a default argument: which function is called and what is printed? #include
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; }
C++ operator overloading with a default argument on operator+ (member): compute the result of objA + 5 and print it. #include
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; }
C++ overload resolution on (float, char, char): compute and print K from character arithmetic. #include
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; }
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
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?
C++ (constructor overload selection and copy construction) — determine the output printed after constructing Derived via two different constructors. #include
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?
C++ (overload resolution with defaults) — which overload is selected and what value of x is printed? #include
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?
C++ (constructor selection, shadowing, and references) — determine the output after calling SetValue and Display. #include
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?
C++ strings (C-style) — predict the concatenated message built by the constructor with default parameters and print via Display(). #include
#include
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?
C++ (recursion with default arguments in a member function) — does the call terminate or loop forever, and what would be printed? #include
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.
C++ (name qualification in multiple-base-like contexts) — evaluate the printed sum after calling the specifically qualified BaseTwo::Display. #include
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?
C++ (recursion with static indices and post-recursion swapping) — determine the final array order printed by Display(). #include
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?
C++ (recursion with static indices and pre-recursion swapping) — determine the array order produced and printed. #include
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?
1
2
3
4