Sunteți pe pagina 1din 8

Introducere în programare 2022-2023

TEST, 15.11.2022

Numele, inițiala tatălui și prenumele: _________________________________________


Grupa (oficială): _________________________________________________________
Toate subiectele sunt obligatorii.
Timp de lucru 45 minute.
Comunicarea cu colegii în timpul examenului este interzisă.
Apelarea la materiale bibliografice este interzisă.
Folosirea calculatoarelor, a telefoanelor mobile sau a altor dispozitive electronice este interzisă.
Toate subiectele se consideră în contextul limbajului C++.

A (1p). Care din următoarele afirmații nu sunt adevărate?


a) Putem avea o variabilă cu numele else.
b) Putem avea o variabilă cu numele cin.
c) Nu putem scrie o funcție cu numele sin care să returneze suma dintre doi întregi.
d) Putem declara o structură cu numele while.
e) Alt răspuns.

B (1p). Se consideră următoarele declarații:


struct elev {
char nume[30];
char sex;
int varsta;
};

struct clasa {
int nrElevi;
elev E[30];
};

clasa scoala[20];
clasa S;

Care din următoarele instrucțiuni nu sunt corecte din punct de vedere sintactic?
a) scoala[15].E[3].varsta=5;
b) S.E[5].varsta=-10;
c) scoala[10].E[3].sex='A';
d) scoala[0].E[0].sex=70;
e) scoala[10].clasa[3].sex='M';
f) S.clasa[19].sex='M';
g) S.nrElevi=-2;
h) alt răspuns.
C (0,5px8=4p). Ce afișează următorarele programe C++?
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() int main()
{ {
int x=3; int y=3;
if (int x=2<5?4:6) int *x;
{ x=&y;
cout<<x; while (*x<=4)
} {
{ cout<<*x;
int x=7; ++*x;
} { int y=8; y--; }
cout<<x; }
return 0; cout<<*x;
} return 0;
}
a) nimic b) incorect sintactic c) 43 d) 27 a) nimic b) incorect sintactic c) 345
e) 23 f) 17 g) 13 h) alt răspuns d) o adresă de memorie e) 456 f) 387
g) 398 h) alt răspuns
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() int x=3;
{ int main()
int y=8; {
int x=3;
while (x<=y) for (int x=1;x<=::x;x++)
{ cout<<x;
++x; y--; return 0;
cout<<x; }
}
cout<<y; return 0; }
a) nimic b) este incorect sintactic c) 4565 a) nimic b) este incorect sintactic c) 123 d) 111
d) 3455 e) 4567892 e) va fi o buclă infinită f) 333 g) alt răspuns
#include <iostream> #include <iostream>
using namespace std; using namespace std;

int x=3; int i=2;


int main() int main()
{ {
int S=0;
for (int i=1,S=0;i<=4;i++) int i=1;
{ S=S+i; cout<<S; } for (;i<=4;)
cout<<S; return 0; i++;
} cout<<i;
return 0;
}
a) nimic b) incorect sintactic c) 136100 a) nimic b) incorect sintactic c) 6 d) 2345
e) 13610 f) 100 g) 0 h) 1361010 i) alt răspuns e) 23456 f) 12345 g) 5 h) 0 i) alt răspuns
#include <iostream> #include <iostream>
using namespace std; using namespace std;
struct nod {
int info; nod * succesor; int main()
int predecesor; {
}; int a[5]={1};
int main() cout<<*(a+1+2);
{ return 0;
nod* a; nod* b; }
a = new nod; b = new nod;
a->info = 3; b->info = 7;
b->succesor = a;
cout<<b->succesor->info; return 0;
}
a) nimic b) incorect sintactic c) 0 d) 3 e) 7 f) 2 a) nimic b) incorect sintactic c) 0 d) 1 e) 4 f) 3
g) o adresă de memorie h) 4 i) alt răspuns g) 5 h) o adresă de memorie i) alt răspuns
D (2*1,25p=2,5p). Care din următoarele apeluri ale funcției f este (sunt) corect(e) pentru programul
din stânga, în care comentariul /* APEL */ se va înlocui cu apelul funcției f specificat?
#include <iostream> a) programul nu este el însuși corect
using namespace std; sintactic, deci nu se poate pune problema
apelării funcției f
void f(int *x, int &y, int *a, int b[6]) b) f(x,y,t,t);
{ c) f(&x,y,t,t);
// ... d) f(&x,*(t+3),t,{1,2,3,4,5,6});
} e) f(&x,*(t+3),t,t);
f) f(t,x,t,t);
int main() g) f(&y,y,t,t);
{ h) f(&y,y,t,z);
int x=10, y=20, z[3][2]={1,2,3,4,5,6}, i) alt răspuns
t[6]={'A','B','C', 1,2};
/* APEL */
return 0;
}
#include<iostream> a) programul nu este el însuși corect
using namespace std; sintactic, deci nu se poate pune problema
void suma(int x, int &y, int z=0, int w=0) apelării funcției f
{ y++; cout<<x+y+z+w; } b) suma(x,x);
int main() c) suma(y,x,1);
{ int x=15, y=20; d) suma(y,x,x+y,100);
/* APEL */ e) suma(-5,100,y,x);
return 0; f) suma(2==3,x,y+1,x=22);
} i) alt răspuns

