• Nie Znaleziono Wyników

Tablice i łańcuchy

N/A
N/A
Protected

Academic year: 2021

Share "Tablice i łańcuchy"

Copied!
1
0
0

Pełen tekst

(1)

Wykład C/C++

Zagadnienia kolokwialne i / lub egzaminacyjne

1. Typy danych i zmienne.

2. Operatory i wyrażenia.

3. Instrukcje decyzyjne.

4. Instrukcje iteracyjne.

5. Funkcje.

6. Preprocesor.

7. Tablice i łańcuchy.

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

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

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

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

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

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

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

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

(2)

Przykładowe pytania testowe

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

a) ósemkowej, b) szesnastkowej.

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

a) ósemkowej, b) szesnastkowej.

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

a) ósemkowej, b) szesnastkowej.

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

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

6. Deklaracja unsigned x jest:

a) deklaracją zmiennej typu całkowitego, b) deklaracją zmiennej typu rzeczywistego, c) deklaracją zmiennej typu wskaźnikowego.

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

8. 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 . 13. 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++ . 14. Jakie wartości przyjmują wyrażenia w zależności od x i y ?

a) (x>y) + (x<y); b) (x>y) – (x<y) .

15. 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?

a) wartość zmiennej x nie może być zmieniana;

b) wartość zmiennej y może być zmieniana;

c) wartość zmiennej z może być zmieniana;

d) wartość zmiennej wskazywanej przez x może być zmieniana;

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

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

(3)

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 ?

a) max(i,j);

b) max(i*j, i+j);

c) max(--i,--j);

d) 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; i<k; i++) printf(”%3d”, i); k++; } void 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 }.

(4)

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++?

a) H p = {‘A’};

b) union H p = { 1 };

c) H union p = {1};

d) union H p { 1, ‘A’}.

Cytaty

Powiązane dokumenty

2) Jeśli (eps&lt;1) and (eps&gt;0) to przejdź do kroku 3, w przeciwnym wypadku przejdź do kroku 1 3) Ustaw początkową sumę szeregu: suma=1, numer wyrazu i=2; wartość

Zagadnienia: specyfikacja funkcji, operacje wejścia i wyjścia na plikach, for- matowane wejście i wyjście, struktury sterujące, rekurencja, nie- bezpieczeństwa rekurencji,

• by zapisać znak do pliku wskazywanego przez plik należy użyć funkcji int putc(int znak, FILE *plik), która zwraca wartość tego znaku lub EOF jako sygnał wystąpienia

• by zapisać znak do pliku wskazywanego przez plik należy użyć funkcji int putc(int znak, FILE *plik), która zwraca wartość tego znaku lub EOF jako sygnał wystąpienia

Zagadnienia: specyfikacja funkcji, operacje wejścia i wyjścia na plikach, for- matowane wejście i wyjście, struktury sterujące, rekurencja, nie- bezpieczeństwa rekurencji,

- jeśli wykonanie zakończyło się poprawnie, to zwraca wskazanie do łańcucha buf; jeśli napotka znacznik końca pliku albo gdy wystąpił błąd, to zwraca

 Zwraca liczbę odczytanych elementów - w przypadku gdy liczba ta jest różna od n, to wystąpił błąd końca strumienia (w pliku było mniej elementów niż podana

Wskaźniki TiVA prezentuje podejście statystyczne wykorzystywane do oszacowania wartości według kraju i branży, które jest dodawa- ne do produkcji towarów i usług