background image

Ile bajtów zajmuje tekst "\tANSI-C\n" ?

Wymierz odpowiedź 

a. 9 
b. 10 
c. 8 
d. 11 

Niepoprawny
Ocena dla tego zadania: 0/1.

Zaznacz poprawne definicje inicjujące tablice
Wybierz co najmniej jedną odpowiedź 

a. int M[ ] [ 4 ] = { { 1, 2 }, { 0 }, { 3, 
4, 5, 6 } }; 

Tablica o 3 wierszach i 4 kolumnach. 

b. int K[ 4 ] = { 3, 7, 2, 1, 6 }; 

Liczba wartości przekracza rozmiar tablicy! 

c. int M[ ] [ ] = { { 1, 2 }, { 0 }, { 3, 
4, 5, 6 } }; 

Nieznany typ elementu tablicy (rozmiar wiersza)! 

d. int K[ ] = { 3, 7, 2, 1 }; 

Tablica 4 zmiennych. 

e. int M[ ] [ 4 ] = { { 1, 2 }, { 0 }, 
{ 3, 4, 5, 6, 7 } }; 

Liczba wartości podanych do trzeciego wiersza 
przekracza jego rozmiar! 

Niepoprawny
Ocena dla tego zadania: 0/1.

Który ciąg instrukcji nada zmiennej n wartość równą ilości liczb w pliku binarnym 
skojarzonym ze strumieniem fp?
Wymierz odpowiedź

fseek(fp, 0, 2); n=ftell(fp)/sizeof(double);

for(n=0; fscanf(fp, ”%lf”, &x)==1; n++);

fseek(fp, 0, 2); n=ftell(fp);

n=fseek(fp, 0, 2) - fseek(fp, 0, 0);

double Funkcja(int n) {
Jaką instrukcję może tu zawierać poprawna funkcja rekurencyjna (jeżeli jest to jedyna 
brakująca instrukcja)?
return S;
}
Wybierz co najmniej jedną odpowiedź

if(n>1) S = n*Funkcja(n-1); else S=1;

S = n*Funkcja(n-1);

S = n>1 ? n*Funkcja(n-1) : 1;

for(S=1; n>1; n—) S*=n;

background image

W wyliczeniu
enum Figura { Kolo, Trojkat=3, Kwadrat, Czworokat };
zdefiniowano wartości Kolo, Trojkat, Kwadrat i Czworokat.

Jakie to są wartości?
Wymierz odpowiedź

Kolo = 0, Trojkat = 3, Kwadrat = 4, Czworokat = 5

Kolo = 0, Trojkat = 3, Kwadrat = 1, Czworokat = 2

Kolo = 1, Trojkat = 3, Kwadrat = 4, Czworokat = 5

Kolo = 0, Trojkat = 3, Kwadrat = 2, Czworokat = 3

Instrukcja for(i=0; i<n; i++) S+=A[i]; nakazuje wykonać instrukcję S+=A[i]; dla:
Wymierz odpowiedź

i = 1, 2, … , n-1.

i = 1, 2, … , n.

i = 0, 1, 2, … , n.

i = 0, 1, 2, … , n-1.

Zaznacz prawdziwe zdania, jeśli zdefiniowano double Y[50];
Wybierz co najmniej jedną odpowiedź

Y jest nazwą zmiennej typu double.

Y jest stałą wskazującą na zmienną Y[0].

Y+ 5 wskazuje na zmienną Y[5].

Y+ 5 wskazuje 5 bajtów dalej niż Y

Plik binarny zawiera liczby typu double. Jak poprawnie wczytać te liczby do tablicy A
która zawiera 500 zmiennych typu double (nie wolno wczytać więcej niż 500 liczb) i nadać 
zmiennej n wartość równą ilości wczytanych liczb?
Wymierz odpowiedź 

