Sunteți pe pagina 1din 23

(Atentie!

Pentru rezolvare nu este voie sa se apeleze la medii de


dezvoltarea software-ului).
Algoritmul urmator testeaza daca sirul de caractere s este palindrom
(citit atat de la stanga la dreapta, cat si de
la dreapta la stanga, se obtine acelasi sir de caractere).
{i=0; j=strlen(s)-1;
37 while(i<j && s[i]==s[j]) {i=i+1; j=j-1;} b
if(...) printf(“palindrom”; else printf(“nu este palindrom”);
}
Care este expresia care poate inlocui punctele de suspensie astfel incat
algoritmul sa fie corect?
a. i == j c. i<j
b. i>=j d. i!=j
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Care din urmatoarele secvente de instructiuni va afisa (cu un spatiu intre
ele) in ordine descrescatoare toate
numerele naturale impare mai mici sau egale cu o valoare naturala data
49 c
a?
a. for (i = 1; i >= a; i += 2) printf(“%d ”, i);
b. for (i = 1; i <= a; i--) if (a % 2 == 0) printf(“%d ”, i);
c. for (i = a; i >= 1; i--) if (i % 2 != 0) printf(“%d ”, i);
d. for (i = a; i <=1; i++) if (a%2 == 1) printf(“%d ”, i);
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Care dintre secventele de mai jos conduce la memorarea in variabila
max a celei mai mari dintre cele n valori
intregi retinute in tabloul unidimensional a (in care a[0] este primul
element)?
34 b
a. for(i=0; i<n-1; i++) if (a[i] > a[i+1]) max = a[i];
b. for(i=0; i<n-1; i++) if (a[i] > a[i+1]) {max = a[i]; a[i] = a[i+1]; a[i+1]
= max;}
max = a[n-1];
c. max=a[0];for (i=1; i<n; i++) if (a[i] < max) max = a[i];
d. max=0; for (i=0; i<n; i++) if a([i]>max) a[i]=max;
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Care dintre urmatoarele expresii are valoarea 1 daca si numai daca
numarul natural c este un multiplu comun
24 al numerelor naturale nenule (unsigned int) a si b? c
a. (c%a == 0 ) || (c %b ==0)
b. (c%a == 0) | (c%b == 0)
c. (c%a == 0) && (c%b ==0)
d. (c%a == 0) & (c%b == 0)
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Care dintre urmatoarele secvente calculeaza suma elementelor de pe
linia k a unei matrice a, cu m linii
(numerotate de la 1 la m; linia de indice 0 este utilizata in alte scopuri) si
32 n coloane (numerotate de la 1 la n; d
coloana de indice 0 este utilizata in alte scopuri)?
a. s = 0; for (i=m; i>0; i--) s+=a[k][i];
b. s = 0; i = 1; while (i<=m) {s+=a[i][[k]; i++;}
c. s = 0; for(i=n; i>0; i--) s+=a[i][k];
d. s = 0; i=1; while(i<=n) {s+=a[k][i]; i++;}
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Care va fi continutul fisierului “H.TXT” in urma executarii programului
urmator?
#include <stdio.h>
FILE *f; char x, y, z;
void main(){
f = fopen(“H.TXT”,”w”);
fprintf(f,”Ieri %d\n”,13);
fprintf(f,”Azi %d”,14);
fprintf(f,”Maine %d\n”,15);
fclose(f);
80 d
}
a. Ieri c. Ieri 13
13 Azi 14
Maine
15
Azi 14
Maine 15
b. Ieri 13
Azi 14 Maine 15
d. Ieri
13 Azi 14 Maine
15
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Daca n este un numar natural (intreg pozitiv), ce realizeaza urmatoarea
secventa?
{p=1;
71 while(n) {p *= n; n--}; c
}
a. Calculeaza in p valoarea n*p c. Calculeaza in variabila p valoarea lui
n!
b. Calculeaza in p valoarea np d. Calculeaza in variabila p valoarea lui
p^n.
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Fie secventa de instructiuni:
{x=x-1; y=2*x+y; x=2*x+1;}
Care au fost valorile variabilelor x si y, de tip int, la inceputul executarii
26 secventei de instructiuni date, daca la c
finalul executarii x are valoarea 2007 iar y are valoarea 2009.
a. x = 1002 si y = 5
b. x = 3 si y = 1004
c. x = 1004 si y = 3
d. x = 2007 si y = 2009
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Fie secventa:
{char c; for c=’A’; c <=’Z’; c++) printf(“%d”, c);}
40 Prin executarea acesteia se obtin: b
a. numerele naturale din intervalul [1, 27]
b. numerele naturale din intervalul [65, 90]
c. literele mari ale alfabetului englez
d. literele mari ale alfabetului romanesc
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Fie secventa:
a = 99; while (a >=1) {printf(“%d\n”, a); a=a-2;}
39 Prin executarea acesteia se afiseaza: b
a. toate numerele naturale de doua cifre
b. numerele naturale impare mai mici ca 100
c. toate numerele intregi mai mici ca 99
d. numerele naturale pare, mai mari decat 1
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Fie secventa:
for(j=1; j<=5; j++) for (i=1; i<=3; i++) a[i][j] = i+j;
Prin executarea acesteia, tabloul a va avea urmatorul continut
a.
234
345
456
567
678
43 c. c
23456
34567
45678
b.
245
345
456
d.
23456
32345
43456
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Fie tabloul unidimensional v si secventa
for (j = k; j>=q; j--) v[...] = v[j];
Cu ce expresie trebuie inlocuite punctele de suspensie astfel incat in
47 urma executarii secventei elementele c
v[q], v[q+1], ..., v[k] sa se deplaseze cu p-1 vpozitii spre dreapta?
a. p-1-j
b. j-p+1
c. p-1+j
d. p-j+1
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Fie v un tablou unidimensional format din n componente intregi,
numerotate de la 1 la n (pozitia 0 are alta
semnificatie), iar p si k doua variabile de tip intreg. In care dintre
urmatoarele secvente variabilei p i se
30 c
atribuie prima valoare strict pozitiva din tabloul v, daca exista o astfel de
valoare, sau 0 in caz contrar?
a. {p = 0; k = 1; while(v[k]>=0) k++; p = v[k];}
b. {p = 0; k = n; while(v[k]<=0) k--; p = v[k];}
c. {p = 0; for(k=1; k<=n; k++) if (v[k]>0 && !p) p = v[k];}
d. {p = 0; for(k=1; k<=n; k++) if (v[k]>0) p = v[k];
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Fie v un tablou unidimensional format din n numere intregi (n >=2).
Stiind ca primul element din tablou se
afla pe pozitia 1 (pozitia 0 este utilizata in alte scopuri), indicati care
29 dintre urmatoarele secvente atribuie b
variabilei intregi max cea mai mare valoare din tabloul v:
a. for(int i=2; i<=n; i++) if (v[i-1]<=v[i]) v[i-1] = v[i]; max = v[1];
b. for(int i=2; i<=n; i++)if(v[i-1]>v[i]) v[i] = v[i-1]; max = v[n];
c. for(int i=1; i<n; i++) if(v[i+1]>v[i])v[i] = v[i+1]; max = v[1];
d. for(int i=n; i>=2; i--) if (v[i]>v[i-1]) v[i]=v[i-1]; max = v[n];
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
In secventa urmatoare de instructiuni, n si y sunt variabile intregi.
{n=156; y = 770;
while(n*y > 0) if (n >y) n = n%y; else y = y%n;
21 c
y = y+n;
}
Valoarea variabilei y la finalul executarii secventei este:
a. 13 c. 2
b. 0 d. 4
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Pentru un tablou x declarat global, cu 10 componente intregi, stabiliti
care sunt valorile memorate de
componentele tabloului x in urma apelului ex(0, 9), daca functia ex este
definita astfel:
void ex(int i, int j){
if(i <= j) {
22 c
x[i] = i; x[j] = j; ex(i+1, j-1);
if (i % 2 != 0) {x[i]=j; x[j]=9-x[i];}
}
}
a. (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
b. (0, 8, 2, 6, 4, 5, 3, 7, 1, 9)
c. (1, 9, 3, 7, 5, 6, 4, 8, 2, 10)
d. (9, 1, 7, 3, 5, 4, 6, 8, 0)
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Se considera ca declaratia
struct patrat { float latura, aria;} p;
defineste in C patrate caracterizate prin latura si arie. Care din
23 urmatoarele expresii atribuie campului aria al c
variabilei p valoarea ariei patratului respectiv?
a. aria = p.laturta * p.latura;
b. aria = latura * latura;
c. p.aria = p.latura * p.latura;
d. p.aria = latura * latura;
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Se considera functia f al acarui prototip/antet este bazat pe:
void f(int a[100][100], int n, int m, int i, intj);
Functia precizata realizeaza interschimbarea liniilor i si j ale tabloului
transmis prin parametrul a, care are n
linii si m coloane. Pentru a ordona crescator numerele de pe coloana a 3-
68 a a tabloului a, functia f se apeleaza d
in timpul executarii secventei:
for (i=0; i<n-1;i++)
for(j = i+1; j<n; j++)
if(a[i][3] >a[j][3]) f(a, n, m, i, j);
de un numar de ori egal cu:
a. m c. n
b. 1 d. cel mult n(n-1)/2
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Se considera programul
#include <stdio.h>
void aplic(int x, int *y){x+=3; (*y)-=2; printf(“%d, %d”, x, *y);}
void main(void){int x=12, y=20; aplic(x, &x); printf(“,%d,”,x);
42 b
printf(“%d,”,y);aplic(y,&y); }
Ce se va afisa in urma executarii acestuia:
a. 13,13,13,13,16,14
b. 15,10,10,20,23,18
c. 15,13,13,13,16,11
d. 15,10,15,20,23,20
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Se considera secventa:
{int a = 5, b = 0;
do {
a--; b +=a*a;
27 }while(a!=0); d
}
Ce valori vor avea variabilele a si b la finalul executarii secventei?
a. a = 0 si b = 0
b. a = -1 si b = 25
c. a = 0 si b = 55
d. a = 0 si b = 30
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Se considera tabloul unidimensional
int a[5]={1, 2, 3, 4, 5};
46 si secventa de instructiuni d
for(i=0; i<5; i++) {s=0; for(j=0; j<=i; j++) s+=a[j]; printf(“%d”,s);}
Care va fi rezultatul afisat in urma executarii secventei de mai sus?
a. 1151515 c. 6101315
b. 15 d. 1361015
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Se considera urmatoarele declaratii:
int x[5] = {0, 1, 5, 3, 4};
int y, i;
si secventa de instructiuni:
{
70 b
y = x[1];
for (i = 0; i<=4; i++) if (y < x[i]) y = x[i];
printf(“%d”, y);
}
Ce se va afisa in urma executarii acestei secvente?
a. 0 c. 13
b. 5 d. valoare nedeterminata
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
Variabile a si b sunt declarate astfel: char a[20,b[20]; Ce se afiseaza in
urma executarii secventei urmatoare:
{
36 a B????
strcpy(a, “examen20”); strcpy(b, “08”);
printf(“%s%s”, strcat(a, “*”), b);
}
a. examen20*08 c. examen20examen2008
b. examen2008 d. examen160
Care din operatiile urmatoare atribuie variabilei float x media aritmetica
a
6 a
a. x = (a + b + c) /3; c. x = a / 3.0 + b/3 + c/3;
b. x = (a + b + c) / 2.0; d. a = (a + b + c) / 3.0;
Care din urmatoarele afirmatii este falsa?
82 a. n^2 = O(n^2/2) c. 2^n = O(n) c
b. sin(n) = o(n) d. n^2+3n ~ n^2
Care din urmatoarele variante reprezinta antetul corect al unei functii
care primeste parametri intregi a si b si
intoarce prin cel de-al treilea parametru x, cea mai mare dintre cele doua
valori a si b?
52 d
a. int maxim (int a, int b, int x){ x = (a>b)?a:b; return x;}
b. int maxim (int a, int b) {return (a>b)?a:b;}
c. void maxim (int a , int b, int x) {x = (a>b)?a:b;}
d. void maxim (int a, int b, int * x){ *x = (a>b)?a:b;}
Care dintre expresiile de mai jos va avea valoarea 1?
35 a. ‘a’ == ‘A’ c. ‘a’ < ‘b’ c
b. ‘1’ + ‘2’ == ‘3’ d. ‘1’ > ‘2’
Care dintre urmatoarele declaratii sunt corecte sintactic:
1) int ab=30;
2) int a+b;
3) float a1;
13 c
4) char 2ab;
5) int m.n;
a. 1, 3, 5 c. 1, 3
b. 1, 2, 3, 4, 5 d. 1, 3, 4, 5
Care dintre urmatoarele formule de corectitudine logica este falsa?
a. {x = n!} n:=n+1; x := x*n {x = n!}
b. {(x = 640) and (y = 480)} t:=x; x:=y; y:=t {(x = 480) and (y=640)}
84 d
c. {(x = 640) and (y = 480)} x:=x+y; y:=x-y; x:=x-y {(x = 480) and
(y=640)}
d. {true} if x>y then SEQ t:=x; x:=y; y:=t END {x >y}
Care dintre urmatoarele reprezinta o declaratie corecta pentru o variabila
x care memoreaza simultan numele
si media a maximum 30 de studenti?
31 a. typedef struct {char nume[30]; double media;} x; d
b. char x.nume[30]; double x.media[30];
c. struct {char nume[30]; double media;} x;
d. struct {char nume[30]; double media;} x[30];
Care dintre urmatoarele secvente au ca efect citirea unui caracter din
fisierul “C.TXT”?
a. f = fopen(“C.TXT”, “r”); fclose(f);
74 c
b. f = fopen(“C.TXT”, “r”); scanf(“%c”, &x); fclose(f);
c. f = fopen(“C.TXT”, “r”); fscanf(f, “%c”, &x); fclose(f);
d. f = fopen(“C.TXT”, “r”); fscanf( “%c”, &x, f); fclose(f);
Care dintre urmatoarele secvente de instructiuni determina, in mod
corect maximul a trei numere?
1) if (a>b && a >c) max = a; else if (b > a && b > c) max = b; else max
= c;
2) if (a>b) if (a>c) max = a; else max = c; else max = b;
19 3) if (a>b) if (a>c) max = a; else if (b>c) max = b; else max = c; b
4) if (a>b) if (b>c) max = b; else max = c; else max = a;
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 1, 2, 3, 4 c. 2,3, 4
b. 1, 3 d. 1, 3, 4
Care dintre urmatoarele variante realizeaza deschiderea la citire a
fisierului text “A.TXT”
a. f = fopen(“A.TXT”, “w”);
72 c
b. f = fopen(“r”, “A. TXT”);
c. f = fopen(“A.TXT”, “r”);
d. f = fopen(”A.TXT”, r);
Care dintre urmatoarele variante realizeaza deschiderea la scriere a
fisierului text “B.TXT”?
a. f = fopen(“B.TXT”,”r”);
73 b
b. f = fopen(“B.TXT”,”w”);
c. f = fopen(“w”, “B.TXT”);
d. f = fopen(“B.TXT”, w);
Care este ordinea de executare a instructiunilor urmatoare pentru ca in
final variabilele intregi x, y si z sa aiba
valori egale, indiferent de valorile lor initiale:
{
/* 1 */ x = x / 10;
5 /* 2 */ z = x / y; b
/* 3 */ x = 100;
/* 4 */ y = x / 10;
}
a. 2, 4, 1, 3 c. 1, 2, 4, 3
b. 3, 4, 2, 1 d. 3, 1, 2, 4.
56 Care este rezultatul tiparit de programul urmator? c
#include <stdio.h>
#include <string.h>
void f(char s[], int);
void main(){f(“examenul”,0);}
void f(char s[256], int i){
if(i<strlen(s)) {
f(s, i+1);
if (strchr(“aeiou”, s[i]) != 0) printf(“%c”, s[i]);
}
}
a. eaeu c. ueae
b. examenul d. e