E (3*0,5p=1,5p). Uniți prin săgeți fiecare program din stânga cu desenele realizate de celelalte două
programe.

#include <iostream>
#include <graphics.h>
#include <winbgim.h>
int main()
{ initwindow(500,500); int i;
for (i=1;i<=250;i+=10)
line(500,500,i,1);
getch(); closegraph(); return 0; }

#include <iostream>
#include <graphics.h>
#include <winbgim.h>
int main()
{initwindow(500,500); int i;
for (i=1;i<=500;i+=10)
line(1,250,i,1);
getch(); closegraph(); return 0; }

#include <iostream>
#include <graphics.h>
#include <winbgim.h>
int main()
{ initwindow(500,500); int i;
for (i=1;i<=500;i+=10) line(250,250,i,1);
getch(); closegraph();
return 0; }
CIORNĂ
Introducere în programare 2022-2023

TEST, 15.11.2022

Numele, inițiala tatălui și prenumele: _________________________________________


Grupa (oficială): _________________________________________________________
Toate subiectele sunt obligatorii.
Timp de lucru 45 minute.
Comunicarea cu colegii în timpul examenului este interzisă.
Apelarea la materiale bibliografice este interzisă.
Folosirea calculatoarelor, a telefoanelor mobile sau a altor dispozitive electronice este interzisă.
Toate subiectele se consideră în contextul limbajului C++.

A (1p). Care din următoarele afirmații sunt adevărate?


a) Putem avea o variabilă cu numele while.
b) Putem avea o variabilă cu numele cout.
c) Nu putem scrie o funcție cu numele cos care să returneze suma dintre doi întregi.
d) Putem declara o structură cu numele if.
e) Alt răspuns.

B (1p). Se consideră următoarele declarații:


struct elev {
char nume[30];
char sex;
int varsta;
};

struct clasa {
int nrElevi;
elev E[30];
};

clasa scoala[20];
clasa S;

