wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

ES Structuri neomogene C++

Total questions: 15

Worksheet time: 13mins

Name
Class
Date
1.

Care dintre următoarele variante reprezintă o declarare corectă pentru o variabilă x care memorează simultan codul de identificare al unui candidat la un examen, exprimat printr-un  număr natural de cel mult 4 cifre şi media obţinută de acesta la examen, exprimată printr-un număr real?

a)

struct x { int cod;

float media;};

b)

struct {int cod;

float media;} x;

c)

int x.cod ;

float x.media;

d)

struct candidat {int x.cod;

float x.media;};

2.

Care dintre următoarele variante reprezintă o declarare corectă pentru o variabilă x care memorează simultan coordonatele reale (abscisa şi ordonata) ale unui punct în planul xOy?

a)

float x;

b)

struct x{float ox,oy;};

c)

char x[2];

d)

struct punct{float ox,oy;} x;

3.

Se consideră declarările de mai jos, în care variabila ev memorează date despre un anumit elev.  Scrieţi instrucţiunea C++ prin care se iniţializează anul naşterii acestui elev cu valoarea 1990.

struct data{ int zi; int luna; int an; };

struct elev { char nume[30]; struct data data_nasterii; float media; }ev

(a)  

4.

Pentru declaraţia de mai jos, precizaţi care din instrucţiunile de atribuire este greşită:

struct elev {char nume[20];

int nota1; int nota2;} e1,e2;

a)

e1.nume[2]=’x’;

b)

e1=e2+1;

c)

e1=e2;

d)

e1.nota1=e2.nota2+1;

5.

Pentru următoarele declarari:

struct elev { char nume[20]; int nr; int nota[15]; } ;

elev e[28], x;

precizați care dintre următoarele instrucțiuni este corectă din punct de vedere sintactic.

a)

e[10] = x;

b)

e[10] = x.nr;

c)

elev. nota[5] = 7;

d)

x.nr=x.nota;

6.

Se consideră tipul de date punct, ce memorează abscisa și ordonata unui punct din plan și tipul de date segment ce memorează două puncte distincte reprezentând extremitățile unui segment din plan. Precizați care dintre următoarele expresii are ca valoare ordonata mijlocului segmentului corespunzător variabilei s de tip segment.

struct punct{ float x, y;};

struct segment{punct A, B;};

segment s;

a)

(A.x+B.y)/2

b)

(s.A.x+s.B.x)/2

c)

(s.y+s.y)/2

d)

(s.A.y+s.B.y)/2

7.

Considerăm declararea următoare, folosită pentru a memora numărătorul și numitorul unei fracții. Precizați care dintre instrucțiunile de mai jos este corectă!

typedef struct { int a, b; }fractie;

fractie m,n;

a)

if(m>n) m++;

b)

if(m==n) m--;

c)

m=n;

d)

if(m!=n) m--;

8.

Se consideră declarările următoare, în care variabila x memorează coordonatele, în planul xOy, ale centrului unui cerc, precum şi lungimea razei acestuia.

struct punct{ float x, y; } ;

struct cerc { punct c; float r; } ;

cerc x;

Expresia care verifică dacă originea sistemului de coordonate, este în interiorul cercului, este:

a)

c.x*c.x+c.y*c.y<c.r*c.r

b)

c.x*c.x+c.y*c.y<x.r*x.r

c)

x.c.x+x.c.y<x.r

d)

x.c.x*x.c.x+x.c.y*x.c.y<x.r*x.r

9.

Considerând declararea de mai jos, care dintre următoarele secvenţe realizează în mod corect citirea de la tastatură a valorilor celor două câmpuri ale variabilei x?

struct { int x; int y; } x;

a)

cin>>x.x>>x.y;

b)

cin>>x>>y;

c)

cin>>x;

d)

cin>>x->x>>x->y;

10.

Pentru declararile de mai jos, care este numărul maxim de numere întregi ce pot fi memorate în variabila a?

struct punct3D { int x; int y; int z;};

struct punct3D a[10][10];

a)

100

b)

200

c)

300

d)

400

11.

Se consideră declarările de mai jos:

struct Produs{ int cod; char descriere[50]; } p;

struct Magazin{ struct Produs produse[500]; char nume[50]; } m;

Câmpul descriere al variabilei p a fost inițializat cu un șir de caractere de lungime 10, iar câmpul cod al variabilei p a fost inițializat cu o valoare între 1 și 499. Care dintre următoarele instrucțiuni nu este corectă din punct de vedere sintactic?

a)

m.produse[p.cod].cod++;

b)

m.produse[p.cod].nume[2]='n'

c)

m.produse[p.cod].cod=p.cod;

d)

m.produse[p.cod]=p;

12.

Fie definițiile și declarațiile de mai jos:

struct TMotor { int cai_putere; int specificatii[10]; };

struct Masina { int pret; struct TMotor motor; };

Masina o_masina;

Alegeți care dintre următoarele instrucțiuni specifică faptul că o mașină are 150 cai-putere.

a)

o_masina.motor.cai_putere = 150;

b)

cai_putere.motor.o_masina = 150;

c)

o_masina.cai_putere = 150;

d)

o_masina[motor].cai_putere = 150;

13.

Variabila p, declarată mai jos, memorează caracteristicile unui produs: denumire și preț.

struct produs { char denumire[20]; int pret; }p;

char a;

Scrieți o secvență de instrucțiuni C++ prin care variabila a memorează valoarea primei litere a denumirii produsului respectiv, dacă acesta are prețul strict mai mic decât 100, sau caracterul * în caz contrar

(a)  

14.

Variabila p, declarată alăturat, memorează dimensiunile unui paralelipiped dreptunghic: lungimea, lățimea, respectiv înălțimea.

struct paralelipiped { float lg,lt,h; }p;

Volumul paralelipipedului este egal cu produsul celor trei dimensiuni ale sale. Indicați o instrucțiune prin care i se atribuie variabilei reale v valoarea volumului paralelipipedului corespunzător variabilei p.

a)

v=lg*lt*h;

b)

v=lg.p*lt.p*h.p;

c)

v=p(lg*lt*h);

d)

v=p.lg*p.lt*p.h;

15.

Expresiile alăturate au ca valori trei numere naturale reprezentând, în această ordine, următoarele informații memorate pentru o motocicletă: anul fabricației și dimensiuni specifice (garda la sol și lungimea). Indicați o declarare corespunzătoare a variabilei m.

m.an

m.dm.garda

m.dm.lungime

a)

struct { int an; struct{int garda, lungime;}dm; }m;

b)

struct { int an, dm.garda, dm.lungime; }m;

c)

struct { int m.an; struct{int garda, lungime;}m.dm; };

d)

struct m { int an, dm (garda,lungime); };