a. for( n=0; fscanf(fp, "%lf", A+n )
==1; n++ ) ; 
b. for( n=0; n<500; n++ ) 
if( fscanf(fp, "%lf", A+n )!=1) break; 
c. n=fread( A, sizeof(*A), 500, fp );  Tak. Funkcja fread próbuje tu wczytać 500 liczb i 

daje w wyniku ile udało się jej wczytać. 

d. for( n=0; fread( A+n, sizeof(*A), 1, 
fp)==1; n++ ) ; 

Zdefiniowano int k = 29, n = 10; oraz double x, y; Jakie wartości otrzymają zmienne x oraz y 
po wykonaniu instrukcji
x = k/n;

background image

y=(double)k/n;
Wymierz odpowiedź

x = 2.9, y = 2.9

x = 3.0, y = 2.9

x = 2.0, y = 2.9

x = 2.0, y = 2.0

Które napisy są stałymi całkowitymi w C lub w C++?
Wybierz co najmniej jedną odpowiedź

"A" (znak A w cudzysłowach)

-15 (minus 15)

0x12

'A' (znak A w apostrofach)

Które napisy są stałymi rzeczywistymi w C lub C++?
Wybierz co najmniej jedną odpowiedź 

a. -3.14u 
b. -1.2e3 
c. 2e-3 

Stała 0.002 typu double 

d. 0.05F 

Stała 0.05 typu float 

Którym elementom tablicy A poniższe instrukcje nadadzą wartości? 

int k = 3; 
A[ k++ ] = 8; 
A[ ++k ] = 12;
 

Wymierz odpowiedź 

a. A[ 4 ] = 8, A[ 4 ] = 12 
b. A[ 4 ] = 8, A[ 5 ] = 12 
c. A[ 3 ] = 8, A[ 5 ] = 12 
d. A[ 3 ] = 8, A[ 4 ] = 12 

Co wydrukuje instrukcja if(x>y) printf("A"); else printf("B"); gdy x=5, y=6 ?
Wymierz odpowiedź 

a. Napis "A" 
b. Napis "AB" 
c. Nic nie wydrukuje 
d. Napis "B" 

Tak. Wykona instrukcję po else, bo warunek (x>y) jest fałszywy 

e. Napis "BA" 

background image

Wartością stałej tekstowej "Przyklad" jest:
Wymierz odpowiedź 

a. Liczba znaków w tekście bez ogranicznika - liczba 8 
b. Kod początkowego znaku tekstu - kod ASCII litery P 
c. Liczba znaków w tekście z ogranicznikiem - liczba 9 
d. Wskazanie początkowego znaku tekstu - znaku P 

Tak 

Poprawnie

W jakim systemie można pisać stałe całkowite?
Wybierz co najmniej jedną odpowiedź 

a. ósemkowym (8) 

Zaczynając o cyfry zero 

b. dwójkowym (2) 

Niestety nie! 

c. szesnastkowym (16) 

Zaczynając prefiksem 0x 

d. dziesiętnym 

Zaczynając od cyfry innej niż zero 

Zaznacz poprawne definicje tablic z tekstami.
Wybierz co najmniej jedną odpowiedź 

a. char *T[ 2 ] = { "Tekst 1", "Tekst 2", 
"Tekst 3" }; 
b. char T[ 5 ] = "Tekst"; 
c. char *T[ ] = { "Tekst 1", "Tekst 2" }; Dwuelementowa tablica wskaźników na 

podane teksty. 

d. char T[ ] = "Tekst"; 

Tablica 6 zmiennych: T e k s t \0 