Care este valoarea expresiei 20 / 10 * 2 + 30 / 15 * 2


2 a. 2 c. 8 c
b. 0 d. 4
Care este valoarea expresiei: 4000/10/10*2+4*10*10 / 2
3 a. 400 c. 240 b
b. 280 d. 220
Care sunt valorile finale ale variabilelor intregi x, y si z dupa executarea
operatiei de decizie,
if (x>1 && y-z>0) x = y-z;
else {y = x-1; z = y+x;}
daca initial x = 23, y = 14 si z = 25?
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
9 c
dezvoltarea software-ului).
a. x = -11, y = 14, z = 25
b. x = 23, y = 22, z = 37
c. x = 23, y = 22, z = 45
d. x = -11, y = 22, z = 37
e. x = 23, y = -11, z = 25
Care sunt valorile variabilelor intregi a si b dupa executarea
instructiunilor urmatoare:
{ a = 1235; b = a % 10;
if ((a-b) % 10 == 0) { a = a / 100; b = a % 100;}
if (a == b) a = a *100;
}
8 (Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de d
dezvoltarea software-ului).
a. a = 1200 si b = 5
b. a = 12 si b = 35
c. a = 1200 si b = 35
d. a = 1200 si b = 12
e. a = 100 si b = 35
Care sunt valorile variabilelor intregi x si y dupa executarea in ordine a
urmatoarelor trei instructiuni:
{
x = 0x3;
7 y = x + 0x3; d
x = x - 3;
}
a. x = 0 si y = 3 c. x= 6 si y = 0
b. x = 3 si y = 0 d. x= 0 si y = 6
Care vor fi valorile variabilelor intregi a si b dupa executarea
urmatoarelor instructiuni:
{if (a = 10, b = a+1, a != b) b++; else a++; a*=b;}
18 (Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de b
dezvoltarea software-ului).
a. a = 121, b = 11 c. a = 120, b = 11
b. a = 120, b = 12 d. a = 121, b = 12.
Ce va fi afisat pe ecran in urma instructiunii printf(“%6.3f\n”, 45.23); ?
10 a. +45.230 c. 045.230 b
b. 45.230 d. 45.023
Conditia ca doua numere intregi a si b sa fie ambele nenule este:
a. (a ! = 0 || b != 0)
53 b. a*b != 0 d
c. a+b != 0;
d. ! (a == 0 && b == 0)
Consideram urmatoarea declaratie:
struct produs {char denumire[10]; int pret;} p;
Cum se poate accesa prima litera a denumirii unui produs ale carui
69 c
caracteristici sunt memorate in variabila p?
a. p.denumire[1] c. p.denumire[0]
b. p->denumire d. p->denumire[1]
Considerand ca variabila f este de tip fisier (FILE *), care dintre
urmatoarele instructiuni verifica daca s-a
ajuns la sfarsitul fisierului indicat de f?
75 a. if (eof(f)) printf(“final”); else printf(“mai este”); b
b. if (feof(f)) printf(“final”); else printf(“mai este”);
c. if (!eof(f)) printf(“final”); else printf(“mai este”);
d. if(!feof(f)) printf(“final”); else printf(“mai este”);
17 Considerand variabila x de tip float si variabila de tip int a, care va fi c
secventa de caractere afisate in urma
executarii secventei de instructiuni(s inseamna un spatiu):
x = -4.3;
a = (int)fabs(-4.0);
printf(“%2d%4.2f%2d”, a, fabs(x), (int)ceil(a+x));
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. s4s4.300 c. s44.30s0
b. 44.30s0 d. 4s4.30s0

