0% au considerat acest document util (0 voturi)
70 vizualizări4 pagini

Untitled

Încărcat de

Cristache Popescu
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca TXT, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
70 vizualizări4 pagini

Untitled

Încărcat de

Cristache Popescu
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca TXT, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 4

1. 1.

Care este instrucţiunea prin care variabilei x i se atribuie valoarea sumei


cifrelor numărului natural format din exact trei cifre, memorat de variabila y?
a)x=y/100+y/10%10+y%10;
b)x=y+y/10+y/100;
c)x=y%10+y%100+y%1000;

În opțiunea (a), operatorul / face împărțirea între y și 100, obținând prima cifră
a numărului, apoi operatorul % face împărțirea între y și 10 și returnează restul
împărțirii, adică ultima cifră a numărului. Operatorul % aplicat pe y însuși și
fără nicio operație ulterioară nu ar putea determina cifra din mijloc, deoarece
acesta ar returna restul împărțirii întregi a lui y la 10, deci ultima cifră a
numărului.

2.Variabilele x, y,z şi w sunt întregi, x memorează valoarea 2, y memorează


valoarea 3, z memorează valoarea 5, iar w memorează valoarea 7.Care dintre
următoarele expresii are valoarea 1(TRUE) ?
a)(y>z) || (x>3)
b) (x==z) && ((y==3)||(w==7))
c)(z<=w) && (x>0) || (y>=x)

În opțiunea (c), două condiții sunt îndeplinite: z<=w și y>=x. Dacă una dintre
condițiile acestea nu ar fi fost îndeplinită, expresia ar fi avut valoarea 0
(FALSE). Operatorul && are prioritate mai mare decât operatorul ||, deci întâi se
va evalua partea stângă a expresiei, adică (z<=w) && (x>0). Deoarece cele două
condiții sunt îndeplinite, această parte a expresiei are valoarea 1. Apoi, partea
dreaptă a expresiei, y>=x, este evaluată. Această condiție este, de asemenea,
îndeplinită, deci expresia finală are valoarea 1(TRUE).

3. Variabilele a, b, c şi n sunt întregi, a memorează valoarea 7, b memorează


valoarea 3, c memorează valoarea 8. Ce se afişează după execuţia instrucţiunii de
mai jos? n=(a>b?a:b); cout<<(n>c?n:c);
a) 3,7
b) 8
c) 3

Instrucțiunea cout<<(n>c?n:c) afișează valoarea maximă dintre n și c. Deoarece n


are valoarea 7, iar c are valoarea 8, condiția n>c este falsă, astfel încât va fi
afișată valoarea lui c, adică 8. Deci, afișajul va fi 8.

4.Se consideră algoritmul alăturat. Valoarea care se va afişa pentru n=32751 este:
a) 1
b) 3
c) 7
int n,c; cout<<"n=";cin>>n; c=10; while(n%2==1) { c=n%10; n=n/10; } cout<<c;

La început, variabila c este inițializată cu valoarea 10. În timpul execuției, se


verifică dacă ultima cifră a lui n este impară prin verificarea restului împărțirii
lui n la 2 (n%2). Dacă restul este 1, înseamnă că ultima cifră este impară și se
atribuie variabilei c ultima cifră a lui n (c=n%10), apoi se împarte n la 10
(n=n/10) pentru a elimina ultima cifră. Acest proces continuă până când ultima
cifră a lui n este pară.

Pentru n = 32751, ultima cifră este 1, deci variabila c primește valoarea 1 și apoi
n devine 3275. În continuare, ultima cifră a lui n este 5, care este impară, astfel
încât variabila c primește valoarea 5 și n devine 327. Ultima cifră a lui n este 7,
care este impară, astfel încât variabila c primește valoarea 7 și n devine 32.
Ultima cifră a lui n este 2, care este pară, astfel încât procesul se oprește. În
cele din urmă, instrucțiunea cout<<c; afișează valoarea lui c, adică 3. Prin
urmare, valoarea afișată pentru n = 32751 este 3.

5.Se consideră algoritmul alăturat. Ştiind că pentru a=245903 se afişează valoarea


