Wykład C/C++



Pobieranie 32,88 Kb.
Data15.04.2018
Rozmiar32,88 Kb.

Wykład C/C++
Zagadnienia kolokwialne i / lub egzaminacyjne


  1. Typy danych i zmienne.




  1. Operatory i wyrażenia.




  1. Instrukcje decyzyjne.




  1. Instrukcje iteracyjne.




  1. Funkcje.




  1. Preprocesor.




  1. Tablice i łańcuchy.




  1. Wskaźniki, tryby adresowania i arytmetyka wskaźników.




  1. Tablice, łańcuchy i wskaźniki.




  1. Dynamiczna alokacja pamięci, zmienne i tablice dynamiczne.




  1. Wskaźniki tablic i tablice wskaźników.




  1. Wskaźniki funkcji, tablice wskaźników na funkcje.




  1. Złożone definicje wskaźnikowe.




  1. Struktury, unie, tablice struktur, tablice wskaźników na struktury.

15. Operacje wejścia / wyjścia (systemowe, standardowe).



Przykładowe pytania testowe


  1. Zdefiniować stałą całkowitą typu int o wartości 65 w postaci:

a) ósemkowej, b) szesnastkowej.


  1. Zdefiniować stałą całkowitą typu long int o wartości 100 w postaci:

a) ósemkowej, b) szesnastkowej.


  1. Zdefiniować stałą typu char o wartości 65 w postaci:

a) ósemkowej, b) szesnastkowej.


  1. Podać wartość dziesiętną stałej const char z = ‘\x20’.




  1. Podać wartość dziesiętną stałej całkowitej 041L.




  1. Deklaracja unsigned x jest:

  1. deklaracją zmiennej typu całkowitego,

  2. deklaracją zmiennej typu rzeczywistego,

  3. deklaracją zmiennej typu wskaźnikowego.




  1. Podać wartość stałej: 0111.




  1. Podać wartość i typ stałej: 1.2E2f.

9. Podać wartości i typy wyrażeń: a) 5.0/2; b) 5/2; c)5%4/2 .


10. Niech int i=2. Oblicz wartości wyrażeń: a) k = i << 5; b) k=i+3>>1.
11. Oblicz wartości wyrażeń: a) 4<=4; b) 7>5<2; c) !-1.0 .
12. Podać wartość dziesiętną oraz wartość szesnastkową zmiennej int k = ~11 .


  1. Które z wyrażeń są poprawne jeśli zdefiniowano float x = 1.0f ?

a) ~x+1; b) ++x – 1; c) ++(x+1); d) ~(x+1); e) ++ x++ .


  1. Jakie wartości przyjmują wyrażenia w zależności od x i y ?

a) (x>y) + (xy) – (x15. Uprościć wyrażenia: a) k & (i | ~i); b) k^~0; c) k - k%8 (odp. k & -8) .
16. Obliczyć wartości wyrażeń: a) 5>0 && 3>1 && 4<=4; b) !6 || !0 && 2 + 3 >4 .
17. Zadeklarowano trzy zmienne: const int *x; int * const y=&k; const int* const z=&k.

Które z poniższych zdań są prawdziwe?



  1. wartość zmiennej x nie może być zmieniana;

  2. wartość zmiennej y może być zmieniana;

  3. wartość zmiennej z może być zmieniana;

  4. wartość zmiennej wskazywanej przez x może być zmieniana;

  5. wartość zmiennej wskazywanej przez y może być zmieniana;

  6. wartość zmiennej wskazywanej przez z może być zmieniana.

18. Które z wywołań makrodefinicji #define max(a,b)(a)<(b)?(b):(a) obliczającej max

dwóch liczb całkowitych i,j prowadzi do błędnych wyników ?



  1. max(i,j);

  2. max(i*j, i+j);

  3. max(--i,--j);

  4. max(i+1, j-2).

19. Podać wartości zmiennych int x=1, y=2 po wykonaniu następującego fragmentu

programu:

if (x>1)


if (++y < 3)

{ x =7; y = 8; }

else

{ x = 2; y=3; }


20. Podać formaty umożliwiające wyprowadzenie za pomocą funkcji printf danych typu:

a) unsigned long; b) long double.


21. Podać definicję: a) wskaźnika tablicy 5 wskaźników do zmiennych typu char;

b) tablicy 7 wskaźników funkcji o jednym parametrze typu int i wartości typu double.


22. Nazwać zdefiniowane zmienne: a) void **A; b) int * B[4];

c) int (*C)[2][3]; d) int (* (* D)(int, float) )[3].