Care din următoarele instrucțiuni sunt corecte din punct de vedere sintactic?
a) S.nrElevi=-2;
b) S.E[5].varsta=-1;
c) scoala[15].E[3].varsta=5;
d) scoala[0].E[0].secs='m';
e) scoala[10].clasa[3].sex='M';
f) S.clasa[19].sex=70;
g) scoala[10].E[3].sex='A';
h) alt răspuns.
C (0,5px8=4p). Ce afișează următorarele programe C++?
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() int main()
{ {
int x=3; int y=3, B=9;
if (int x=2<5?4:6) int *x;
{ x=&y;
cout<<x; while (*x<=3)
} {
{ cout<<*x<<" ";
x=7; ++*x;
} { int y=B; cout<<B+y<<" "; }
cout<<x; }
return 0; cout<<*x;
} return 0;
}
a) nimic b) incorect sintactic c) 43 d) 27 a) nimic b) incorect sintactic c) 3 4 5
e) 23 f) 17 g) 47 h) alt răspuns d) o adresă de memorie e) 4 5 6 f) 3 18 4
g) 318 4 h) 34 5 4 i) alt răspuns
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() int x=3;
{ int main()
int y=8; {
int x=3;
while (x<=y) for (int x=1;x<=x;x++);
{ cout<<x;
++x; y--; return 0;
cout<<x; }
}
cout<<y; return 0; }
a) nimic b) este incorect sintactic c) 4565 a) nimic b) este incorect sintactic c) 123
d) 3455 e) 4567892 d) va fi o buclă infinită e) 3 f) alt răspuns
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int i=2;
int x=3; int main()
int main() {
{ int i=1;
int S=0; for (;i<=3;)
for (int i=1,S=0;i<=4;i++) i++;
{ S=S+i; cout<<S; } cout<<i;
cout<<S; return 0; return 0;
} }
a) nimic b) incorect sintactic c) 136100 a) nimic b) incorect sintactic c) 5 d) 2345
e) 13610 f) 10 0 g) 0 h) 13610150 i) alt răspuns e) 23456 f) 12345 g) 4 h) 0 i) alt răspuns
#include <iostream> #include <iostream>
using namespace std; using namespace std;
struct nod {
int info; int main()
nod * succesor; {
int predecesor; int a[5]={1,0,1,'A'};
}; cout<<*(a+3);
int main() return 0;
{ }
nod* a; nod* b;
a = new nod;
b = new nod;
a->info = 7; b->info = 3;
b->succesor = a;
cout<<b→succesor→info; return 0;
}
a) nimic b) incorect sintactic c) 0 d) 3 e) 7 f) 4 a) nimic b) incorect sintactic c) 0 d) 1 e) 4
g) o adresă de memorie h) 2 i) alt răspuns f) A g) 65 h) o adresă de memorie i) alt răspuns
D (2*1,25p=2,5p). Care din următoarele apeluri ale funcției f este (sunt) incorect(e) pentru
programul din stânga, în care comentariul /* APEL */ se va înlocui cu apelul funcției f specificat?
#include <iostream> a) programul nu este el însuși corect
using namespace std; sintactic, deci nu se poate pune problema
apelării funcției f
void f(int *x, int &y, int *a, int b[6]) b) f(x,y,t,t);
{ c) f(&x,y,t,t);
// ... d) f(&x,*(t+3),t,{1,2,3,4,5,6});
} e) f(&x,*(t+3),t,t);
f) f(t,x,t);
int main() g) f(&y,y,t,t);
{ int x=10, y=20, z[3][2]={1,2,3,4,5,6}, h) f(&y,y,t,*(z+2));
t[6]={'A','B','C', 1,2}; i) alt răspuns
/* APEL */
return 0;
}
#include<iostream> a) programul nu este el însuși corect
using namespace std; sintactic, deci nu se poate pune problema
void suma(int x, int &y, int z=0, int w=0) apelării funcției f
{ b) suma(x,x);
y++; c) suma(y,x,1);
cout<<x+y+z+w; d) suma(y,x,x+y,100);
} e) suma(-5,100,y,x);
int main() f) suma(2==3,x,y+1,x=22);
{ i) alt răspuns
int x=15, y=20;
/* APEL */
return 0;
}

E (3*0,5p=1,5p). Uniți prin săgeți fiecare program din stânga cu desenul realizat de el, aflat în
dreapta.

#include <iostream>
#include <graphics.h>
#include <winbgim.h>
int main()
{ initwindow(500,500); int i;
for (i=1;i<=250;i+=10)
line(500,500,i,1);
getch(); closegraph(); return 0; }

#include <iostream>
#include <graphics.h>
#include <winbgim.h>
int main()
{initwindow(500,500); int i;
for (i=1;i<=500;i+=10)
line(1,250,i,1);
getch(); closegraph(); return 0; }

#include <iostream>
#include <graphics.h>
#include <winbgim.h>
int main()
{ initwindow(500,500); int i;
for (i=1;i<=500;i+=10)
line(250,250,i,1);
getch(); closegraph(); return 0; }
CIORNĂ

S-ar putea să vă placă și