Daca a, b sunt variabile de tip int, iar x si y sunt variabile de tip float,
stabiliti care dintre urmatoarele secvente
de atribuiri sunt incorecte:
1) b = 2; a = b/2;
2) x = 8; y = 10; a == x+y;
12 d
3) x = 4; b = 2; y = x/b;
4) x == 20; y == 10; x =(x+y)/2;
5) a = b = 5; x = a+b;
a. 2, 4, 5 c. 2, 3, 4, 5
b. 1, 2, 3, 4, 5 d. 2, 4
Daca in cadrul unui program variabila p urmeaza sa memoreze simultan
coordonatele reale (abscisa si
ordonata) pentru un punct in plan, atunci variabila p trebuie declarata
astfel:
55 a. struct punct {float x, y;} p; a
b. typedef struct punct {
float x, y;} p;
c. char p[2];
d. float p;
Determinati valoarea expresiei ((int)fabs(-14.2)) % 7
16 a. 14 c. 0 c
b. 2 d. 8
Determinati valoarea expresiei fabs(-11.2) + sqrt(floor(16.23)).
15 a. -9.2 c. 14.2 d ???
b. 15 d. 15.2
Dintre tipurile simple de date face parte tipul:
38 a. double c. Tablou a
b. FILE d. Uniune (union)
Fie declaratiile:
int a[5] = {1, 2,4, 3, 5};
int b[4] = {4, 2, 1, 3};
45 c
atunci a[b[0]] este:
a. 3 c. 5
b. 1 d. 4
Fie definitia:
int a = 5, b = 3, c = 1, d = 3;
Care dintre urmatoarele expresii logice au valoarea 1 (adevarat):
1) a < b || c)
2) (b == d && c || a >= b)
3) (c && d > b)
14 d
4) a > b || !(d<a)
5) (a == b) && c
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 1, 2, 3, 4 c. 1, 4
b. 1, 2, 3, 4, 5 d. 1, 2, 4
Fie expresiile A = 18 - 3 +2; B = 18 + 7 / 3 +2; C = 2.3 + 3%; D = 3 +
7.0/3; E = 3 + 4 % 2.3; F = 24 % (7 +
1 1); Care din aceste expresii sunt corecte? b
a. A, B, C, D, E, F. c. A, B, C, D, F
b. A, B, D, F d. A, B, C, F
Fie functia
void f( ... ) {a++; *b--; *c = a + *b;}
Se stie ca x, y si z sunt variabile intregi. Intitial x = 11 si y = 6, iar dupa
apelul f(x, &y, &z), valorile celor trei
variabile sunt x = 11, y = 5 si z = 17. Care dintre urmatoarele constructii
54 c
reprezint antetul corect al functiei?
a. void f(int *a, int b, int *c)
b. void f(int a, int b, int c)
c. void f(int a, int *b, int *c)
d. void f(int *a, int *b, int *c)
Fie instructiunea:
if (x>y) if (y>z) if(z>x) s = x+y+z; else p = x*y*z;
O secventa de instructiuni echivalenta cu aceasta, dar care foloseste o
singura data cavantul cheie if, este:
33 d
a. if(x>y && y>z) s = x+y+z; else p = x*y*z;
b. if(x>y || y>z) s = x+y+z;
c. if(x>y && y>z) s = x+y+z;
d. if(x>y && y>z) p = x*y*z;
67 Fie v un tablou unidimensional cu n elemente de tip intreg, iar n un b
numar natural nenul (n <=100) si secventa
urmatoare:
{i=0;
while (i<n) {v[i] = i*i; i++;}
}
De cate ori se repeta instructiunea i++; in timpul executarii secventei
date?
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. n+1 ori c. 0 ori
b. n ori d. n-1 ori

