Sunteți pe pagina 1din 6

iruri de caractere

1.Ce se va afia in urma executrii secvenei de program de mai jos dac variabila x memoreaz cuvantul bacalaureat, iar variabila y memoreaz cuvantul banal ? if(strcmp(x, y) > 0) cout << x; else if(strcmp(x,y) < 0) cout << y; else cout <<imposibil;

a. imposibil

b. bacalaureat

c.banal

d.bacalaureatimposibil

Rezolvare: x=bacalaureat, y=banal; strcmp(x,y) este: 0 daca x>y, 1 daca x=y sau-1 daca x<y. Cum x[0]=y[0], x[1]=y[1] si x[2]=c<y[2]=n => x este mai mic decat y strcmp(x,y)=-1 => se va afisa y, adica banal.

2. tiind c variabila i este de tip ntreg i c variabila s reine irul de caractere barba ce se va afia la executarea secvenei alturate? for(i=0;i<strlen(s);i++) if(s[i]==b) s[i]=t; cout<<s; Rezolvare: Inlocuieste caracterul b cu t in sirul s. Rezulta cuvantul tarta. 3.Variabila s memoreaz un ir de caractere. Care dintre urmtoarele expresii C/C++ este nenul dac i numai dac lungimea irului este un numr par? a.s-2==0 b.strlen(s,2)=0 c.leng(s)%2 d.strlen(s)%2==0;

Rezolvare: strlen(s)%2==0 Celelalte sunt incorecte din punct de vedere sintactic

4. Un ir de caractere se numete palindrom dac irul citit de la stanga la dreapta este identic cu irul citit de la dreapta spre stanga. Care dintre urmtoarele expresii C/C++ are valoarea 1 dac i numai dac irul de caractere memorat in variabila s, avand exact 3 caractere este palindrom? a. s[0]==s[1] b.s[1]==s[2] c.s[0]==s[2] d.s[1]==s[3]

Rezolvare: Cum s are 3 caractere, rezulta ca avem s[0], s[1] si s[2]. Deci trebuie sa avem s[0]==s[2]. 5. Se consider variabila s care memoreaz irul de caractere CARACATITA. Ce valoare va avea s dup executarea instruciunii de mai jos? strcpy(s,strstr(s,"TI")); Rezolvare: strstr(s,"TI") returneaza un pointer (adica un sir de caractere) de unde TI se afla in s => va returna TITA. strcpy(s,TITA) pune in s sirul TITA Dupa executarea instructiunii s va devenii TITA.

6. Ce se va afia in urma executrii secvenei de program alturate considerand c s este o variabil ir de caractere, iar i o variabil de tip intreg? char a[10]="Examen"; for (i=0;i<=2;i++) strcpy(a+i,a+i+1); cout<<a; a.xmn b.Eae c.men d.Examen

Rezolvare: a[0]=E; a[1]=x; a[2]=a; a[3]=m; a[4]=e; a[0]=n; a+0=Examen; a+1=xamen; a+2=amen etc. pentru i=0: strcpy(a+0,a+0+1) determina pastrarea in a a sirului a+1 => a=xamen. Acum a[0]=x, a[1]=a, etc. si a+0=xamen, a+1=amen, a+2=men etc. pt. i=1: strcpy(a+1,a+1+1) determina pastrarea in a+1 a sirului a+2, deci a=xmen pt. i=2: strcpy(a+2,a+2+1) determina pastrarea in a+2 a sirului a+3, deci a=xmn Se va afisa: xmn.
2

7.Variabila s memoreaz un ir de caractere. Care dintre urmtoarele expresii C/C++ este nenul dac i numai dac lungimea irului este strict mai mic decat 10? a.strlen(s)<10 b.strlen(s,10)<0 c.leng(s)<10 d.s-0<10

Rezolvare: strlen(s)<10 Functia care determina lungimea sirului este strlen(sir). Toate celelalte variante sunt gresite din punct de vedere sintactic. 8. In secvena alturat variabila x memoreaz un ir de caractere, iar toate celelalte variabile sunt de tip intreg. Ce valori au variabilele k1 i k2 dup executarea secvenei de instruciuni alturate? strcpy(x,bac2008); k1=strlen(x) k2=0; for (i=0;i<strlen(x);i++) if( x[i]>=0 && x[i]<=9) k2=k2+1; Rezolvare: x=bac2008 (x[0]=b, x[1]=a,,x[6]=8. X are 7 caractere ). K1=7. k2 determina cate dintre caractere sunt cifre. K2=4.

9.Scriei o expresie C/C++ care s fie nenul dac i numai dac variabila c de tip char esteo liter mic a alfabetului englezesc. Rezolvare: (c>=a&& c<=z). 10. Considerm variabila x care memoreaz irul de caractere ABAC. Care dintre urmtoarele instruciuni conduc la afiarea caracterului B? a.cout<<x[strlen(x)-3] b.cout<<x[strlen(x)-1]; c.cout<<x[2]; d.cout<<x[strlen(x)];