593, alegeţi una din valorile de mai jos care poate fi citită pentru variabila a
astfel încât să se afişeze o valoare egală cu cea citită.
a) 12345
b) 13579
c) 55525
int a,b,c,p; cout<<"a=";cin>>a; b=0;p=1; do { c=a%10; if(c%2!=0) { b=b+p*c; p=p*10;
} a=a/10; } while(a>0); cout<<b;

Pentru a afișa valoarea 593, variabila a trebuie să conțină cifrele impare din
245903 în ordine inversă, adică 3952. Dintre opțiunile date, singura care respectă
această condiție este c) 55525. Prin urmare, dacă citim pentru a valoarea 55525, se
va afișa valoarea 593.

6.Se consideră algoritmul alăturat. Scrieţi valoarea


care se va afişa dacă se citesc numerele a=8231 şi
b=3704.
int a,b,x,y,n;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
n=0;
while(a!=b)
{
x=a%10;y=b%10;
if(x<y)
n=n*10+x;
else
n=n*10+y;
a=a/10;b=b/10;
}
cout<<n;

Algoritmul compară cifrele numărului a cu cele ale numărului b, apoi construiește


un nou număr format din cifrele mai mici dintre cele două. În cazul datelor de
intrare a=8231 și b=3704, algoritmul va executa următoarele iterații:

La prima iterație, x=1 și y=4. Deoarece x<y, se adaugă cifra x (adică 1) la numărul
n. Astfel, n=1.
La a doua iterație, x=3 și y=0. Deoarece y<x, se adaugă cifra y (adică 0) la
numărul n. Astfel, n=10.
La a treia iterație, x=2 și y=7. Deoarece x<y, se adaugă cifra x (adică 2) la
numărul n. Astfel, n=102.
În final, algoritmul va afișa valoarea 102.

7.Se consideră algoritmul alăturat. Scrieţi valoarea


care se va afişa pentru n=76261.
int n;
cout<<"n=";cin>>n;
do
{
n=n+n%10;
n=n/10;
}
while(n>10);
cout<<n;
Valoarea care se va afișa pentru n=76261 este 8.

Explicație:

În fiecare iterație a buclei, numărul n este adunat cu ultima sa cifră (n%10), iar
apoi această cifră este eliminată prin împărțirea la 10 (n/10). După primele două
iterații, n va fi 7628. După următoarea iterație, n va fi 763. În următoarele
iterații, n va rămâne 8, iar bucla se va opri. Prin urmare, valoarea afișată va fi
8.

8.Se consideră algoritmul alăturat. Scrieţi numărul


care va fi afişat dacă pentru n se citeşte valoarea 3,
iar pentru x se citesc în ordine următoarele
valori:90, 965, 727.
int n,k,i,x,c;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"x=";cin>>x;
c=(x/10)%10;
if(c<k)
k=c;
}
cout<<k;

Pentru n = 3, se vor citi 3 valori pentru variabila x: 90, 965 şi 727.


Pentru x = 90, cifra de pe poziţia zecimală zece este 0, deci k=0.
Pentru x = 965, cifra de pe poziţia zecimală zece este 6, deci k=0.
Pentru x = 727, cifra de pe poziţia zecimală zece este 2, deci k=0.

În final, va fi afişat numărul 0.

9. Fiecare dintre variabilele declarate alăturat memorează numele şi nota câte unui
elev.
Scrieţi secvenţa de instrucţiuni prin care se citesc de la tastatură numele şi nota
pentru
fiecare dintre variabilele e1 şi e2 şi apoi se afişează numele elevului cu nota cea
mai
mare.
Dacă cele două note sunt egale, se va afişa numele elevului memorat în variabila
e1.
struct elev{
char nume[20];
float nota;
};
elev e1,e2;

#include <iostream>
#include <cstring>

using namespace std;

struct elev {
char nume[20];
float nota;
};

int main() {
elev e1, e2;

cout << "Introduceti numele si nota elevului 1: ";


cin >> e1.nume >> e1.nota;

cout << "Introduceti numele si nota elevului 2: ";


cin >> e2.nume >> e2.nota;

if (e1.nota > e2.nota) {


cout << "Elevul cu cea mai mare nota este: " << e1.nume;
} else if (e2.nota > e1.nota) {
cout << "Elevul cu cea mai mare nota este: " << e2.nume;
} else {
cout << "Cele doua note sunt egale. Numele elevului este: " << e1.nume;
}

return 0;
}

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