PYTANIA EGZEMINACYJNE Z C++
1 Dla jakich wartości zmiennej x pętla się wykonuje
while ( ! (x - 5 ) && ( x >= 5 ))
Tylko dla x = 5.
2 Podaj wartość zmiennej k . Odpowiedź uzasadnij.
int k, i = 5;
k = i + 0x10;
k = 5;
Wartośc k = 5, ponieważ w ostatnim wierszu nadano zmiennej k warość 5 , wcześniejsza wartość została usunięta.
3 Zadeklarowano strukturę:
struct osoba {
int data;
char nazwisko[50];
}
Napisz fragment programu w którym zadeklarujesz zmienną typu osoba i nadasz wartość jej składowym.
#include <iostream.h>
#include <conio.h>
main()
{
clrscr();
struct osoba{
int data;
char nazwisko[50];
}osoba = {28,"Janek Fiutek"}; - nadanie wartości składowym struktury.
cout<<osoba.data<<endl;
cout<<osoba.nazwisko;
getch();
return 0;
}
Można też tak:
#include <iostream.h>
#include <conio.h>
main()
{
clrscr();
struct osoba{
int data;
char nazwisko[50];
};
struct osoba osoba = {34,"Walencja Niedopchęcja"}; - tu nadanie wartości
cout<<osoba.data<<endl;
cout<<osoba.nazwisko;
getch();
return 0;
}
4 Napisz funkcje, która oblicza 3 potęgę argumentu, wywołaj ją w programie.
#include <iostream.h>
#include <conio.h>
float fun(float arg) // definicja i deklaracja funkcji jednocześnie
{
float wynik;
wynik = arg * arg * arg;
return wynik;
}
main()
{
float a, b;
clrscr();
cin>>a;
b = fun(a); // wywołanie funkcji z argumentem a
cout<<b;
getch();
return 0;
}
5 char Nazzwa[ ] = ”12345678” . Jaki jest rozmiar tablicy nazwa. Uzasadnij odp.
Rozmiar tablicy wynosi 9 , osiem znaków plus NULL.
6 Jakie wartości może zwrócić zmienna wynik. Odpowiedź uzasadnij.
int wynik = ( n > p ) && (c < 2 )
Zmienna wynik zwróci zero albo jeden. Jeżeli n będzie większe od p i c będzie mniejsze od dwóch wtedy warunek jest prawdą czyli 1 w przeciwnym wypadku warunek jest fałszywy więc 0 .
7 Zakreśl pary funkcji, które są funkcjami przeciążonymi ( przeładowanymi ).
void screen( int f ); void scren(int);
void screen( int ); float screen( int );
void screen( int ); float screen( int, int*);
float screen( int ); float screen( int, int* );
Dwie ostatnie.
void F( int wart, int &ref) { wart++; ref++} Jak nazywamy sposób przekazywania do funkcji parametru wart i ref .
Fragment programu:
int w = 5; float r = 7; f( w,r) cout<<w<<” ”<<r;
Jakie wartości zostały wyświetlone?
wart - przez wartość
ref - przez referencje
w = 5
r = 7
W tej funkcji jest błąd jako drugi argument jest int a w programie do funkcji oddany jest float.
Wyjaśnij różnicę w zapisach *(p+1) oraz *p+1 przy deklaracji int *p
Pierwszy zapis przesuwa adres o jeden a drugi zapis dodaje do *p wartość jeden.
float *f zmienna f została zadeklarowana jako:
zmienna typu rzeczywistego
wskaźnik do zmiennej typu rzeczywistego
wskaźnik do funkcji zwracającej zmienną typu rzeczywistego.
Odpowiedź b.
Opisz poniższe deklaracje:
char wsk[5] - tablica pięciu elementów typu char.
int ( *wsk)[5] - wskaźnik tablicy pięciu liczb typu int.
char *wsk[5] - tablica pięciu wskaźników znaku.
float *wsk() - deklaracja funkcji bez parametru zwracającej wskaźnik do obiektu typu float.
char wsk(char)- funkcja pobierająca argument typu char zwracająca wynik typu char.
Jaki błąd popełnionow definicji funkcji f()
Int *f( int a, int b ) { int lokalna = a>b; return & lokalna }
Błędem jest przekazywanie adresu do zmiennej lokalnej.
Otwieramy plik binarny do pisania FILE * f = fopen (”out.bin”,”wb”)
Opisz działanie powyższej instrukcji gdy plik: istnieje, nie istnieje.
Jeżeli plik nie istnieje to zostanie utworzony ( otwiera pusty zbiór do zapisu ) z plikiem zostanie związany strumień, jeżeli plik istnieje zostanie zapisany nową wartością (skasuje jego zawartość)
Program znajduje się w dwóch plikach Lista.cpp i funkcje.cpp
Lista.cpp funkcje.cpp
int global = 3; extern int global wpisz deklaracje
W pliku funkcje.cpp jest wykorzystywana zmienna global, której definicja znajduje się w pliku Lista.cpp wpisz deklaracje zmiennej w pliku funkcje.cpp .
Dokonaj deklaracji wskaźnika i wykorzystaj go do zarezerwowania pamięci dla pięciu znaków, ustal wartości tych znaków .
#include <iostream.h>
#include <conio.h>
main()
{
char *wsk;
wsk = new char [5];
*wsk = 'a';
*(wsk+1)='b';
*(wsk+2)='c';
*(wsk+3)='d';
*(wsk+4)='e';
getch();
return 0;
}
Określ adresy zmiennych:
int i, adres zmiennej i; - adres obszaru pamięci przeznaczonego do przechowania zmiennej i.
float tab[12], adres zmiennej tab; - tab jest adresem pierwszego elementu tablicy.
char *ptr, adres zmiennej ptr - zmienna ptr przechowuje adres zmiennej typu char.
!7 Zdefiniuj funkcję, która będzie przechowywać ilość swych wywołań.
int& fun()
{
static int licznik = 0;
licznik++;
return(licznik);
}
18 void fun(int *wsk) { *bok = *bok +10 } -definicja tej funkcji wydaje się być błędna ponieważ w ciele funkcji nie jest zdefiniowana zmienna bok, jedyne rozsądne wyjście to poprawić to i wpisać jako argument wskaźnik do bok zamiast do wsk.
void fun(int *bok) {*bok= *bok + 10;}
Należy wywołać funkcję fun(...) z parametrem aktualnym a i podać wartość a.
#include <iostream.h>
#include <conio.h>
void fun(int *bok) {*bok= *bok + 10;}
main()
{
int a = 50;
fun(&a);
cout<<a<<endl;
getch();
return 0;
}
Po wykonaniu programu a = 60.
Jeżeli w definicji funkcji nie byłyby to wskaźniki wywołanie wyglądałoby tak: fun(a) a wartość a = 50;
5