23. Zakładając int c, a = 1, b = 2 podać wartość wyrażenia c = (++a)++ + b++

oraz wartości a i b.


24. Podać wartość zmiennej x: a) float x = 4 / 3; b) double x = 5.0 / 4.
25. Jakie wartości zostaną wyprowadzone na ekran przez następujący fragment programu ?

void f (int &i)

{ static int k=2; for (i; ivoid main() { int i = 0; f(i); f(i); }.
26. Zakładając int w, x = 1, y = 2, podać wartości w, x, y po obliczeniu wyrażenia:

w = x++ < y ? x==y ? x++ : y++ : ++x.


27. Zakładając int w, x = 1, y = 2 podać wartości w, x, y po obliczeniu wyrażenia:

w = ( y +=2, x+=1, y = (y++ >x), x << y ).


28. Zakładając double x oraz int k zapisz w języku C++ warunki:

a) x < -10 lub x > 10; b) k jest podzielne przez 2 lub przez 5.


29. Przyjmując const int n=5; int x=1, y; void *v = &x; const int *r , które z podanych

wyrażeń są poprawne. a) r = &x; b) v = (++r)++;

c) y = * (int *) v; d) int *const s = &x; e) y = *s++.
30. Podać wartości przypisane identyfikatorom A, B, C, D, E przez definicję

enum dat { A=2, B, C, D=-2, E }.


31. Podać zawartości tablic A i B zainicjowanych w sposób następujący:

a) int A[3][3] = { {1}, 2, 3, 4, 5 }; b) int B[][4] = { {1,2}, {3}, {4}, 5, 6 }.


32. Zapisać za pomocą operatora indeksowania [ ] następujące wyrażenia,

gdzie x, y są wskaźnikami, natomiast i, j są typu int:

a) *(x + i + j); b) * *(y + i); c) x + i + j.
33. Zakładając double x = -2.5; double *v = &x, podać wartość zmiennej w zdefiniowanej

jako: a) int w = *v + 3; b) int w = !(!x + 1) + 1.


34. Zakładając int a = 1, b = 2, c = 3 podać wartości a, b, c po wykonaniu instrukcji:

a) if (b > a && b < c) if (b) c=a+b+1; else c+=a+b; else a=b;

b) if (a++ -b) { c=a+b; b+=a+c; } else if ( !(a-2) ) { b+=a; c=a+b; } else c=a+2.
35. Dla wskaźnika (0xA0E1: 0x4321):

a) wyznaczyć adres fizyczny dla trybu rzeczywistego; b) unormować wskaźnik.


36. W trybie chronionym dokonano alokacji bloku pamięci o rozmiarze 199 KB.

Adres początku bloku zapamiętano we wskaźniku void far * p. Zakładając, że jeden

selektor adresuje maksymalnie bloki po 64 KB oraz p = (800 : 0) (selektor =800; offset=0)

podać wartości utworzonych selektorów i rozmiary adresowanych przez nie bloków.


37. Podać wartość zmiennej int k, jeśli zdefiniowano int *s, A[8]; long *q; char *v

oraz sizeof(long) = 4, sizeof(int) = 2, sizeof(char) = 1:

a) v = (char *) &A[3]; k = v – (char *) A;

b) q = (long *) A + 4; k = (char *) q – (char *) A.


38. Dla programu c:\prog.exe, w którym zdefiniowano void main( int n, char *v[] ) podać

zawartości: n, *v[0], *v[1], ...., *v[n-1] dla wywołania prog To-jest-C++.


39. Zakładając, że zdefiniowano: const int N=5;

struct tosoba { char naz[20]; float pensja; long id; }; tosoba Firma[N].

Opracować funkcję obliczającą liczbę osób, których pensja należy do przedziału [ a, b ].

Dany jest prototyp funkcji: int LZ(tosoba *v, int N, float a, float b). Wywołać funkcję.


40. Zakładając, że zdefiniowano: const int N=5;

struct tosoba { char naz[20]; int dzien, mies, rok; long id; };

tosoba Osoby[N]. Opracować funkcję obliczającą liczbę osób, których data urodzenia

należy do przedziału [ a, b ], gdzie daty a, b są postaci: 10000L*rok + 100*mies + dzien.

Dany jest prototyp funkcji: int LD(tosoba *v, int N, long a, long b). Wywołać funkcję.
41. Dana jest definicja unii: union H { int x; char y; };

Które z poniższych instrukcji są poprawne w języku C++?



  1. H p = {‘A’};

  2. union H p = { 1 };

  3. H union p = {1};

  4. union H p { 1, ‘A’}.




©operacji.org 2017
wyślij wiadomość

    Strona główna