Rezolvare: Cum x[0]=A; x[1]=B x[2]=A x[3]=C a.cout<<x[strlen(x)-3]=x[4-3]=x[1].


3

11. In secvena alturat, variabila x memoreaz un ir cu cel mult 100 de caractere, iar variabila i este de tip intreg. Care este numrul maxim de caractere pe care il poate avea irul x astfel incat secvena alturat s afieze exact 3 caractere ale acestuia? for(i=0;i<=strlen(x)-1;i=i+3) cout<<x[i]; a. 7 b.3 c.9 d.8

Rezolvare: daca lungimea lui x ar fi 9, for-ul lucreaza astfel: i=0 (cum 0<8=9-1 se afiseaza x[0]) i=3 (cum 3<8 se afiseaza x[3]) i=6 (cum 6<8 se afiseaza x[6]) i=9 (cum 9>8 nu se afiseaza nimic) d. 12. Se consider mulimea vocalelor {a,e,i,o,u}. Scriei o expresie C/C++ care s fie nenul dac i numai dac variabila c de tip char este o vocal. Rezolvare: strchr(aeiou,c) este o expresie a carei evaluare va avea ca rezultat NULL daca c nu se afla in sir si un pointer catre prima aparitie a caracterului in sirul vocalelor. 13. Se consider declararea char e[20]=51+73; Care este irul memorat de variabila e dup executarea instruciunii de mai jos? strcpy(e,strchr(e,+)+2); Rezolvare: strchr(e,+) returneaz sirul +73. +73+2 reprezinta un sir de caractere la care se aduna 2. => va retine adresa cu 2 valori daca p=+73 => p+0 va fi +73, p+1 va fi 73, p+2 va fi 3. Deci rezultatul este 3.

14.Ce se va afisa in urma executarii secventei: a= Primavara; for (int i=1;i<=3;i++) strcpy(a+1,a+2); cout<<a; a.Pavara b.Ara Rezolvare: a.
4

c.Rim

d.Para

15. Ce se va afisa in urma executarii urmatoarei secvente de instructiuni: x=Mama; y=Macara; if (strcmp(x,y)>0) cout<<x; else if (strcmp(x,y)==0) cout<<Incorect; else cout<<y; a.Macara Rezolvare: b. 16. Fie declaratiile: char a[30],b[30]; Ce se va afisa in urma executiei secventei: x=dimineata; y=min; strcat(y,x+strlen(x)-1); p=strstr(y,x); if (p!=NULL) cout<<(p-y); else cout<<0; a.0 Rezolvare: a. 17. Ce realizeaza secventa urmatoare: char s[100]; cin>>s; n=strlen(s); i=0;j=n-1; while ((i<j)&&(s[i]==s[j])) {i++;j--;} if (i>=j) cout<<Este; else cout<<Nu este; a. b. c. d. Verifica daca sirul s este constant sau nu Verifica daca sirul s este identic cu inversul lui s (este palindrom) Verifica daca sirul s este format doar din litere Verifica daca sirul s este sau nu format doar din caractere distincte b.3 c.ta d.dieta b.Mama c.MamaIncorect d.Incorect

Rezolvare: b.

18. Fie secventa (s este de tip sir de caractere, iar i de tip int). Secventa realizeaza: for (i=0;i<strlen(s);i++) if (s[i]>=A && s[i]<=Z) s[i]=s[i]+a-A; a. Transformarea literelor mici in litere mari b. Inserarea literelor mici dupa fiecare litera mare c. Transformarea literelor mari in litere mici d. Ordonarea alfabetica a literelor mari in cadrul sirului Rezolvare: c. 19. Consideram sirul de caractere s in care stim ca are toate caracterele distincte, exceptand ultimele doua care sunt identice. Care din secventele urmatoare afiseaza in mod corect lungimea lui s: a. i=0; while (a[i]!=a[i+1]) i++; cout<<i+2; c. i=0; while (a[i]==a[i+1]) i++; cout<<i+2; Rezolvare: a. 20. Daca x este o variabila de tip sir de caractere, care din variante afiseaza 1 daca primul caracter din x este litera mica: a. if (x[0]<z) cout<<1; c. if (!(x[0]<z && x[0]<a) cout<<1; Rezolvare: d. b. if ((x[0]<z)||(x[0]>a)) cout<<1; d. if (!(x[0]<a) && (x[0]<=z)) cout<<1 b. i=0; while (a[i]!=a[i+1]) i++; cout<<i+1; d. i=0; while (a[i]!=a[i+1]) i++; cout<<i;

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