1 Co wydrukuje instrukcja if(x>y) printf(''A''); else printf(''B''); gdy x=5, y=6?
Odpowiedź: Napis ''B''
2 Ułóż elementy definicji funkcji w kolejności takiej, w jakiej występują one w definicji
Pozycja 1 -> Typ wyniku funkcji
Pozycja 2 -> Nazwa funkcji
Pozycja 3 -> Lista parametrów
Pozycja 4 -> Instrukcja kodująca algorytm
3 Od wywołania jakiej funkcji zaczyna wywoływać się program?
Odpowiedź: od funkcji main
4 Dopasuj opisy do elementów instrukcji for(i=0; i<n; i++) S+=A[i];
Jest wykonywana po każdej iteracji -> i++
Gdy prawdziwe (różne od zera) nakazuje wykonać iterację -> i<n
Wykonuje się jeden raz na początku pętli -> i=0
Jest powtarzaną instrukcją -> S+=A[i]
5 Dopasuj nazwy strumieni i obiektów strumieniowych do opisów:
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ń wejściowy skojarzony domyślnie z klawiaturą -> stdin
Strumień wyjściowy skojarzony na stałe z ekranem -> stderr
6 Dopasuj opisy pól konwersji do typów argumentów funkcji printf
char* (wskaźnik na znak) -> %s
double -> %f
int -> %d
char (typ znakowy) -> %c
7 Połącz instrukcje w języku C z interpretacją wyniku S
S=0; for(i=0; i<n; i++) S+=A[i]; -> Suma n liczb 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 n liczb A[0], A[1],...,A[n-1]
S=0; for(i=0; i<n; i++) if(A[i]>0) S+=A[i]; -> Suma tylko dodatnich liczba 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 n liczb A[0], A[1],...,A[n-1]
8 Instrukcja for(i=0; i<n; i++) S+=A[i]; nakazuje wykonać instrukcję S+=A[i]; dla:
Odpowiedź: i=0,1,2,...,n-1
9 Jakie wartości zmiennej n pozwala wprowadzić instrukcja
do scanf(''%d'', &n); while (n<2 || n>50);
Odpowiedź: Od 2 do 50 włącznie
10 Zaznacz prawdziwe zdania, jeśli zdefiniowano double Y[50]:
Odpowiedź: Y+5 wskazuje na zmienną Y[5]
Odpowiedź: Y jest stałą wskazującą na zmienną Y[0]
11 Dlaczego argumentami funkcji scanf nazwy prostych zmiennych poprzedza się znakiem & - np. scanf(''&d'',&n)?
Odpowiedź: Aby do funkcji przekazać wartość wskaźnika na zmienną
12 Ile zmiennych typu double tworzy definicja double X[100]; i jak te zmienne należy indeksować?
Odpowiedź: 100 zmiennych indeksowanych od 0 do 99
13 Dopasuj słowa kluczowe do opisów:
W instrukcji if poprzedza instrukcję wykonywaną, gdy warunek if okazuje się fałszywy (zerowy)-> else
Typ całkowity (liczba całkowita) -> int
Poprzedza warunek powtarzania instrukcji w instrukcji pętli (repetycyjnej) -> while
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
14 Zaproszenie do wprowadzania danych wysyłamy używając funkcji:
Odpowiedź: fprintf(stderr,...
15 Dopasuj specyfikatory klasy pamięci i kwalifikatory do ich interpretacji.
Zmienna, która została zdefiniowana w innej części programu (np. w innym pliku) -> extern
Definicja nazwy typu -> typedef
Zmienna przeznaczona do umieszczenia w rejestrze procesora -> register
Zmienna, która powstaje i znika w zależności od potrzeby -> auto
Zainicjowana zmienna, której wartości nie można zmieniać -> const
Zmienna, która istnieje przez cały czas pracy programu -> static
16 Które napisy są stałymi rzeczywistymi w C lub C++?
Odpowiedź: 2e-3
Odpowiedź: 0.05F
17 W jakim systemie można pisać stałe całkowite?
Odpowiedź: dziesiętnym
Odpowiedź: ósemkowym
Odpowiedź: szesnastkowy
18 Wartością stałej tekstowej ''Przykład'' jest:
Odpowiedź: Wskazanie początkowego znaku tekstu - znak P
19 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)
Umieszcza w pamięci wszystkie swoje zmienne jedna po drugiej -> struct
Lewym argumentem tego operatora jest wskaźnik na zmienną strukturową -> -> (strzałka)
20 Zaznacz poprawne definicje tablic z tekstami.
Odpowiedź: char *T[]={''Tekst 1'', ''Tekst 2''};
Odpowiedź: char T[10]=''Tekst'';
Odpowiedź: char T[]=''Tekst'';
21 Które napisy są stałymi całkowitymi w C lub C++
Odpowiedź: 0x12
Odpowiedź: 'A' (znak A w apostrofach)
22 W wyliczeniu
enum Figura {Kolo, Trojkat = 3, Kwadrat, Czworokat};
zdefiniowano wartości Kolo, Trojkat, Kwadrat, Czworokat. Jakie to są wartości?
Odpowiedź: Kolo=0, Trojkat=3, Kwadrat=4, Czworokat=5
23 Ile bajtów zajmuje tekst ''\n\tANSI-C\n'' ?
Odpowiedź: 10
24 Zaznacz poprawne definicje inicjujące tablice
Odpowiedź: int M[][4]={{1,2},{0},{3,4,5,6}};
Odpowiedź: int K[]={3,7,2,1};
25 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?
Odpowiedź: R=A.ojciec->d.r
Odpowiedź: R=p->ojciec->d.r
26 Dopasuj definicje parametru k funkcji Fun
W instrukcji Fun(n); funkcja posługuje się zmienną n używając do niej nazwy k -> Fun(int &k)
-,,- funkcja posługuje się zmienną k tak jak nazwą tablicy -> Funk(int k[])
-,,- 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+5); funkcja przypisuje własnej lokalnej zmiennej k wartość n+5 -> Fun(int k)
27 Dopasuj określenia:
Instrukcja powodująca wyjście z funkcji -> return
Instrukcja, która powoduje wyjście z instrukcji powtarzania (for, do-while oraz 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
28 Którym elementom tablicy A poniższe instrukcje nadadzą wartości?
k=3;
A[k++]=8;
A[++k]=12;
Odpowiedź: A[3]=8, A[5]=12
29 double Funkcja(int n) {
Jaką instrukcję może tu zawierać poprawna funkcja rekurencyjna (jeżeli jest to jedyna brakująca instrukcja)?
return S;
}
Odpowiedź: if(n>1) S=n*Funkcja(n-1); else S=1;
Odpowiedź: S=n>1 ? n*Funkcja(n-1) : 1;
30 Dopasuj wyrażenie do określeń zakładając, że x,y są zmiennymi typu double
Wartość bezwzględna z x -> x<0 ? -x:x
Maksimum z {x,y} -> x>y ? 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
31 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:
Odpowiedź: z lewej lub prawej strony zależnie od łączności (jeśli priorytety są jednakowe)
Odpowiedź: o wyższym priorytecie (jeśli ich priorytety są różne)
32 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;
Odpowiedź: x=2.0, y=2.9
33 Zakładając, że zmienna K jest całkowita i nieujemna, dopasuj wyrażenia do określeń:
Wartość K/8(8=2 do potęgi 3) -> K>>3
Słowo mające trzy ustawione bity na pozycjach 3,4 i 5 -> 7
Wartość K z wyzerowanymi trzema najmłodszymi bitami -> (K>>3)
Wartość 8*K (8=2 do potęgi 3) -> K
34 Dopasuj wyrażenia do opisów warunków logicznych
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
0 < x < 80 -> x>0 && x<80
x < 0 lub x > 80 -> x<0 || x>80
35 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]?
Odpowiedź: argc=4, argv[1] wskazuje na tekst ''12''
36 Dopasuj określenia
Zależnie od warunku wykonuje jedną z dwóch instrukcji -> if-else
Pętla, która musi co najmniej jeden raz wykonać jedną z dwóch instrukcji -> do-while
Realizuje skok do instrukcji poprzedzonej wybraną etykietę case lub default zależnie od wartości całkowitej -> instrukcja switch
Średnik, którego nie poprzedza wyrażenie -> instrukcja pusta
Wyrażenie zakończone średnikiem -> instrukcja
37 Co obliczają następujące instrukcje?
S=0;
for (i=0; i<n; i++) S=x*S+A[i]; -> wartość wielomianu
S=A[0];
for (i=0; i<n; i++)
if (S>A[i]) S=A[i]) -> Minimum z A[0],A[1],...,A[n-1]
S=0;
for (i=0; i<n; i++) S+=A[i]; -> Suma A[0]+A[1]+...+A[n-1]
S=A[0];
for(i=0; i<n; i++)
if (S<A[i]) S=A[i]) -> Maksimum z A[0],A[1],...,A[n-1]
38 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 tablicy 4 zmiennych typu double -> sizeof(p[0])
Rozmiar zmiennej wskaźnikowej -> sizeof(p)
Rozmiar tablicy w bajtach -> sizeof(B)
Rozmiar 8 zmiennych typu double -> sizeof(A[0])
Liczba elementów tablicy -> sizeof(B)/sizeof(B[0])
39 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?
Odpowiedź: s+1 wskazuje na wiersz B[1][0],...,B[1][3]
Odpowiedź: p+1 wskazuje na A[1]
40 Czym są nazwy A i B, jeżeli zdefiniowano
double A[50], B[8][4];
Odpowiedź: A - stała wskazująca na pierwszy element tablicy - A[0]
Odpowiedź: B - stała wskazująca na pierwszy wiesz tablicy (4 zmienne)
41 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]
42 Jeśli P i S są wskaźnikami, to kiedy różnica P-S ma sens i co daje w wyniku?
Odpowiedź: P i S muszą wskazywać elementy tej samej tablicy
Odpowiedź: P-S= ile elementów dalej wskazuje P niż S
43 W programie zdefiniowano int n; i wczytano wartość do zmiennej n. Jak poprawnie przydzielić programowi pamięć na tablicę n zmiennych typu double?
Odpowiedź: double *A; A=new double[n];
Odpowiedź: double A; A=(double)calloc(n, sizeof(*A))
44 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śli zmienne n, fp, x są kolejno typu int, FILE*, double?
Odpowiedź: Plik ustawi się w pozycji końcowej
Odpowiedź: Wartość n mówi, ile liczb jest w pliku
45 Drugim argumentem funkcji fopen jest tekst, który określa tryb otwarcia pliku. Dopasuj teksty do podanych warunków otwarcia.
Otwierany plik jest przewijany na koniec (gdy istnieje) lub jest kreowany -> ''a''
Otwierany jest plik do edycji (odczytu i zapisu) danych binarnych -> ''rb+''
Otwierany plik musi istnieć -> ''r''
Otwierany plik jest kasowany, jeśli istnieje, a następnie jest kreowany jako pusty -> ''w''
Otwierany jest plik do dopisywania danych binarnych -> ''ab''
46 Czym są wyrażenie A, *A, A[i], jeśli zdefiniowano
double A[50][8];
Odpowiedź: A[i] - stała wskazująca na zmienną A[i][0]
Odpowiedź: *A - stała wskazująca na zmienną A[0][0]
Odpowiedź: A - stała wskazująca na pierwszy wiersz tablicy A, czyli na 8 zmiennych - A[0],...,A[7]
47 Jeśli zdefiniowano double (*F)(double); oraz przypisano F=sin, to suma F+1:
Odpowiedź: Jest niepoprawna, bo do wskaźnika F, nie można dodać liczby całkowitej
48 Który ciąg instrukcji nada zmiennej n wartość równą ilości liczb w pliku binarnym skojarzonym ze strumieniem fp?
Odpowiedź: fseek(fp,0,2); n=ftell(rp)/sizeof(double);
49 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];?
Odpowiedź: n=fread(X, sizeof(X[0]), 100,fp);
50 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 **q; -> double *D[40];
double (*s)[40]; -> double C[8][40];
double (*r)[8]; -> double B[40][8];
double *p; -> double A[40];
51 Zdefiniowano wskaźnik na funkcje:
double (*f)(double);
Które operacje na wskaźniku f są dozwolone i nie wygenerują błędu kompilatora?
Odpowiedź: f(x) (wywołanie wskazanej funkcji)
Odpowiedź: f==NULL (przyrównanie do wskaźnika zerowego)
Odpowiedź: (*f)(x) (wywołanie wyłuskanej funkcji)
52 W programie zdefiniowano int n; i wczytano do zmiennej n. Jak poprawnie przydzielić programowi pamięć na tablicę typu double ułożonych w n wierszach i 4 kolumnach?
Odpowiedź: double (*A)[4]; A=(double(*)[4])calloc(n, sizeof(*A));
Odpowiedź: double (*A)[4]; A=new double[n][4];
53 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 początkowy znak tego tekstu?
Odpowiedź: char s=*(char **p);
54 Po wczytaniu liczby wierszy i liczby kolumn tablicy A do zmiennych n oraz m należy dokonać alokacji pamięci tak, aby zmienna 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)
Odpowiedź: double **A=calloc(n, sizeof(*A)); for(i=0; i<n; i++) A[i]=calloc(m, sizeof(**A));
55 Jeśli P i S są wskaźnikami, to kiedy relacja P<S ma sens i co daje w wyniku?
Odpowiedź: P<S, gdy P wskazuje na element o mniejszym indeksie niż S
Odpowiedź: P i S muszą wskazywać na elementy tej samej tablicy
56 Zdefiniowano wskaźnik uniwersalny
void *P;
Które operacje na wskaźniku P są dozwolone i nie wygenerują błędu kompilatora?
Odpowiedź: (double*)P (rzutowanie na typ double)
Odpowiedź: P==NULL (przyrównanie do wskaźnika zerowego)
57 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?
Odpowiedź: n=fread(A, sizeof(*A), 500, fp);
58 Aby funkcja qsort mogła posortować teksty, należy posortować 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?
Odpowiedź: char ps=(char**)s
59 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ą?
Odpowiedź: int k= (int*)p;
60 Jeżeli klasa bazowa jest dziedziczona publicznie, to jej dane i funkcje prywatne są w klasie pochodnej:
Odpowiedź: niedostępne
61 Co realizuje podane zadania? Dopasuj nazwy do opisów
Tworzy obiekt na wzór innego obiektu tej samej klasy -> Konstruktor kopiujący
Przygotowuje obiekt do usunięcia go z pamięci -> Destruktor
Definiuje konwersję z innego typu do typu swojej klasy -> Konstruktor jednoargumentowy
Definiuje konwersję z typu swojej klasy do innego typu -> Konwerter
62 Zaznacz funkcje, które mają predefiniowaną zmienną this
Odpowiedź: Konstruktory
Odpowiedź: Niestatyczne funkcje klasy
Odpowiedź: Operatory przypisania
63 Co należy koniecznie oprogramować w destruktorze, jeśli konstruktory alokują pamięć?
Odpowiedź: Wyzerowanie wskaźników na zwolnioną pamięć
Odpowiedź: Zwolnienie zaalokowanej pamięci
64 Co deklarują w klasie ABC następujące deklaracje? Dopasuj odpowiedzi
ABC(double); -> Konwersja konstruktorowa
double() const; -> Konwerter
ABC(const ABC&); -> Konstruktor kopiujący
ABC(char *p=0); -> Konstruktor bezargumentowy
virtual ~ABC(); -> Destruktor
65 Hermetyzacja klasy polega na:
Odpowiedź: Ukryciu danych i funkcji w sekcjach: private lub protected
66 Zaznacz prawdziwe zdania o zmiennych i funkcjach statycznych
Odpowiedź: Zmienne statyczne nie wchodzą w skład obiektów
Odpowiedź: Zmienna statyczna jest wspólna wszystkim obiektom swojej klasy
67 Zaznacz funkcje, jakie należy zdefiniować w klasie, której konstruktory alokują pamięć do dyspozycji obiektów:
Odpowiedź: Konstruktor kopiujący
Odpowiedź: Destruktor
Odpowiedź: Operator przypisania
68 W klasach Bazowa i Pochodna (class Pochodna: public Bazowa {…};) funkcja Fun1 jest zwykłą funkcją, a Fun2 jest funkcją polimorficzną (virtual). Zdefiniowano
Bazowa *p;
Pochodna X;
Z której klasy funkcje będą wywoływane w instrukcjach:
p=&X;
p->Fun1(...);
p->Fun2(...);
Odpowiedź: Fun1 z klasy Bazowa
Odpowiedź: Fun2 z klasy Pochodna
69 Dziedziczenie polega na przejęciu z klasy bazowej... (wybierz co jest przejmowane)
Odpowiedź: danych wraz z ich algorytmami przetwarzania
70 Niech klasa o nazwie Pochodna ma upublicznioną klasę bazową o nazwie Bazowa. Dopasuj konwersje do opisów
Konwersja musi być zdefiniowana odpowiednim konstruktorem -> Z Bazowa do Pochodna
Standardowa konwersja wskaźników -> Z Pochodna* do Bazowa*
Konwersja standardowa ze stratą danych zdefiniowanych w klasie pochodnej -> Z Pochodna do Bazowa
Konwersja standardowa bez straty danych -> Z Pochodna& do Bazowa&
71 Zaznacz prawdziwe zdania o konstruktorach klas pochodnych
Odpowiedź: W liście inicjacyjnej należy wywołać konstruktor klasy bazowej
Odpowiedź: Funkcje wirtualne w konstruktorach zachowują się jak funkcje zwykłe
72 Co oznacza zapis =0 w deklaracji funkcji polimorficznej?
Virtual Typ Funkcja(...)=0;
Odpowiedź: Klasa z tą funkcją jest klasą abstrakcyjną
Odpowiedź: W tej klasie funkcja nie ma zdefiniowanego algorytmu
73 Jakie pola występują w obiekcie klasy pochodnej?
Odpowiedź: Podobiekt bazowy i niestatyczne dane klasy pochodnej
74 Co można przedefiniować przeciążając operatory w klasie?
(Zaznaczyć tylko to, co dotyczy wszystkich operatorów, a nie szczególnych przypadków)
Odpowiedź: Algorytm
75 Dopasuj słowo kluczowe do opisu
Rozpoczyna sekcję, której komponenty są dostępne wszędzie -> public
Rozpoczyna sekcję, której komponenty są dostępne tylko w obrębie tej klasy -> private
Rozpoczyna sekcję, której komponenty są dostępne tylko w obrębie tej klasy oraz klas pochodnych od niej -> protected