Sunteți pe pagina 1din 2

Test de autoevaluare "Instrucțiunile de selecție dacă și caz (if, switch-case)"

1. Care este expresia logică (condiția) ce completează instrucțiunea de ramificare următoare, astfel încât, în urma executării ei să
se verifice dacă conținutul variabilei de tip caracter x este o cifră sau nu este o cifră?
if ( ) a) (x>='1') && (x<='9')
cout<<"DA este cifra"; b) (x>='0') && (x<='9')
else c) (x>=0) && (x<=9)
cout<<"NU este cifra"; d) '0'<=x<='9'
e) (x-'0')*('9'-x)>=0

2. Fie date valorile variabilelor a=15, b=5, q=true. Scrieți în coloana din dreapta ce se va afișa după execuția fiecărei din
următoarele instrucțiuni:
Instrucțiunea Răspuns
a) if (a<b) cout<<2*a; else cout<<2*b;
b) if (q && a==b) cout<<20; else cout<<100;
c) if (!q || a>0) cout<<45; else cout<<70;
d) if (a!=10 || q && b!=a) cout<<a; else cout<<(!q);
e) if (a>b) if (b<2) cout<<(int)'a' else
cout<<(char)52;
f) if (0) cout<<'F'; else cout<<200;

3. Selectați prin încercuire, care dintre următoarele instrucțiuni vor determina, prin executarea lor, afișarea mesajului DA, dacă și
numai dacă numărul x[a,b) sau a mesajului NU, în caz contrar (a,b,xR, ab).
a) if ((x>a) || (x<b)) cout<<"DA"; else cout<<"NU";
b) if (!((x>=a) && (x<b))) cout<<"DA"; else cout<<"NU";
c) if ((x<a) && (x>=b)) cout<<"DA"; else cout<<"NU";
d) if ((x<a) || (x>=b)); cout<<"DA"; else cout<<"NU";

4. Scrieți o secvență echivalentă cu secvența de instrucțiuni următoare, folosind o singură instrucțiune if. Precizăm faptul că
variabilele x și y sunt de tip unsigned int.
cin>>x;
if ((x>=0) && (x<=1)) y=1;
else if (x<=3) y=2;
else if (x<=5) y=3;
else y=6;

5. Următoarea secvență de instrucțiuni trebuie să afișeze, în urma executării, maximul dintre valorile variabilelor de tip real a și
b. Corectați eroarea astfel încât să se realizeze cerința. Scrieți o secvență echivalentă cu cea corectată, care să nu conțină
instrucțiuni de selecție.
cin>>a>>b;
if (a<b);
cout<<a;
else
cout<<b;

6. Ce valori trebuie citite de la tastatură astfel încât, în urma executării secvenței următoare, să se afișeze valoarea 1? Variabilele
a, b și c sunt variabile de tip char, iar variabila d de tip int).
cin>>a>>b>>c;
if (a>b) Răspuns:__________
if (b>c) d=3;
else d=2;
else if (a>c) d=3;
else d=1;
cout<<d;
a) abc b) bca c) cab d) cba e) acb f) bac

7. Fie n o variabilă de tip caracter și p o variabilă de tip întreg. Se consideră secvența de operații, descrisă cu ajutorul
instrucțiunii if:
p=1; 7.1. Transcrieți secvența, utilizând o singură instrucțiune de selecție multiplă switch. Declarați
if (n=='0') p=p*0; variabilele ce apar în secvență.
else if (n='1') p=p*1;
else if (n='5') p=p*5;
else p=p+10;

7.2. Dacă valoarea variabilei n este '7', ce valoare va avea variabila p la finalul executării secvenței din enunț? Încercuiți.
a) 1 b) 0 c) 11 d) 5
8. Care este cea mai mare mulțime a valorilor pe care le poate avea variabila întreagă x astfel încât să se afișeze * la finalul
executării secvenței?
switch (x)
{
case 1: cout<<"**"; break;
case 2:
case 3: cout<<"*"; break;
default: cout<<"!*";
}
a) x{1,2,3} b) x{2,3} c) x{3} d) x

9. Ce va afişa pe ecran în urma execuţiei programelor ce urmează?


#include <iostream>
using namespace std;
int main()
{
enum Semnal {R, G, B=4, C, M, Y, K};
Semnal s;
int x;
s=B; x=3*s-5;
switch ((Semnal)x)
{
case R : cout<<"RED"; break;
case G : cout<<"GREEN"; break;
case B : cout<<"BLUE"; break;
case C : cout<<"CYAN"; break;
case M : cout<<"MAGENTA"; break;
case Y : cout<<"YELLOW"; break;
case K : cout<<"BLACK"; break;
default: cout<<"COLOR"; break;
}
return 0;
}
Răspuns: ___________

10. Un șir de furnici, lung de x cm, trece pe un pod lung de p m cu viteza de v m/min (x, p, v numere naturale nenule). Scrieți un
program care citește de la tastatură valorile x, p, v și să afișeze numărul de minute necesare șirului de furnici pentru
traversarea podului.
Exemple: Pentru x=20, p=60, v=10, se va afișa: 7 min.
Pentru x=30, p=100, v=20, se va afișa: 6 min.

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