Functia revers(v, p, q) inverseaza ordinea elementelor din tabloul


unidimensional v aflate pe pozitiile p, p+1,
..., q-1, q (se presupune ca p <= q). Care dintre urmatoarele secvente de
program inverseaza doar prdinea
28 elementelor v[p] si v[q]: b
a. revers(v, p, q); revers(v, p-1, q+1);
b. revers(v, p, q); revers(v, p+1, q-1);
c. revers(v, p, q); revers(v, p+1, q+1);
d. revers(v, p-1, q-1); revers(v, p, q);
Functia s (scrisa in limbajul C, standard) este utilizata pentru
interschimbarea valorilor a doua numere intregi,
pozitive. Definitia corecta (in antet) a acesteia trebuie sa fie:
50 a. void s(int x, int y) { ... } c
b. void s(int *x, int *y) { ... }
c. void s(unsigned int *, unsigned int *) { ... }
d. void s(unsigned int, unsigned int) { ... }
In functia recursiva de mai jos se considera ca tabloul unidimensional v
este declarat global.
void star(int i){
if(i<10) {
printf(“*”);
if (v[i] == i+1) star(i+2); else star(i+1);
}
}
91 a
Pentru care dintre declaratiile urmatoare, apelul star(0) produce 7
asteriscuri (stelute)?
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. int v[] = {1, 4, 3, 2, 1, 6, 5, 4, 3, 10};
b. int v[] = {3, 2, 1, 4, 3, 6, 7, 2, 9, 2};
c. int v[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
d. int v[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
In secventa urmatoare, variabilele n, x si y sunt de tip intreg.
{x = 1; y = x-1;
do{
y=x*(x-1)+y;
x++;
}while(x <=n);
}
25 b d
Daca valoarea variabilei n este un numar naural nenul, de cate ori este
evaluata expresia logica x <= n in
timpul executarii secventei?
a. de n2 ori
b. de n ori
c. o singura data
d. de n+1 ori
Parametrii utilizati la apelul unei functii, se numesc:
41 a. parametri locali c. parametri actuali c
b. parametri globali d. parametri formali
Pentru a atribui variabilei n o valoare egala cu lungimea unui sir de
caractere w (ce respecta conventia
51 terminatorului de sir) se utilizeaza instructiunea: d
a. n = length(w); c. n = (int)w[0];
b. strlen(w) = n; d. n = strlen(w);
Pentru definitia alaturata a functiei ex(), stabiliti ce se afiseaza la apelul
ex(120)?
void ex(int x){
if (x != 0){
printf(“%d”, x %10);
ex(x/10);
20 c
}
}
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 012 c. 021
b. 120 d. 21
Pentru o valoare naturala mai mare decat 1 memorata in variabila
globala n, subprogramul urmator afiseaza
cel mai mare divizor al lui n, mai mic decat n, la apelul divi(n).
void divi(long i){
92 if ( ... == 0) printf(“%ld”, ...); else divi(i-1); a
}
Cu ce expresii trebuie completate punctele de suspensie?
a. n % i si i c. n%(i-1)=0 si i
b. n% (i-1) si i-1 d. n%i si i-1
Pentru un tablou bidimensional a cu 10 randuri si 10 coloane, stabiliti ce
calculeaza secventa de program
urmatoare, in variabila s:
s = 0;
for (i = 0; i<10; i++) for (j = i; j <10; j++) s+=a[i][j];
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
63 c
dezvoltarea software-ului).
a. Suma elementelor situate strict deasupra diagonalei principale
b. Suma elementelor situate strict deasupra diagonalei secundare
c. Suma elementelor situate deasupra diagonalei principale, inclusiv
diagonala principala
d. Suma elementelor situate strict sub diagonala principala
Prototipul corect al unei functii care primeste doua numere intregi ca
primi doi parametri (de intrare) si
determina media aritmetica si produsul celor doua numere, pe care le
44 transmite apelantului prin urmatorii doi c
parametri este:
a. int calcul(int, int, int *); c. void calcul (int, int, double *, int *);
b. void calcul(int, int, double, int); d. void calcul(int, int, int *, int *);
Se considera algoritmul:
1. citeste n; a = 0; b = 1; k = 2;
2. Cat timp k<n executa { scrie a, b; a = a+b; b = a+b; k = k+2;}
81 3. Daca k = n atunci scrie a, b; altfel scrie a. c
Ce sir va calcula algoritmul pentru n = 7?
a. 0, 1, 1, 1, 2, 2, 3 c. 0, 1, 1, 2, 3, 5, 8
b. 0, 1, 1, 2, 3, 3, 6 d. 0, 1, 0, 1, 0, 1, 0
Se considera algoritmul:
integer m, n, x, y;
SEQ
read m, n ;
if (x>0) and (y>0) then
SEQ
x:=m; y:=n;
while x <> y do if x>y then x:=x-y else y:=y-x;
85 c
write x
END
END
Care este proprietatea invarianta a buclei while?
a. x <> y
b. (x = m) and (y = n)
c. (cmmdc(x, y) = cmmdc(m, n)) and (x>0) and (y>0)
d. (x > 0) and (y > 0)
Se considera algoritmul:
procedure insert_sort(n, x);
integer n;
integer array x(n);
integer i, j, temp;
SEQ
for i = 2, n, 1 do
SEQ
temp := x[i];
j := i-1;
while ( j>=1) and (x[j] > temp) do
83 SEQ c
x[j+1] := x[j];
j := j-1;
END
x[j+1] := temp
END;
return
END
Complexitatea algoritmului (la nivelul numarului de comparatii
efectuate) este:
a. O(n) c. O(n^2)
b. O(1) d. O(n log2n)
Se considera declararea
struct fractie {unsigned int x, y;} s, f1, f2;
in care campurile x si y reprezinta numaratorul, respectiv numitorul unei
fractii. Care dintre urmatoarele
variante construieste in variabila s o fractie echivalenta cu suma
48 c
fractiilor f1 si f2?
a. {s.x = f1.x + f2.x; s.y = f1.y + f2.y;}
b. {s = f1 + f2;}
c. {s.x = f1.x * f2.y + f1.y * f2.x; s.y = f1.y * f2.y;}
d. {s.x = f1.x * f1.y + f2.x * f2.y; s.y = f1.y * f2.y;}
Se considera definitia
long f(int n, int k){
if (n == k || k == 1) return 1;
if (n < k) return 0;
long s=0, i;
for (i=1; i<=k; i++) s+=f(n-k,i);
89 return s; a
}
Stabiliti ce valoare returneaza apelul f(6,3).
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 3 c. 2
b. 1 d. 4
Se considera definitia
void f(int n){
int j;
if (n>0) for (j=1; j<=n; j++) {printf(“%d”,j); f(n-1);}
86 d
}
Ce se afiseaza ca urmare a apelului f(2)?
a. 1122 c. 121
b. 112 d. 1121
Se considera definitia:
long f(int n){
if (n == 0) return 1;
else if (n == 1) return 4;
else return f(n-1) - f(n-2);
88 } d
Stabiliti ce valoasre returneaza apelul f(7).
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 1 c. -4
b. -3 d. 4
Se considera definitia:
long f(int x, int y){
if (x == y || x == 0) return 1;
else return f(x,y-1)+f(x-1,y-1);
}
90 b
Ce valoare returneaza apelul f(8,10)?
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 50 c. 40
b. 45 d. 55
Se considera programul C:
#include <stdio.h>
void F(int *a, int b){
b +=*a; (*a)*=b;
printf(“%d %d “, *a, b);
}
void main(void){
64 int x = 5, y = 7; F(&x, y); c
printf(“%d %d“, x, y);
}
Ce se va afisa in urma executarii? (Atentie! Pentru rezolvare nu este
voie sa se apeleze la medii de dezvoltarea
software-ului).
a. 12 60 5 7 c. 60 12 60 7
b. 60 12 5 7 d. 60 12 60 12
Se considera secventa de instructiuni:
{char a[]=”aabbddeff”;
char b[] =”aabbdeeff”’
if (strcmp(a, b) == 0) printf (“egalitate”); else printf(“%s “,b);
}
66 a
Care este rezultatul obtinut in urma executarii?
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. aabbdeeff c. aabbddeff
b. nici una dintre variantele propuse d. egalitate
Se considera secventa:
{ int a =82, b = 24;
a = a % 2 + b / 2 / 2;
b = 2 * a % 2;
a = a + b;
b = a % 2 + b + 10 % 2;
4 } d
Care sunt valorile finale ale variabilelor a si b?
a. a = 5, b = 5
b. a = 6, b = 6
c. a = 0, b = 6
d. a = 6, b = 0
e. a = 0, b = 0
Se considera secventa:
{int i, j;
for (i = 1; i<n; i++) for(j = i; j < n; j++) if (j%i == 0) printf(“%d%d”, i,
j);
}
De cate ori se va executa instructiunea de decizie (marcata ingrosat: j%i
65 d
== 0) din secventa de program de
mai sus daca valoarea initiala a variabilei intregi n este 8?
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 16 c. 38
b. 36 d. 28
Se considera tabloul unidimensional a = (0, 1, 3, 2). Care este tabloul
unidimensional b astfel incat pentru
60 oricare 0 <= i <4 sa existe relatia a[b[i]] = b[a[i]]? a
a. b = (0, 1, 2, 3) c. b = (2, 3, 0, 1)
b. b = (3, 1, 0, 2) d. b = (1, 0, 2, 3)
Se considera tabloul unidimensional de intregi, notat cu a, in care
a[0] = 4, a[1] = 2, a[2] = 5, a[3] = 1, a[4]=3. Care va fi continutul sau
dupa executarea secventei urmatoare (in
care i si aux sunt de tip int):
for (i = 0; i<4; i++) if (a[i] > a[i+1]){
59 aux = a[i]; a[i] = a[i+1]; a[i+1] = aux; a
}
a. a[0] = 2, a[1] = 4, a[2] = 1, a[3] = 3, a[4]=5
b. a[0] = 4, a[1] = 2, a[2] = 5, a[3] = 1, a[4]=3
c. a[0] = 1, a[1] = 2, a[2] = 3, a[3] = 4, a[4]=5
d. a[0] = 4, a[1] = 2, a[2] = 1, a[3] = 3, a[4]=5
Se considera un tablul unidimensional in care elementele sunt in
ordinea: 1, 3, 5, 7, 10, 16, 21.Pentru a afla
pozitia pe care se afla valoarea x = 10 se aplica metoda cautarii binre.
94 Care este succesiunea de elemennte b
care astepau valoarea lui x:.
a. 21,16, 10 c. 1, 3, 5, 7, 10
b. 7, 16, 10 d. 5, 7, 10
Se considera urmatoarea functie recursiva apelata numai pentru numere
naturale nenule:
int f(int a, int b){
if (a<b) return a; else return f(a-b, b);
}
Care dintre urmatoarele functii este echivalenta cu functia data?
62 c
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. int f(int a, int b){return a*b;}
b. int f(int a, int b){return a-b+1;}
c. int f(int a, int b){return a%b;}
d. int f(int a, int b){return a/b;}
Se defineste tipul struct punct {float x, y;}; (pentru a memora
coordonatele carteziene - abscisa si ordonata -
ale unor puncte din planul xOy) si tabloul unidimensional a cu elemente
de tip struct punt. Care dintre
57 expresiile de mai jos are valoarea 1 daca si numai daca punctul ale carui b
coordonate sunt memorate in
elementul din tabloul aflat pe pozitia i are abscisa si ordonata egale?
a. a[i]->x == a[i]->y c. x[a[i]] == y[a[i]]
b. a[i].x == a[i].y d. a.x[i] == a.y[i]
Stabiliti care dintre urmatoarele declaratii de variabile sunt corecte:
1) float 1t, 2t;
2) int a[1..10];
3) int x, y;
11 b
4) string s;
5 ) double e; v;
a. 1, 2, 3, 4, 5 c. 2, 3, 4, 5
b. 3 d. 2, 3, 4
Stiind ca fisierul “D.TXT” are urmatorul continut:
13 45 23
32 42 234
56 78
32 23 43
32 32 32 32
ce se va afisa in urma executarii programului urmator?
#include <stdio.h>
FILE *f; int x, y, z;
76 void main(){ d
f = fopen(“D.TXT”,”r”);
fscanf(f, “%d %d %d\n”, &x, &y, &z);
fscanf(f, “%d”, &z);
printf(“%d %d %d \n”, x, y, z);
}
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 13 45 23 c. 13 32 23
b. 13 32 56 d. 13 45 32
Stiind ca fisierul “E.TXT” are urmatorul continut:
1234
67 34 23
567 546 677
1234 3234 4565 6564
12345 12445 12223
ce se va afisa in urma executarii programului urmator?
#include <stdio.h>
FILE *f, int x, y, z;
77 void main(){ a
f = fopen(“E.TXT”, “r”);
fscanf(f, “%d %d”,&x, &y);
fscanf(f, “%d\n”,&z);
printf(“%d %d %d \n”, x, y, z);
}
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 1 2 3 c. 1 67 567
b. 1 2 67 d. 2 3 4
Stiind ca fisierul “F.TXT” are urmatorul continut:
12345 12
93 16 32
8.023 322 21
0.823 21
0.21 213.12
ce se va afisa in urma executarii programului urmator?
#include <stdio.h>
FILE *f, char x, y, z;
void main(){
78 f = fopen(“F.TXT”, “r”); b
fscanf(f, “%c”, &x);
fscanf(f,” %c”, &y);
while(getc(f) != ‘\n’);
fscanf(f, “%c”, &z);
printf(“%c %c %c \n”, x,y,z);
}
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. 1 2 3 c. 1 9 8
b. 1 2 9 d. 1 9 3
Stiind ca fisierul “G.TXT” are urmatorul continut:
IaEaws
S,a.d sdll
-dsa
Xda dsa asd
da
sda sad
ce se va afisa in urma executarii programului urmator?
#include <stdio.h>
FILE *f; char x, y, z;
void main(){
f = fopen(“G.TXT”,”r”);
79 c
while(getc(f) != ‘\n’);
fscanf(f,”%c”, &x);
while(getc(f) != ‘\n’);
fscanf(f,”%c”, &y);
while(getc(f) != ‘\n’);
fscanf(f,”%c”, &z);
printf(“%c %c %c \n”, x, y, z);
}
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. I S - c. S - X
b. a S - d. I E S
Stiind ca p este un vector (tablou unidimensional) cu 3 componente
intregi (tabloul este declarat global), M
este multimea tuturor cifrelor nenule, iar functia tipar afiseaza valorile
elementelot p[0], p[1] si p[2], cu ce
trebuie inlocuite simbolurile a, b si c in definitia functiei G astfel incat in
urma apelului G(0) sa se afiseze
93 toate elementele produsului cartezian MxMxM? d
void G(int k){
int i;
for (i = a; i<=b; i++) { p[k] = i; if (k == c) tipar(); else G(k+1);}
}
a. a = 0, b = 10, c = 3 c. a = 1, b = 9, c = 3
b. a = 1, b = 3, c = 9 d. a = 1, b = 9, c = 2
Variabila p este declarata astfel:
int *p;
Stiind ca p retine adresa unei variabile de tip int, care dintre urmatoarele
87 instructiuni afiseaza valoarea b
respectivei variabile intregi?
a. printf(“%p”,p); c. printf(“%d”, p*);
b. printf(“%d”,*p); d. printf(“%d”, &p);
Variabila s a fos declarata prin: char s[32];
Ce se afiseaza dupa executarea urmatoarei secvente?
{
strcpy(s,”Programare procedurala”);
58 c
printf(“%c”, s[strlen(s)-3]);
}
a. u c. a
b. r d. 29
Variabilele a si i sunt declarate astfel:
int a[100], i;
Care dintre urmatoarele instructiuni este corecta din punct de vedere
sintactic?
61 a
(Atentie! Pentru rezolvare nu este voie sa se apeleze la medii de
dezvoltarea software-ului).
a. a = i; c. i[1] = a;
b. i = a; d. i[a] = 1;

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