Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny? 5. Wymień rozszerzenia plików C++ z kodem źródłowym? Pierwsze programy w C++ 6. Jak nazywają się moduły, z których zbudowane są programy C++? 7. Co oznacza poniższa dyrektywa preprocesora? #include <iostream> 8. Co robi poniższa instrukcja? using namespace std; 9. Jakich instrukcji trzeba użyć, aby napisać "Witaj Stefan" i przejść do nowego wiersza? 10. Za pomocą jakiej instrukcji można stworzyć całkowitoliczbową zmienną sery? 11. Jaka zmienna spowoduje przypisanie zmiennej sery wartość 32? 12. Jaka instrukcja spowoduje odczytanie z klawiatury wartości zmiennej sery? 13. Jakimi instrukcjami możemy możemy wypisać zdanie "Mam X odmian sera", gdzie X zastępowane jest przez aktualną wartość zmiennej sery? 14. Co poniższe prototypy mówią o reprezentowanych funkcjach? int froop(double t) void rattle(int n); int prune(void); 15. Kiedy w definicji funkcji trzeba użyć słowa kluczowego return;?
Dane 16. Dlaczego C++ ma więcej niż jeden typ danych całkowitych? 17. Zadeklaruj zmienne pasujące do opisu: a) Liczba całkowita typu short o wartości 80 b)liczba całkowita typu unsigned int o wartości 42110 c)liczba całkowita o wartości 3 000 000 000 18. Jaka jest ochrona C++ przed przekroczeniem limitu typu całkowitego? 19. Czym różnią się 33L i 33 20. Weźmy pod uwagę następujące dwie instrukcje: char grade = 65; char grafe = 'A'; Czy są one sobie równoważne? 21. Jak można użyc C++ do sprawdzania, który znak odpowiada kodowi 88? Podaj przynajmniej dwa różne sposoby. 22. Przypisanie wartości long do zmiennej typu float może powodować błąd zaokrąglenia. A jak to wygląda w przypadku konwersji typu long na double? 23. Wylicz poniższe wyrażenia z uwzględnienie zasad obowiązujących w C++: a) 8*9+2 b)6*3/4 c) 3/4*6 d)6.0*3/4 e) 15%4 24. Załóżmy, że x1 i x2 to dwie zmienne typu double, które chcemy dodać jako liczby całkowite i przypisać do zmiennej całkowitoliczbowej. Stwórz odpowiednią konstrukcję C++.
Typy złożone 25. Jak zadeklarować następujące zmienne: a. Tablicę aktorzy zawierającą 30 znaków char b. Tablcę betside mającą 100 liczb typu short c. Tablicę chuck mającą 13 liczb typu short d. Tablicę dipsea mającą 64 liczby typu long double 26. Zadeklaruj tablicę zawierającą pięć liczb int i zainicjalizuj ją pięcioma pierwszymi nieparzystymi liczbami dodatnimi 27. Napisz instrukcję przypisującą zmiennej even sumę pierwszego i ostatniego elementu tablicy z poprzedniego pytania. 28. Napisz instrukcję pokazującą wartość drugiego elementu float tablicy ideas. 29. Zadeklaruj tablicę typu char oraz zainicjalizuj ją słowem cheeseburger. 30. Stwórz deklarację struktury opisującej rybę. Struktura ta ma zawierać rodzaj, wagę w całych gramach oraz długość w ułamkach centymetrów. 31. Zadeklaruj zmienną typu opisanego w pytaniu 6 i zainicjalizuj ją 32. Korzystając ze słowa kluczowego enum, zdefiniuj typ Odpowiedz mający możliwe wartości Tak, Nie, Chyba. Wartościom tym mają odpowiadać liczby 1, 0, 2. 33. Założmy, że ted to zmienna typu double. Zadeklaruj wskaźnik wskazujący zmienną ted i użyj go do pobrania wartości tej zmiennej. 34. Załóżmy, że treacle to tablica 10 liczb float. Zadeklaruj wskaźnik wskazujący pierwszy element treacle i użyj go do wyświetlania pierwszego i ostatniego elementu tablicy 35. Napisz kod proszący użytkownika o podanie dodatniej liczby całkowitej, a następnie tworzący tablicę dynamiczną mającą wskazaną liczbę wartości typu int 36. Czy poniższy kod jest prawidłowy? Jeśli tak, to co pokaże? cout << (int *) Dom wesołych bajtów ;
37. Napisz fragment kodu dynamicznie alokujący strukturę typu opisanego w pytaniu 30, i odczytujący wartość pola określającego rodzaj ryby. 38. W niżej zaprezentowanym programie pokazano problem z odczytem danych liczbowych z wejścia odczytywanego wierszami. int main() { using namespace std; cout << "W ktorym roku zbudowano twoj dom?\n"; int year; cin >> year; cout << "Przy jakiej ulicy mieszkasz?\n"; char address[80]; cin.getline(address, 80); cout << "Rok budowy: " << year << endl; cout << "Adres: " << address << endl; cout << "Gotowe!\n"; return 0; } Uruchomieni tego programu da następujący wynik: W ktorym roku zbudowano twoj dom? 2013 Przy jakiej ulicy mieszkasz? Rok budowy: 2013 Adres: Gotowe! Jak zastąpienie w tym programie wiersza: cin.getline(address, 80); wierszem: cin >> address; wpłynęłoby na działanie programu?
Pętle i wyrażenia relacyjne 39. Jaka jest różnica między pętlami sprawdzającymi warunek pętli na początku i na końcu? Jakiego typu są poszczególne pętle języka C++? 40. Narysuj schemat blokowy pętli for i napisz co zawiera deklaracja pętli for. 41. Narysuj schemat blokowy pętli while i napisz co zawiera deklaracja pętli while. 42. Narysuj schemat blokowy pętli do while i napisz co zawiera deklaracja pętli do while. 43. Co pokaże na ekranie poniższy fragment kodu, jeśli będzie częścią poprawnego programu? int i; for ( i = 0; i <5; i++) cout << i; cout << endl; 44. Co pokaże poniższy fragment kodu, jeśli będzie częścią poprawnego programu? int j; for (j = 0; j < 11; j += 3) cout << j; cout << endl << j << endl; 45. Co pokaże poniższy fragment kodu, jeśli będzie częścią poprawnego programu? int j = 5; while (++j < 9) cout << j++ << endl;
46. Co pokaże poniższy fragment kodu, jeśli będzie częścią poprawnego programu? int k = 8; do cout << " k = " << k << endl; while (k++ < 5) 47. Napisz pętlę for pokazującą wartość 1,2,4,8,16,32,64 przez zmienne mnożnika zmiennej o 2 w każdym cyklu 48. Jak sprawić, aby treść pętli mogła zawierać więcej niż jedną instrukcję? 11. Czy poniższa instrukcja jest prawidłowa? Jeśli nie, dlaczego? Jeśli tak, co robi? int x = (1,024); A takie instrukcje? int y; y = 1,024; 49. Czym różnią się cin>>ch, cin.get(ch) i ch=cin.get() w sposobie obsługi danych wejściowych?
Instrukcje warunkowe i operatory logiczne 50. Przyjrzyjmy się następującym dwóm fragmentom kodu zliczającym spacje i znaki nowego wiersza: //Wersja 1. while (cin.get(char) ) {if (ch == ' ') spacje++; if (ch == '\n') } znakinowegowiersza++; //koniec, jeśli EOF //Wersja 2. while (cin.get(char) ) //koniec, jeśli EOF {if (ch == ' ') spacje++; else if (ch == '\n') znakinowegowiersza++; } Czy drugi fragment kodu ma jakieś przewagi nad pierwszym? Jeśli tak, to jakie?