Documente Academic
Documente Profesional
Documente Cultură
Proc 2009
Proc 2009
Facultatea de Matematica-Informatica
Programare Procedurala
Probleme propuse
1. Se considera programul C:
#include <stdio.h>
int f(void){ int i = 0; return (i++); }
int g(void){static int x = 0; return (x++); }
void main(void){ int k;
for (k = 0; k < 3; k++) printf("F %d\n", f());
for (k = 0; k < 3; k++) printf("G %d\n", g());
}
3. Se considera programul
#include <stdio.h>
void main(void){
int s;
int k;
for (k = 1; k <= 10; ++k) s += k;
printf("Suma primelor 10 de numere naturale nenule este %d\n", s);
}
Ce afiseaza programul:
a) 6
b) intotdeauna 55
c) 10
d) uneori si 55
4. Se considera programul
#include <stdio.h>
void main(void){
int s=0;
int k;
for (k = 1; k <= 10; ++k); s += k;
printf("Suma primelor 10 de numere naturale nenule este %d\n", s);
}
Ce afiseaza programul:
a) 55
b) intotdeauna 11
c) uneori si 55
d) uneori si 11
5. Se considera programul
#include <stdio.h>
void main(void){
int s=0;
int n, k;
printf("N = "); scanf("%d", &n);
for (k = 1; k <= n; s+=++k);
printf("Suma primelor %d numere naturale nenule este %d\n", n, s);
}
Valoarea variabilei s pentru n = 10 este
a) 55
b) uneori si 65
c) uneori si 55
d) 65
6. Se considera programul C:
#include <stdio.h>
void main(void){
int k[5] = {1, 2, 3, 4, 5}, i=7;
for(i = 1; i<= 5; i++) printf("%d, ", k[i]);
printf("\n");
}
Care este rezultatul obtinut in urma executarii programului:
a) 1, 2, 3, 4, 5,
b) 0, 1, 2, 3, 4,
c) 2, 3, 4, 5, 0,
d) 2, 3, 4, 5, 7.
7. Se considera programul C:
#include <stdio.h>
void main(void){ char c;
c = 0xFF;
if(c == 0xFF) printf("Da\n"); else printf("Nu\n");
}
Ce se afiseaza?
a) Da
b) Nu
c) La compilare apare eroare de sintaxa
d) In timpul executarii apare o eroare
8. Fie programul:
#include <stdio.h>
void main(void){
int a=0, b=0; /* definire cu initializare */
int s = 6;
a = 5, /* incarca a
b=2; incarca b */
s = (a*b)/2;
printf("s= %d\n", s);
}
Care este valoarea variabilei s la incheierea executarii programului:
a) 6
b) 0
c) 5
d) La compilare apare eroare de sintaxa
9. Fie programul:
#include <stdio.h>
void main(void){
int a=1, b=3;
double f = 0.6;
f = a/b;
printf("f= %7.5lf\n", f);
}
Care este valoarea variabilei f afisata in urma executarii
programului:
a) 0.33333
b) 0
c) 0.00000
d) 0.6
#include <stdio.h>
void main(void){ int k;
clrscr();
for(k = 2; k<=10; ++k){
switch(k){
case 2:
case 3:
case 5:
case 7: printf("k = %d, Da\n", k); break;
defualt: printf("k = %d, Nu\n", k); break;
}
}
}
#include <stdio.h>
void main(void){ int k;
for (k = 1; k<= 10; k++);
printf("k = %d , sqr(k) = %d\n", k, k*k);
}
a)
#include <stdio.h>
static int tab[12]={1, 2, 4, 3, 5, 6, 9, 7, 10, 8, 0, 0};
static int dif[6];
void main(void){
int i=0, id=0;
while (tab[i] != 0) dif[id++] = tab[i++]-tab[i++];
for(id = 0; id<6; id++) printf("dif[ %d ] = %d\n", id, dif[id]);
}
b)
#include <stdio.h>
#define MAX 12
static int tab[12]={1, 2, 4, 3, 0, 6, 9, 7, 10, 8, 12, 11};
static int dif[6];
void main(void){
int i=0, id=0;
while (i < MAX) dif[id++] = tab[i++]-tab[i++];
for(id = 0; id<6; id++) printf("dif[ %d ] = %d\n", id, dif[id]);
}
c)
#include <stdio.h>
static int tab[12]={1, 2, 4, 3, 5, 6, 9, 7, 10, 8, -1, -1};
static int dif[6];
void main(void){
int i=0, id=0;
while (tab[i] != EOF) dif[id++] = tab[i++]-tab[i++];
for(id = 0; id<6; id++) printf("dif[ %d ] = %d\n", id, dif[id]);
}
d)
#include <stdio.h>
#define MAX 12
static int tab[MAX]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
static int dif[MAX/2];
void main(void){
int n = sizeof(tab)/sizeof(int);
int i=0, id=0;
while (i < n) dif[id++] = tab[i++]-tab[i++];
for(id = 0; id<6; id++) printf("dif[ %d ] = %d\n", id, dif[id]);
}
29. Care dintre urmatoarele expresii C, are ca valoare cel mai mic
dintre numerele naturale nenule, cu cel mult 4 cifre fiecare,
memorate in variabilele intregi x si y?
a. (x+y-abs(x-y))/2
b. x+y-abs(x-y)/2
c. (x+y+abs(x-y))/2
d. (x+y+abs(x+y))/2
31. Care dintre urmatoarele expresii C, are ca valoare cel mai mare
dintre numerele naturale nenule memorate in variabilele intregi a si
b?
a. (a+b+abs(a-b))/2
b. a+b+abs(a-b)/2
c. (a+b-abs(a-b))/2
d. (a+b-abs(a+b))/2
32. Fie expresia C: ((a>3) && (a<15)) || (a!=b) Care dintre
expresiile C de mai jos ii este echivalentă?
a. ((a>3) || (a<15)) && (a==b)
b. !((a<=3) || (a>=15)) || (a!=b)
c. ((a>3) || (a<15)) && (a!=b)
d. !(a<3 || a>15) && (a!=b)
44. Care dintre expresiile C/C++ de mai jos are valoarea 1 dupa
executarea secventei de instrucţiuni C:
v1=0; v2=0;
for(i=1;i<=3;i++)
{ for (j=1;j<=i;j++)
v1=v1+1;
for (k=i;k<=3;k++)
v2=v2+1;
}
in care toate variabilele sunt intregi?
a. v1>v2
b. v1<v2
c. v1==v2
d. v1+v2==9
48. Care este cea mai mica valoare pe care o poate avea expresia C:
x/7-x%7 daca variabila x, de tip int, memoreaza un numar natural cu
o singură cifra?
a. 0
b. 1.14
c. -6
d. 1
a. 4
b. 3
c. 2
d. 5
63. Care este valoarea expresiei C: 50-(100–300/2/(2+3))?
a. -30
b. 70
c. -20
d. 60
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
76. Se considera definitia
void f(int n){
int j;
if (n>0) for (j=1; j<=n; j++) {printf(“%d”,j); f(n-1);}
}
Ce se afiseaza ca urmare a apelului f(2)?
a. 1122 c. 121
b. 112 d. 1121
a. a = i; c. i[1] = a;
b. i = a; d. i[a] = 1;
a. 0 c. 13
b. 5 d. valoare nedeterminata
a. m c. n
b. 1 d. cel mult n(n-1)/2
a. 1 c. -4
b. -3 d. 4
a. 3 c. 2
b. 1 d. 4
a. 50 c. 40
b. 45 d. 55
a. 16 c. 38
b. 36 d. 28
a. aabbdeeff c. aabbddeff
b. nici una dintre variantele d. egalitate
propuse
106. In declararea
struct p{
int a,b;} x,y;
int t;
campul a al structurii memoreaza numaratorul, iar campul b memoreaza
numitorul unei fractii. Care dintre urmatoarele secvente de
instructiuni determina, in urma executarii, interschimbarea
numitorului fractiei x cu numitorul fractiei y?
a. t=x.b; x.b=y.b; y.b=t;
b. t=b.x; b.x=b.y; b.y=t;
c. x.b=y.b;
d. b.x=b.y;
116. În secvenţa:
p=1;
for(i=1;i<=4;i++)
....
variabila a memoreaza un tablou bidimensional cu 4 linii si 4
coloane, numerotate de la 1 la 4, cu elementele reale. Variabila p
este reală, iar i este de tip întreg.
Care dintre instructiunile de mai jos poate inlocui punctele de
suspensie astfel incat secventa sa determine memorarea in variabila
p a valorii produsului celor 8 elemente aflate pe diagonalele
matricei.
a. p=p*a[5-i][i]*a[i][5-i];
b. p=p*a[i][i]*a[i][4-i];
c. p=p*a[i][i]*a[5-i][5-i];
d. p=p*a[5-i][5-i]*a[i][5-i];
a. e1=e2+1;
b. e1.nume[2]=’x’;
c. e1=e2;
d. e1.nota=e2.nota+1;
118. Care din urmatoarele expresii are valoarea 1 daca si numai daca
sirul de caractere s, de lungime 10, este obtinut prin concatenarea
a doua siruri identice?
a. strcmp(s,s+5)==0
b. s==strstr(s,s+5)
c. s==s+5
d. strcmp(s,strcat(s,s+5))==0
126. In secventa
for ( i=k+1; i<=n; i++)
for (j=1; j<=n; j++)
v[i-1][j] = v[i][j];
n=n-1;
variabila v memoreaza elementele unei matrice cu liniile si
coloanele numerotate de la 1 la n, iar toate celelalte variabile
sunt intregi. Daca 1<=k<n, atunci executarea secventei determina:
a. eliminarea liniei k din matrice
b. adaugarea liniei k in matrice
c. eliminarea coloanei k din matrice
d. adaugarea coloanei k in matrice
127. In secventa
if(!(strcmp(s1,s2) || strcmp(s1,s3)))
val=1;
else
val=2;
variabilele s1, s2 si s3 retin siruri de caractere. Dupa executarea
acesteia, variabila intreaga val primeste valoarea 1 daca
a. s1, s2, s3 retin siruri identice de caractere
b. s1, s2, s3 retin siruri de caractere ordonate lexicografic
c. s1, s2, s3 retin siruri de caractere de lungimi diferite
d. s1 este obtinut prin concatenarea sirurilor retinute in s2 si s3
132. In secventa
for(i=0;i<=strlen(x)-1;i=i+3) printf(“%c”,x[i]);
variabila x memoreaza un sir cu cel mult 100 de caractere, iar
variabila i este de tip intreg. Care este numarul maxim de caractere
pe care il poate avea sirul x astfel încat secventa alaturata sa
afiseze exact 3 caractere ale acestuia?
a. 7
b. 3
c. 9
d. 8
145. Cum se poate accesa prima litera a denumirii unui produs ale
carui caracteristici sunt memorate in variabila p, declarata prin:
struct produs{
char denumire[15];
int pret;}p;
a. produs.denumire[0]
b. denumire.p[0]
c. p.denumire[0]
d. P->denumire[0]
146. Cum se poate accesa prima litera a numelui unei persoane ale
carei date de identificare sunt memorate in variabila p, declarata
prin:
struct persoana{
char nume[20],prenume[20];
int varsta;} p;
a. p.nume[0]
b. persoana.nume[0]
c. p->nume[0]
d. nume.p[0]
147. Cum se poate accesa prima litera a denumirii unui material ale
carui caracteristici sunt memorate în variabila m, declarată prin:
struct material{
char denumire[20];
int pret;} m;
a. denumire.m[0]
b. m->denumire[0]
c. material.denumire[0]
d. m.denumire[0]
148. Cum se poate accesa prima literă a numelui unui student ale
carui date de identificare sunt memorate in variabila e, declarata
prin:
struct student{
char nume[20],prenume[20];
int varsta;}e;
a. e->nume[0]
b. e.nume[0]
c. student.nume[0]
d. nume.e[0]
149. Stiind ca fiecare dintre variabilele var1, var2 memoreaza
numele si nota unui student in forma data de declararea:
struct student
{ char nume[30];
float nota;
}var1,var2;
Indicati care dintre urmatoarele expresii atribuie variabilei reale
m media aritmetica a notelor celor doi studenti.
a. m=(var1.nota+var2.nota)/2;
b. m=var1.nota+var2.nota/2;
c. m=(var1+var2).nota/2;
d. m=nota(var1+var2)/2;
a. float
b. int
c. long
d. char
a. form
b. forma
c. InfoEXA
d. Infor
166. In declararea
struct punct
{
float x,y;
}P;
campurile x si y ale inregistrarii pot memora coordonatele
carteziene ale unui punct din planul xOy. Care dintre urmatoarele
expresii are valoarea 1 daca si numai daca punctul P este situat pe
axa Ox ?
a. P.x==0
b. P.y==0
c. P.x+P.y==0
d. P.x==P.y
167. In secventa
for(i=0; i<8; i++)
for(j=0; j<8; j++)
a[i][j] = (i+j)%8;
i, j si n sunt variabile intregi, iar a este o matrice formata din 8
linii şi 8 coloane, numerotate de la 0 la 7. Care este suma
elementelor de pe ultima linie a matricei, in urma executării
acestei secvenţe?
a. 28
b. 84
c. 36
d. 21
168. In secventa
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j] = (i+j)%n;
i, j si n sunt variabile intregi, iar a este o matrice patratica
formata din n linii si n coloane numerotate de la 0 la n-1. Care
este suma elementelor de pe diagonala secundara din matricea a, in
urma executarii acestei secvente, daca n=8?
a. 8
b. 64
c. 24
d. 56
169. In secventa
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j] = (i+j)%n;
i, j si n sunt variabile intregi, iar a este o matrice patratica
formata din n linii si n coloane, numerotate de la 0 la n-1. Care
este suma elementelor de pe diagonala principala din matricea a, in
urma executarii acestei secvente, daca n=8?
a. 24
b. 64
c. 56
d. 8
b. u=n%10;
z=n/100%10;
n=n/100+u*10+z;
c. n=(n/100*10+n%10)*10+n/100%10;
d. u=n%10;
z=n/100%10;
n=n/100*100+z*10+u;
a. 0
b. 9
c. 1
d. 11
a. numai x şi z
b. numai y şi z
c. numai x şi y
d. x, y şi z
216. Variabila intreaga x memoreaza o valoare mai mare ca 1000,
formata doar din cifre distincte. Care dintre urmatoarele
instructiuni C afisează o singura cifra?
a. printf("%d",x/1);
b. printf("%d",x/100);
c. printf("%d",x%100);
d. printf("%d",x%10/1);
a. III II I
b. I II III
c. III I II
d. I III II
222.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)
4) a > b || !(d<a)
5) (a == b) && c
a. 1, 2, 3, 4 c. 1, 4
b. 1, 2, 3, 4, 5 d. 1, 2, 4