Zdefiniować stałą całkowitą typu int o wartości 65 w postaci:
a) ósemkowej, b) szesnastkowej.
Zdefiniować stałą całkowitą typu long int o wartości 100 w postaci:
a) ósemkowej, b) szesnastkowej.
Zdefiniować stałą typu char o wartości 65 w postaci:
a) ósemkowej, b) szesnastkowej.
Podać wartość dziesiętną stałej const char z = `\x20'.
Podać wartość dziesiętną stałej całkowitej 041L.
Deklaracja unsigned x jest:
deklaracją zmiennej typu całkowitego,
deklaracją zmiennej typu rzeczywistego,
deklaracją zmiennej typu wskaźnikowego.
Podać wartość stałej: 0111.
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 .
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++ .
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?
wartość zmiennej x nie może być zmieniana;
wartość zmiennej y może być zmieniana;
wartość zmiennej z może być zmieniana;
wartość zmiennej wskazywanej przez x może być zmieniana;
wartość zmiennej wskazywanej przez y może być zmieniana;
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 ?
max(i,j);
max(i*j, i+j);
max(--i,--j);
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 }.
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++?
H p = {`A'};
union H p = { 1 };
H union p = {1};
union H p { 1, `A'}.