Egzamin III semestr_ZZ Szczecin 02.2002
Jakie wartości zmiennej i oraz j zostaną wyświetlone po 5-krotnym wywołaniu funkcji f(). Uzasadnij.
Void f()
{static int i=0;
int j=0;
i++; j++;
cout<<I<<” “<<j;
}
i=… j=…
Odp. (i) zadeklarowano jako zmienną static, po wyjściu z funkcji nie zostaje zniszczona wartość zmiennej, natomiast (j) zostaje zerowane za każdym razem jak wchodzi się do funkcji.
Program znajduje się w dwuch plikach: lista.cpp i funkcje.cpp
lista.cpp funkcje.cpp
int global=3; extern int global wpisz deklarację
W pliku funkcje.cpp jest wykorzystywana zmienna global, której definicja znajduje się w pliku lista.cpp. Wpisz deklarację zmiennej global w pliku funkcje.cpp
Zdefiniowano funkcję o prototypie void oblicz(int *x);
a) napisz fragment programu w którym przygotujesz dla niej parametry i wywołasz ją.
int a;
a=2;
oblicz (&a);
b) jak nazywamy przekazanie do funkcji parametru x? Odp. Przekazanie przez adres.
Zadeklarowano strukturę:
struct opis {
int x, y;
float iloczyn();
};
zdefiniuj funkcję iloczyn (), która mnoży składowe struktury i zwraca ich iloczyn.
float opis::iloczyn()
{return x*y;}
b) napisz fragment programu, w którym przygotujesz dane I wywołasz funkcję iloczyn ().
struct opis *xy=new opis;
xy x=5;
xy y=5;
float wynik=xy iloczyn ();
Jaki błąd popełniono definiując funkcję f().
int *f(int a, int b){
int lokalna;
if (a+b) lokalna=0; else lokalna=1;
return &lokalna;}
Błędem jest przekazywanie adresu do zmiennej lokalnej.
Zdefiniuj funkcję która oblicza pole kwadratu i wywołaj ją w programie
float pole (float a)
{return a*a;}
int a, *wsk;
*wsk=pole(a);
cout<<*wsk;
Zdefiniuj funkcje, która ustawia wszystkie elementy dowolnej tablicy na zero.
void zero (int *tab[], ilosc)
{int rozmiar=ilosc;
for (int i=0; i<rozmiar; i++)
tab[i]=0;}
Zakreśl punkty w których pary funkcji, uważasz za przeciążone.
a) float fun(int*); int fun(int, int*); b) int fun(float); float fun(float)
c) float fun (int); float fun (int, int*); d) int fun(int &; int &); int fun (int int);10.
int fun (int bok) {bok=bok+10; return bok}
a) Jak nazywamy sposób przekazania do funkcji parametru bok? Przez wartość.
b) Fragment programu
int w, a=50;
w=fun (a); wywołaj funkcję fun(…) z parametrem aktualnym a. Przypisz wartość funkcji zmiennej w.
c) cout<<a<<” „<<w
Jakie wartości zostały wyświetlone: a=50 w=60 Dopisz uzasadnienie. „a” się nie zmienia bo przekazujemy do funkcji tylko wartość.
void f(int &ref) {ref=ref+10;}
Fragment programu:
a) int r=5;
f (r); wywołaj funkcję f(>) z parametrem aktualnym r.
b) cout<<r;
Jaka wartość zostanie wyświetlona: r=15 Uzasadnij. Ponieważ nastąpiło tu przekazanie przez referencje czyli pracowaliśmy na prawdziwej wartości i ona została zmieniona.
c) Jak nazywamy sposób przekazania do funkcji parametru ref ? Przekazanie przez referencje.
Program znajduje się w dwuch plikach oblicz.cpp i fun.cpp. Oblicz.cpp jest plikiem głównym,, w fun.cpp są zdefinowane funkcje, które są wykorzystywane w pliku głównym. Opisz jak wytworzyć plik oblicz.exe.
W pliku oblicz.cpp należy dodać linie #include „scieżka\fun.cpp”
Fragment programu. Podaj jakie zmienne zostaną wyświetlone.
int z=2;
void main(){
float z=4;
cout<<z; z=4
{int z=3; cout<<z;} z=3
cout<<z;} z=4
int f() {int z=90; cout<<z;} z=90
Zdefiniuj funkcję o nagłówku float f(float x, int *y), która ma powiększyć wartości parametrów o 1 i dodać je do siebie po powiększeniu oraz zwróci otrzymaną wartość.
float f(float x, int *y)
{x++;
y=y+1;
return x+(*y);}
dokonaj odpowiednich deklaracji I nadaj wartości zmiennym I wywołaj funkcję f()
float a=3, wynik;
int b=4;
wynik=f(a,&b);
po wywołaniu funkcji wyświetlono wartości. Jakie wartości zostały wyświetlone.
1 parametr=3 2 parametr=5
Opisz parametry funkcji main().
void main (int argc, char *argv[])
argc - zostanie mu przypisana liczba parametrów znajdujących się w wierszu komendy plus jeden
argv (argument vector) zawiera:
argv[0] - nazwa programu wraz z pełną ścieżką wywołania
wskaźniki do łańcuchów zawierających kolejne parametry wywołania.