test cpp2.pdf

(100 KB) Pobierz
428793872 UNPDF
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)
428793872.002.png
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''
428793872.003.png
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);
428793872.004.png
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
428793872.005.png
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
428793872.001.png
Zgłoś jeśli naruszono regulamin