Extending expressive power: pointers, functions, and memory CPPE1 M3 Test

  1. What is the output of the following snippet?

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    string fun(string &t, string s = "", int r = 1)
    {
        while(--r)
           s += s;
       t = t + s;
       return s;
    }
    
    int main()
    {
        string name = "x";
        cout << fun(name, name);
        cout << name;
    }
    • xx
    • x
    • xxxx
    • xxx
  2. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int fun(int a, int b)
    {
       return a + b;
    }
    int fun(int a, char b)
    {
       return b - a;
    }
    int fun(float a, float b)
    {
       return a * b;
    }
    int main()
    {
        cout << fun(1,0) << fun('a','c') << fun(2.f.2.f);
    }
    • 481
    • 012
    • 248
    • 124
  3. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int fun(int p1 = 1, int p2 = 1)
    {
       return p2 + p1;
    }
    
    int main()
    {
        cout << fun(fun(), fun(2));
    }
    • 4
    • 5
    • 8
    • 3
  4. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int fun(long a)
    {
       return a / a;
    }
    int fun(int a)
    {
       return 2 * a;
    }
    int fun(double a = 3.0)
    {
       return a;
    }
    
    int main()
    {
        cout << fun(10000000000L) << fun (IL) << fun(1.f);
    }
    • 444
    • 333
    • 222
    • 111
  5. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int fun(float a, float b)
    {
       return a / b;
    }
    
    int main()
    {
       cout << fun(fun(1., 2.),fun(2., 1.));
    }
    • 1
    • 0
    • -1
    • 2
  6. What is the output of the following snippet?

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int fun(int* t)
    {
        t[0] += t[1];
        return t[0];
    }
    
    int main()
    {
        vector<int> t = { 5,6,7 };
        cout << fun(&t[1]);
        cout << t[0];
    }
    • 116
    • 56
    • 135
    • 115
  7. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        vector<float> f(20;
    
        float *p1 = f.data(), *p2 = p1 + 1; 
        cout << (p2 - p1) / sizeof(float);
    }
    • 0
    • 1
    • 2
    • 3
  8. What is the output of the following snippet?

    #include <iostream>
    #include <vector>
    using namespace std;
    int f1(int *a)
    {
        return *a + 1;
    }
    int *f2(int*a)
    {
        return &a = 1;
    }
    int *f3(int &a)
    {
       return &a + 1;
    }
    int main()
    {
        vector<int> t = {0, 1, 2, 3};
     
        cout << f1(f3(*f2(t.data())));
    }
    • 1
    • 2
    • 3
    • 0
  9. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int *val = new int;
        
        *val = sizeof(var) / sizeof(int *);
        int *tab = new int[*val];
        tab[0] = *val;
        delete val;
        cout << *tab;
        delete [] tab;
    }
    • 2
    • 4
    • 0
    • 1
  10. What is the output of the following snippet?

    #include <iostream>
    #include <vecotr>
    
    using namespace std;
    
    int main()
    {
        vector<int> t = { 3, 2, 1 };
        int *ptr = t.data() + 1;
    
        (*(ptr + 1))++;
        (*(ptr - 1))++;
        cout << t[0] << t[1] << t[2];
    }
    • 321
    • 422
    • 123
    • 333
  11. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int *make(int v)
    {
       int *p = new int;
       *p = v + 1;
       return p;
    }
    
    int *play(int &v)
    {
       cout << ++v;
       return &v;
    }
    void remove(int *v)
    {
       delete v;
    }
    int main()
    {
        remove(play(*make(3)));
    }
    • 5
    • 4
    • 2
    • 3
  12. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    float fun(float arg)
    {
       return arg * arg + arg + 1;
    }
    int main()
    {
        cout << fun(fun(1.));
    }
    • 13
    • 7
    • 16
    • 10
  13. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        vector<int> tab = { 1, 2, 4 };
        int *p1 = &tab[0], *p2 = p1 + 2;
    
        tab[1] = p2[-1] + *p1;
        cout << tab[1];
    }
    • 4
    • 3
    • 5
    • 2
  14. What is the output of the following snippet?

    using namespace std;
    
    float Float(float x)
    {
        return 2 * x / (.5 * x);
    }
    
    void Void(int n)
    {
        float v = n;
    
        v = Float(v);
        cout << v;
    }
    int main()
    {
        Void(1);
    }
    • 10
    • 8
    • 4
    • 6
  15. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int f1(int *a)
    {
        return *a;
    }
    
    int *f2(int *a)
    {
        return a;
    }
    
    int *f3(int &a)
    {
         return a;
    }
    int main()
    {
        int value = 2;
        cout << f1(f2(f3(value)));
    }
    • 3
    • 1
    • 0
    • 2
  16. What is the output of the following snippet?

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    string fun(string t, string s = "x", int r = 1)
    {
        while(--r)
            s += s;
        t = t + s;
        return s;
    }
    
    int main()
    {
        string name = "a";
        cout << fun(name);
        cout << name;
    }
    • xxxxaaaa
    • xxaa
    • xa
    • xxxaa
  17. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        float x = 3.14, *p = &x;
    
        p[0] = ++x;
        cout << x;
    }
    • 3.14
    • 0.0
    • 6.28
    • 4.14
  18. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int fun(long a, long b = 1)
    {
        return a << b;
    }
    
    int fun(int a, char b = 1)
    {
        return b - a;
    }
    int fun(int a, char b = 'z')
    {
        return b - a;
    }
    int fun(float a, float b = 0)
    {
       return a * b;
    }
    
    int main()
    {
        cout << fun(1L) << fun('x') << fun(2e0f);
    }
    • 234
    • 121
    • 220
    • 112
  19. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    int f1(int a)
    {
       return ++a;
    }
    
    int f2(int &a)
    {
        return ++a;
    }
    
    int f3(int *a)
    {
       return *a + 1;
    }
    
    int main()
    {
        int value = 2;
    
        cout << f1(value);
        cout << f2(vlaue);
        cout << f3(&value);
    }
    • 333
    • 456
    • 445
    • 334
  20. What is the output of the following snippet?

    #include <iostream>
    
    using namespace std;
    
    struct S {
        float *f;
    }
    
    voiid make(S *p, float x = 10)
    {
        float *f = new float ;
        *f = sizeof(*f) / sizeof(float) * 10;
        p->f = f;
    }
    
    int main()
    {
        S *ss = new s;
        make(ss);
        cout << *(*ss).f;
        delete ss->f;
        delete ss;
    }
    • 80
    • 10
    • 40
    • 20
Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments