Sunteți pe pagina 1din 2

Nume i prenume 10 MI 18.05.

2012
Lucrare scris la informatic pe semestrul II
Pentru exerciiile 1-6, ncercuii litera corespunztoare rspunsului corect.
1. (0.6 p) Ce va afia programul urmtor n urma apelului test(A)?
void test(char c)
{
printf("%c",c++);
if(c<'G')
test(c+3);
printf("%c",--c);
}
a) AEIJFB b) BFJJFB
c) BFJIEA d) AEIIEA

2. (0.6 p) Deducei ce valoare va afia programul de mai jos n urma apelului ex(5)?
int ex(int n)
{
if(n==0 || n==1)return n;
else
return 3*ex(n-1)-2*ex(n-2);
}

a) 31 b) 15
c) 5 d) 1

3. (0.6 p) Care este valoarea numrului returnat n urma apelului schimba(23569)?
long schimba(long n)
{ if(n==0) return 0;
else
if(n%2==1)
return schimba(n/10)*10+n%10-1;
else
return schimba(n/10)*10+n%10+1;
}

a) 87423 b) 32478
c) 41387 d) 78314

4. (0.6 p) Ce valoare se va afia n urma apelului calcul(0,7)?

int v[]={2,4,1,3,11,5,1,3};
int calcul(int n,int m)
{int x,y;
if(n==m) return (v[n]%2 && n%2==0);
else
{x=calcul(n,(n+m)/2);
y=calcul((n+m)/2+1,m);
return x+y;
}
}


a) 6 b) 1
c) 3 d) 5


5. (0.6 p) ntr-o list liniar simplu nlnuit fiecare element reine n cmpul urm adresa urmtorului
nod din list, iar n cmpul info un numr ntreg. Adresa primului element este memorat n variabila prim.
Lista conine cel puin trei noduri. Care este efectul executrii urmtoarei secvene de program?

nod *p=prim, *q;
q=p->urm->urm;
while(q->urm!=NULL)
{p=p->urm; q=q->urm}
p->urm=q;

a) Eliminarea nodului din mijlocul listei
b) Eliminarea din list a ultimului element
c) Eliminarea din list a penultimului element
d) Eliminarea celui de-al doilea nod al listei
6. (0.6 p) Se consider o list simplu nlnuit care memoreaz, n ordine, pornind de la primul element valorile
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5. Stabilii cte valori nule exist n list dup executarea secvenei:
p=prim;
while(p->urm!=NULL)
if(p->info==p->urm->info)
{p->info=0; p=p->urm->urm;}
else
p=p->urm;




7. (0.6 p) Stabilii valoarea care se va afia n urma execuiei programului de mai jos pentru apelul f(65).
void f(int x)
{if(x)
if(x%5==0)
{printf("5");
f(x/5);}
else
{f(x/5);
printf("%d",x%5);}
}

8. (0.8 p) Completai n caseta alturat ce se va afia n urma executrii urmtorului program.
#include<stdio.h>
#include<string.h>
int DI(int s,int d,char cuv[])
{char voc[]="aeiou";
if(s==d)
if(!strchr(voc,cuv[s]))
{cuv[s]='*';
return 1;}
else
return 0;
else
return DI(s,(s+d)/2,cuv)+DI((s+d)/2+1,d,cuv);

}
int main()
{char cuv[]="informatica";
printf("\n%d\n",DI(0,strlen(cuv)-1,cuv));
puts(cuv);}
a) 11 b) 7
c) 5 d) 6
6
i**o**a*i*a
523

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