e. char T[ ][ ] = { {"Tekst 1"}, {"Tekst 
2"} }; 
f. char T[ 10 ] = "Tekst"; 

Ostatnie 4 zmienne inicjowane są zerami. 

Plik binarny poprawnie otwarty instrukcją FILE *fp=fopen(nazwa,”rb”); zawiera dane typu 
double. Jak poprawnie wczytać te dane do tablicy zdefiniowanej double X[100]; ?
Wymierz odpowiedź 

a. for(n=0; n<100; n++) fscanf(fp, ”%lf”, X+n); 
b. for(n=0;n<100 ; n++) fread(X+n, sizeof(X[0]), 
100, fp); 

Czemu się równa n po zakończeniu 
pętli? 

c. for(n=0; fscanf(fp, ”%lf”, X+n)==1 ; n++) 
if(n==100) break; 
d. n=fread(X, sizeof(X[0]), 100, fp); 

Dlaczego argumentami funkcji scanf nazwy prostych zmiennych poprzedza się 
znakiem & - np. scanf("%d",&n); ?
Wymierz odpowiedź 

a. Aby przyspieszyć obliczenia. 
b. Aby udostępnić zmienną do zapisu. 

background image

c. Aby powiązać tę zmienną z polem 
konwersji 
d. Aby do funkcji przekazać wartość 
wskaźnika na zmienną. 

W języku C nie nożna do funkcji przekazać 
zmiennej bezpośrednio w parametrach. 

Zaznacz 2 reguły, które określają kolejność wykonywania operacji (opracowywania 
operatorów). 

Z dwóch sąsiadujących operatorów najpierw opracowuje się operator: 

Wybierz co najmniej jedną odpowiedź 

a. o mniejszej liczbie argumentów (jeśli 
mają różne liczby argumentów) 

Nie, o kolejności operacji decydują 
priorytety, a gdy te są jednakowe to łączność 
operatorów. 

b. z lewej strony (jeśli priorytety są 
jednakowe). 

Niestety, ale gdy priorytety są jednakowe, o 
kolejności decyduje łączność operatorów. 

c. o wyższym priorytecie (jeśli ich 
priorytety są różne). 

O kolejności decyduje priorytet. 

d. z lewej lub prawej strony zależnie od 
łączności (jeśli priorytety są jednakowe). 

1. Po wczytaniu liczby wierszy i liczby kolumn tablicy A do zmiennych n oraz m należy dokonać 

alokacji pamięci tak, aby zmienna typu double w i-tym wierszu i j-tej kolumnie była wynikiem 
wyrażenia A[i][j].
Jak zaalokować taką tablicę? (W odpowiedziach pominięto rzutowania typów wskaźników)

a. double **A=calloc(n,sizeof(*A));

for(i=0;i<n;i++) A[i]=calloc(m,sizeof(**A));

b. double *A; A=calloc(n*m, sizeof(double)); 

c. double (*A)[m]; A=calloc(n,sizeof(*A));

2. Dopasuj określenia

Średnik, którego nie poprzedza wyrażenie instrukcja pusta

Pętla, która musi co najmniej jeden raz wykonać powtarzaną instrukcję do-while

Zależnie od warunku wykonuje jedną z dwóch instrukcji instrukcja if-else

Realizuje skok do instrukcji poprzedzonej wybraną etykietą case lub default zależnie od 
wartości całkowitej  instrukcja switch

background image

Wyrażenie zakończone średnikiem instrukcja

3. Jeśli zdefiniowano double (*F)(double); oraz przypisano F=sin, to suma F+1:

a. Wskazuje na następną funkcję, czyli na funkcję cos.   

b. Jest niepoprawna, bo do wskaźnika F nie można dodać liczby całkowitej. 

c. Wskazuje na drugi bajt kodu funkcji sin. 
d. Dalej wskazuje na funkcję sin, bo dodawanie liczby całkowitej do wskaźnika F nie 
ma efektu.

4. Dopasuj definicje wskaźników do opisów.

Wskaźnik na tablicę 8 zmiennych typu int 

int(*P)[8];

Wskaźnik na zmienną typu int 

int *p;

Wskaźnik na tablicę 8 wskaźników na zmienne typu int int*(*P)[8];

Wskaźnik na wskaźnik na zmienną typu int 

int **p;

Tablica 8 wskaźników na zmienne typu int

int *P[8];

5. Dopasuj wyrażenia do opisów warunków logicznych

x < 0 lub x > 80 

x < 80 || x > 0

0 < x < 80 

x > 0 && x < 80

x równe zeru lub równe 80 

x==0 || x==80

x różne od zera i różne od 80 x != 0 && x != 80

6. Zakładając, że zmienna K jest całkowita i nieujemna, dopasuj wyrażenia do określeń

Wartość K z wyzerowanymi trzema najmłodszymi bitami 

(K >> 3) << 3

Słowo mające trzy ustawione bity na pozycjach 3, 4 i 5. 

7 << 3

Wartość 8*K (8 = 2 do potęgi 3) 

K << 3

Wartość K/8 (8 = 2 do potęgi 3)

K >> 3

7. Dopasuj wyrażenia do określeń zakładając, że x, y są zmiennymi typu double.

Maksimum z {x, y} 

x>y ? x : y

background image

Wartość bezwzględna z x 

x < 0 ? –x : y

Odległość (nieujemna różnica) między x a y 

x > y ? x-y : y-x

Minimum z {x, y}

x<y ? x : y

8. Dopasuj słowa kluczowe i operatory do wyjaśnień.

Umieszcza w pamięci wszystkie swoje zmienne jedna na drugiej w tym samym obszarze 

pamięci. union

Lewym argumentem tego operatora jest zmienna strukturowa.  . (kropka)

Lewym argumentem tego operatora jest wskaźnik na zmienną strukturową. -> (strzałka

Umieszcza w pamięci wszystkie swoje zmienne jedna po drugiej. struci

9. Dopasuj definicje  parametru k funkcji Fun

W instrukcji Fun( n );funkcja posługuje się zmienną k tak jak nazwą tablicy Fun(int k[])

W instrukcji Fun( n ); funkcja posługuje się zmienną n używając do niej nazwy k, ale nie 

wolno jej zmieniać wartości tej zmiennej 

Fun (const int &k)

W instrukcji Fun( n );funkcja posługuje się zmienną n używając do niej nazwy k Fun(int &k)

W instrukcji Fun(n+5); funkcja przypisuje własnej lokalnej zmiennej k wartośćn+5 Fun(int k)

10. W programie Prog zdefiniowano int main(int argc, char *argv[])

Linia wywołania programu ma postać: ... \Prog.exe  12  dane  wyniki
Jaką wartość otrzyma zmienna argc i zmienna argv[1]?

a. argc=4, argv[1] wskazuje na tekst "12" 
b. argc=12, argv[1] wskazuje na tekst "dane" 
c. argc=3, argv[1] wskazuje na tekst "12" 
d. argc=4, argv[1] wskazuje na tekst "dane"

11. Ile zmiennych typu double tworzy definicja double X[100]; i  jak te zmienne należy 

indeksować?

a. 100 zmiennych indeksowanych od 0 do 99 
b. 101 zmiennych indeksowanych od 0 do 100 

background image

c. 99 zmiennych indeksowanych od 1 do 99 
d. 100 zmiennych indeksowanych od 1 do 100

12. W programie zdefiniowano int n;  i wczytano wartość do zmiennej n. Jak poprawnie 

przydzielić programowi pamięć na tablicę  zmiennych typu double ułożonych w n wierszach i 
4 kolumnach?

a. double *A[4]; A=(double*)calloc(4*n, sizeof(*A)); 
b. double *A; A=(double*)calloc(4*n, sizeof(*A)); 
c. double (*A)[4]; A=new double[n][4]; 
d. double (*A)[4]; A=(double(*)[4])calloc(n, sizeof(*A));

13. Dopasuj specyfikatory klasy pamięci i kwalifikatory do ich interpretacji.

Definicja nazwy typu 

typedef

Zmienna przeznaczona do umieszczenia w rejestrze procesora. 

register

Zmienna, która została zdefiniowana w innej części programu (np. w innym pliku) extern

Zmienna, która powstaje i znika w zależności od potrzeby. 

auto

Zmienna, która istnieje przez cały czas pracy programu. 

static

Zainicjowana zmienna, której wartości nie można mieniać.

const

14. Otwarto plik tekstowy zawierający tylko poprawnie zapisane liczby rzeczywiste. Jaki będzie 

efekt wykonania instrukcji 
for(n=0; fscanf(fp, "%lf", &x)==1; n++);
jeżeli zmienne n, fp, x są kolejno typu int, FILE*, double?

a. Plik ustawi się w pozycji końcowej. 
b. Wartość n mówi, ile razy w pliku występuje liczba 1 
c. Wartość n mówi, ile liczb jest w pliku. 
d. Do zmiennej x zostanie wczytana tylko pierwsza liczba

15. Co obliczą następujące instrukcje?

S=0;

for(i=0; i<n; i++) S=x*S+A[i]; 

wartość wielomianu

S=0;

for(i=0; i<n; i++) S+=A[i]; 

suma z A[0] + A[1] + …  + A[n-1]

S=A[0];

for(i=1; i<n; i++)
   if(S<A[i]) S=A[i]; 

maksimum z A[0], A[1], …, A[n-1]

background image

S=A[0];

for(i=1; i<n; i++)
   if(S>A[i]) S=A[i];

minimum z A[0], A[1], …, A[n-1]

16. Zdefiniowano wskaźnik na funkcje double (*f)(double);

Które operacje na wskaźniku f są dozwolone i nie wygenerują błędu kompilatora?

a. f(x) (wywołanie wskazanej funkcji) 
b. (*f)(x) (wywołanie wyłuskanej funkcji) 
c. f+1 (dodanie liczby całkowitej) 
d. f[2] (indeksacja elementu tablicy) 
e. f ==NULL (przyrównanie do wskaźnika zerowego)

17. Jakie wartości zmiennej n pozwala wprowadzić instrukcja

do scanf("%d",&n); while(n<2 || n>50); ?

a. Od 2 do 50 włącznie 
b. Różne od 2 i różne od 50 
c. Mniejsze od 2 lub wieksze od 50 
d. Różne od zera

18. Dopasuj nazwy strumieni i obiektów strumieniowych do opisów.

Obiekt strumieniowy wprowadzający dane ze strumienia stdin  cin

Obiekt strumieniowy wyprowadzający dane do strumienia stderr cerr

Strumień wyjściowy skojarzony domyślnie z ekranem 

stdout

Obiekt strumieniowy wyprowadzający dane do strumienia stdout cout

Strumień wyjściowy skojarzony na stałe z ekranem 

stderr

Strumień wejściowy skojarzony domyślnie z klawiaturą Stein

19. Połącz instrukcje w języku C z interpretacją wyniku S.

S=0; for(i=0; i<n; i++) S+=A[i];

Suma z n liczb A[0] + …

S=A[0]; for(i=1; i<n; i++) if(S>A[i])S=A[i]; Minimum z liczb A[0], … A[n-1]

S=A[0]; for(i=1; i<n; i++) if(S<A[i])S=A[i]; Maksimum z liczb A[0], ..A[n-1]

S=0; for(i=0; i<n; i++) if(A[i]>0) S+=A[i]; Suma tylko z dodatnich liczb A[0]…

20. Dopasuj opisy pól konwersji do typów argumentów funkcji printf.

background image

char (typ znakowy) 

%c

int 

%d

double 

%lf

char* (wskaźnik na znak) %s

21. Jeśli P i S są wskaźnikami, to kiedy relacja P<S ma sens i co daje w wyniku?

a. P i S muszą wskazywać na elementy tej samej tablicy 
b. P i S muszą wskazywać na dowolne obiekty tego samego typu 
c. P<S, gdy P wskazuje na zmienną zajmującą mniej bajtów niż S 
d. P<S, gdy P wskazuje na mniej zmiennych niż S 
e. P<S, gdy P wskazuje na element o mniejszym indeksie niż S

22. Jeśli P i S są wskaźnikami, to kiedy różnica P-S ma sens i co daje w wyniku?

a. P-S = ile bajtów dalej wskazuje P niż S 
b. P i S muszą wskazywać dowolne obiekty tego samego typu 
c. P-S = wskazanie na obszar od P do S 
d. P i S muszą wskazywać elementy tej samej tablicy 
e. P-S = ile elementów dalej wskazuje P niż S

23. W programie zdefiniowano int n;  i wczytano wartość do zmiennej n. Jak poprawnie 

przydzielić programowi pamięć na tablicę n zmiennych typu double?

a. double *A; A=new double[n]; 
b. double *A; A=(double*)calloc(n, sizeof(*A)); 
c. double A[n]; 
d. double (*A)[n]; A=(double*)calloc(n, sizeof(*A));

24. Ułóż elementy definicji funkcji w kolejności takiej, w jakiej występują one w tej definicji.

Pozycja 3 

lista parametrów

Pozycja 2 

nazwa funkcji

Pozycja 4 

instrukcja kodująca algorytm

Pozycja 1

typ wyniku funkcji

25. Dopasuj, jakie wyrażenia dają w wyniku opisane wartości, jeśli zdefiniowano:

double A[10][8], (*p)[4], B[]={2,3,5,7,9,4,1};

Rozmiar zmiennej wskaźnikowej 

sizeof(p)

Liczba elementów tablicy. 

sizeof(B) / sizeof(B[0])

background image

Rozmiar tablicy 4 zmiennych typu double. 

sizeof(p[0])

Rozmiar tablicy w bajtach. 

sizeof(B)

Rozmiar 8 zmiennych typu double

sizeof(A[0])

26. Uniwersalny wskaźnik p zdefiniowany const void *p; przechowuje wskazanie na zmienną 

wskaźnikową wskazującą na początkowy znak tekstu czyli na typ char. Jak za pomocą tego 
wskaźnika zainicjować definiowaną zmienną wskaźnikową, aby wskazywała ona na 
początkowy znak tego tekstu?

a. char *s = (char *)p; 
b. char *s = *(char **)p; 
c. char *s = *(char *)p; 
d. char *s = (char **)p;

27. Drugim argumentem funkcji fopen jest tekst, który określa tryb otwarcia pliku. Dopasuj teksty 

do podanych warunków otwarcia.

Otwierany plik jest kasowany, jeśli istnieje, a następnie jest kreowany jako pusty.  „w”

Otwierany jest plik do edycji (odczytu i zapisu) danych binarnych. 

„rb+”

Otwierany plik jest przewijany na koniec (gdy istnieje) lub jest kreowany. 

„a”

Otwierany plik musi istnieć. 

“r”

Otwierany jest plik do dopisywania danych binarnych.   „ab”

28. Zdefiniowano wskaźnik uniwersalny void *P;

Które operacje na wskaźniku P są dozwolone i nie wygenerują błędu kompilatora?

a. *P (wyłuskanie wskazywanej zmiennej) 
b. P[2] (indeksacja elementu tablicy) 
c. P+1 (dodanie liczby całkowitej) 
d. P ==NULL (przyrównanie do wskaźnika zerowego) 
e. (double*)P (rzutowanie na typ double*)

background image

29. Dopasuj określenia

Instrukcja, która powoduje wyjście z instrukcji powtarzania (for, do-while ora while) break

Instrukcja nakazująca natychmiastowe przejście do następnej iteracji w instrukcji powtarzania 

continue

Etykieta, do której nastąpi skok w instrukcji switch, gdy na liście etykiet case nie znaleziono 

żądanej wartości całkowitej default

Instrukcja powodująca wyjście z funkcji return

30. Uniwersalny wskaźnik p zdefiniowany const void *p; przechowuje wskazanie zmiennej 

całkowitej typu int. Jak za pomocą tego wskaźnika zainicjować definiowaną zmienną 
całkowitą?

a. int k = *p; 
b. int k = (int*)p; 
c. int k = *(int*)p; 
d. int k = (int)p;

31. Dopasuj słowa kluczowe do opisów

Typ pusty - funkcja bez wyniku 

void

Typ rzeczywisty (liczba z ułamkiem)  double

Rozpoczyna instrukcję wyboru z warunkiem typu prawda/fałsz (zero/nie zero)  if

Typ całkowity (liczba całkowita) 

int

Poprzedza warunek powtarzania instrukcji w instrukcji pętli (repetycyjnej) 

while

W instrukcji if poprzedza instrukcję wykonywaną, gdy warunek w if okazuje się fałszywy 

(zerowy) else

32. Czym są nazwy A i B, jeżeli zdefiniowano double A[50], B[8][4];

a. B - stała wskazująca na pierwszy bajt tablicy B. 
b. A - stała wskazująca na pierwszy element tablicy - A[0]. 
c. B - stała wskazująca na zmienną typu double - B[0][0]. 
d. B - stała wskazująca pierwszy wiersz tablicy (4 zmienne) 
e. A - stała wskazująca na pierwszy bajt tablicy A.

33. Dopasuj definicje wskaźników do definicji tablic tak, aby arytmetyka na wskaźniku była 

zgodna z arytmetyką na nazwie tablicy (aby wskaźnik wskazywał na taki sam typ, na jaki 
wskazuje nazwa tablicy).

double *p; 

double A[40];

background image

double **q; 

double *D[40]

double (*r)[8]; 

double B[40][8]

double (*s)[40];

double C[8][40]

34. Dopasuj opisy do elementów instrukcji for(i=0; i<n; i++) S+=A[i];

Gdy prawdziwe (różne od zera) nakazuje wykonać iterację (powtarzaną instrukcję).  i<n

Jest powtarzaną instrukcją. 

S+=A[i]

Jest wykonywane po każdej iteracji. 

i++

Wykonuje się jeden raz na początku pętli

i=0

35. Aby funkcja qsort mogła sortować teksty, należy sortować tablicę wskaźników na początkowe 

znaki tych tekstów. Argument s funkcji porównującej jest typu const void *s i wskazuje na 
element sortowanej tablicy wskaźników. Jak należy zainicjować wskaźnik ps, aby wskazywał 
na początkowy znak rozważanego tekstu?

a. char *ps=*s; 
b. char *ps=(char*)s; 
c. char *ps=**(char**)s; 
d. char *ps=*(char**)s;

36. Zdefiniowano strukturę Osoba, zmienną A i wskaźnik p na tę zmienną:

struct Osoba { . . . // tu jakieś dane
   Data d;   // gdzie struct Data { short d, m, r; };
   Osoba *ojciec, *matka;
}   A, *p=&A;-
W zmiennej A zawarto Twoje dane osobowe. Które instrukcje wyznaczą poprawnie rok 
urodzenia Twojego ojca? 

a. R = A . ojciec -> d . r 
b. R = p -> ojciec -> d -> r 
c. R = A . ojciec . d . r 
d. R = p -> ojciec -> d . r

37. Czym są wyrażenia A, *A, A[i], jeżeli zdefiniowano double A[50][8];

a. A[i] - stała wskazująca na zmienną A[i][0]. 
b. *A - jest zmienną A[0][0]. 
c. A - stała wskazująca na pierwszy wiersz tablicy A, czyli na 8 zmiennych - 

A[0], . , A[7]. 

d. Wyrażenie A[i] jest błędne, bo tablica A jest 2-indeksowa. 
e. *A - stała wskazująca na zmienną A[0][0]. 

background image

f. A - stała wskazująca na zmienną A[0][0].

38. Jeżeli zdefiniowano

double A[100], *p, B[20][4], (*s)[4];
i przypisano
p=A;
s=B;
to na co wskazują p+1 oraz s+1 ?

a. p+1 wskazuje 1 bajt dalej niż p 
b. p+1 wskazuje na A[1] 
c. s+1 wskazuje na wiersz B[1][0], ..., B[1][3] 
d. s+1 wskazuje na B[0][1] 
e. s+1 wskazuje 1 bajt dalej niż s