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;
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;
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"
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.
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
•
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
•
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
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]
•
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.
•
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])
•
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*)
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];
•
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].
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