Warszawa dnia 2 stycznia 2011 r. Przedmioty: Wstęp do programowania Wstęp do informatyki Zbiór zadań z programowania w języku C do samodzielnego wykonania Prowadzący; dr inż. Stanisław Wszelak Ćwiczenie 10. W jaki sposób wyświetlisz wartość dwóch zmiennych: imie, nazwisko w takiej postaci: Są 3 imiona i 2 0 n a zw i s k. Ćwiczenie 11. Napisz rezultat wyświetlenia zmiennych w wierszu 12. Jak się domyślasz, wartość zmiennej e zostanie wydrukowana niepoprawnie (7.000000). Zmodernizuj program tak aby dzielenie w wierszu 10 wykonywało się poprawnie. 1 #include <studio.h> 2 #define a 10 3 main() 4 5 nt a,b,c; 6 float d,e,f; 7 b=15; 8 c=a+b; 9 a=a+1; 10 e=b/3; 11 d=e*2; 12 f=pow(e,3.5); 13 printf ("%d %d %d %f %f %f", a,b, c, d, e, f); 14 return0; 15 Które z następujących wyrazów są słowami kluczowymi: main, int, printf, float, return, define Ćwiczenie 12. Napisz program przeliczający wartość towaru w trzech walutach: złoty, euro, dolar. Zmienne cena i ilość będące składnikami wartości i są deklarowane z klawiatury. Kurs euro zadeklarować jako stałą wartość poprzez słowo kluczowe const a kurs dolara poprzez dyrektywę #define. Ćwiczenie 13. Wydrukowana wartość zmiennej a w programie jest błędna, zamiast liczby 10 wydrukowana została inna wartość. Uzasadnij powód nieprawidłowego działania programu. Wnioskując określ górną granicę wartości zmiennoprzecinkowej. Jak rozumiesz taki zapis: 1.22E+10. float a,b; b=3.14e8+10; a=b-3.14e8; printf("%f",a); getch(); Ćwiczenie 14. Napisać program obliczający temperaturę w stopniach Celsjusza, dana jest temperatura w stopniach F wiedząc, że przelicznik jest C=(5/9)*(F-32). Temperatura pobierana jest z klawiatury. Wydruk skierować na środek ekranu. 1
Ćwiczenie 15. Napisz program liczący kwotę netto z kwoty brutto i stawki podatkowej. Brutto i stawkę podatkową należy wprowadzać z klawiatury. Procentową stawkę podatkową należy wprowadzać jako liczbę z przedziału od 0 do 100 (np. 23 to 23%). Ograniczyć działanie na liczbach ujemnych poprzez instrukcję if (). Ćwiczenie 16. Napisz program, który wykona działania na dwóch liczbach integer zadeklarowanych z klawiatury. Jeśli pierwsza jest większa od drugiej dokonuje mnożenia liczb, jeśli odwrotnie dzielenia, jeśli równe zamienia na przeciwny znak. Ćwiczenie 17. Napisz program, który pobiera Twoje imię i nazwisko po czym wyświetla w pierwszym wierszu imię i nazwisko, w drugim liczbę z imienia i nazwiska, początkowo liczby znajdują się pod ostatnią literą, następnie liczby były zrównane z pierwszymi literami imienia i nazwiska. Ćwiczenie 18. Napisz program liczący wiek użytkownika, podając roku urodzenia (1991). Program korzysta z daty systemowej Przykład: Podaj rok urodzenia: 1981 Masz 29 lat Ćwiczenie 19. Napisz program wykonujący potęgowanie deklarując podstawę i wykładnik z klawiatury. Operację potęgowania program ma wykonywać tylko dla wykładnika całkowitego dodatniego. Ćwiczenie 20. Napisz program, który liczbę typu integer zamieni na kody: NKB, U1, U2, następnie wydrukuje wartość binarną (0,1) zadeklarowanej liczby. Ćwiczenie 21. Co wykonuje poniższy program, jaką wartość zwróci wyrażenie logiczne w 13 wierszu programu. Przypisz zmiennej x wartość 6, jaka zostanie teraz zwrócona wartość w wierszu 13. Uzasadnij drukowanie wyniku w wierszu 13. 1 2 #include <stdlib.h> 3 4 int x, s, p; 5 x = 10; 6 printf(" Program sprawdza.\n"); 7 printf("zmienna ma wartosc: x =%d\n", x); 8 printf("zmienna przez 2 i przez 3\n"); 9 s=x%2; 10 printf(". przez 2: %d\n", s); 11 p=x%3; 12 printf(".. przez 3: %d\n", p); 13 printf(".. : %d\n", (s==0)&&(p==0)); //13 wiersz 14 system("pause"); 15 Ćwiczenie 22. Napisz program, który liczy i drukuje resztę z dzielenia dwóch liczb. W przypadku braku reszty drukuje komunikat: Bez reszty, natomiast jeśli jest reszta komunikat: Reszta. Dzielną i dzielnik deklaruj z klawiatury. Ćwiczenie 23. Napisz program, w którym trzem zmiennym przypisywane są wartości typu float. Wartości wprowadzane są z klawiatury. Wykorzystując instrukcję warunkową drukuj jeden z trzech komunikatów: Liczby w szeregu są różne i rosną Liczby w szeregu są różne i maleją Liczby są równe Ćwiczenie 24. Wiadomo, że przesunięcie w lewo i w prawo w kodzie liczby powoduje jej zmianę wartości. Weźmy dla przykładu liczbę +5 kod: 0 0 0 0 0 1 0 1 Przesuńmy o dwa miejsca w lewo, uzyskamy 0 0 0 1 0 1 0 0, czyli 20 Przesuńmy o dwa miejsca w prawo, uzyskamy 0 0 0 0 0 0 0 1, czyli 1 Napisz program, w którym deklarujesz liczbę dziesiętną typu integer oraz ilość miejsc przesunięcia 2
w kodzie binarnym, po czym program wyznacza liczbę dziesiętna po przesunięciu i drukuje na ekranie jej wartość. Ćwiczenie 25. Napisz program, który liczy wartość bezwzględną z liczb rzeczywistych. Ćwiczenie 26. Napisz program, który liczy pierwiastki równania kwadratowego: ax 2 +bx+c. Ćwiczenie 27. Napisz program, który wykona operacje matematyczne: dodawanie i mnożenie na trzech zmiennych float, wartości dla tych zmiennych są pobierane z klawiatury. Wartość iloczynu i sumy obliczy w oparciu o wskaźniki do zmiennych. Ćwiczenie 28. Napisz program, który dla zmiennych int x=10, y=20, z=30 wydrukuje ich wartości lewo i prawostronne. Ćwiczenie 29. Dane są zmienne: wskazywana x oraz wskazująca px. Jaka jest wartość zmiennej x i y po wykonaniu przypisania: int x; *px; x = 7; px = &x; *px = 11; y=*px; Ćwiczenie 30. Wieża Eiffla ma wysokość 324 m, pokaż wysokość wieży poprzez wskazanie na nią poprzez zdefiniowany wskaźnik o nazwie kreml. Ćwiczenie 31. Napisz program, w którym za pomocą wskaźników wydrukujesz swoje imię, nazwisko, numer telefonu. Ćwiczenie 32. #define tekst "To jest Warszawa\n" int i, j, i_plus, plus_j, x; i=2, j=2; printf("%s %s", tekst, tekst); i_plus=i++; printf("%d %d \n", i, i_plus); plus_j=++j; printf("%d %d \n", j, plus_j); x=2*++i; printf("%d %d\n", x, i); x=2*j++; printf("%d %d\n", x, j); Ćwiczenie 33. #define tekst "To jest Warszawa\n" int k ; k=0 ; printf("%d",k++); printf("%d",++k); printf("%d",k--); printf("%d",--k); printf("%d",k); 3
Ćwiczenie 34. #define granica 5 int n=0; while(n++<granica); printf("%d",++k); printf("%3d UKSW",n); Ćwiczenie 35. #define granica 5 int n=1; while(n<=granica); printf("%3d UKSW",n); n++; Ćwiczenie 36. char ch1, ch2; int roznica; float liczba; ch1='a'; ch2='b'; roznica = ch2-ch1; liczba=roznica; printf("%d %d: %d %.0f\n",ch1,ch2,roznica,liczba); Ćwiczenie 37. Jaki jest efekt wykonania programu? char ch='c'; while(ch<='k') printf("%c",ch); ch++; Ćwiczenie 38. Stosując pętlę do-while napisz program przeliczający mile na kilometry, zaczynając od 0 do 100 ze skokiem co 5 mil. Wydruk przedstaw w trzech kolumnach, pierwszej iterację, w drugiej mile, w trzeciej kilometry. Przyjmij przelicznik: 1 mila=1609,3 m. 4
Ćwiczenie 39. Wykorzystaj pętlę while w programie, który wykona i wydrukuje: - sumę pierwszych pięciu liczb całkowitych 1,3,5,7,9 - iloczyn liczb z przedziału 10 do 15 przez liczbę 2.5 skok co 0.5. Ćwiczenie 40. Użyj pętli while do wyliczenia silni z n elementów. Ilość elementów deklarowana jest z klawiatury. Użytkownik ma możliwość podawania ilości elementów, dopóki nie wprowadzi wartości ujemnej. Ćwiczenie 41. Napisz program z pętlą while, który prosi o podanie dwóch liczb całkowitych, a następnie wyświetla liczby od większej do mniejszej ze skokiem co 1.5. Ćwiczenie 42. Napisz program z pętlą do-while, który prosi użytkownika o podanie liczby dni, a następnie zamienia je na tygodnie i dni. Dla przykładu 20 dni to: 2 tygodnie, 6 dni. Ćwiczenie 43. Napisz program z pętlą do-while, który wydrukuje kod ASCI od znaku 32 do 128. W pierwszej kolumnie znak, w drugiej jego wartość dziesiętną, w trzeciej szesnastkową w czwartej binarną. Ćwiczenie 44. Napisz program, który w pętli while pobiera liczby do sumowania. Koniec pobierania powoduje wciśnięcie klawisza spacja. Następnie program sumuje pobrane liczby i drukuje wynik. Przykładowy wynik: Podaj liczbę do zsumowanie. Wciśnij SPACJE aby zakończyć 3 Podaj liczbę do zsumowanie. Wciśnij SPACJE aby zakończyć 2 Podaj liczbę do zsumowanie. Wciśnij SPACJE aby zakończyć -2 Suma wynosi: 3 Ćwiczenie 45. Użyj pętli for do wyliczenia silni z n elementów. Ilość elementów deklarowana jest z klawiatury. Użytkownik ma możliwość podawania ilości elementów, dopóki nie wprowadzi wartości ujemnej. Ćwiczenie 46. Użyj pętli for do wydrukowania danych wyjściowych: 1 25 2 30 3 35 4 40 5 45 Ćwiczenie 47. W pętli for wyrażenie sterujące jest puste. Przeanalizuj program, wskaż instrukcję, która umożliwia zakończenie, określ rezultat wykonanego programu: #include <studio.h> main() int n, wynik; wynik =2; for( n= 2;wynik <= 24; ) wynik = wynik*n; printf( wynik =%d:\n, wynik); Uzasadnij, dlaczego wynik jest większy od 24 pomimo, że w pętli występuje ograniczenie Ćwiczenie 48. Napisz program z pętlą for, który raz wyprowadzi tekst Podaj liczby, następnie pobiera liczby dopóki nie zostanie wciśnięty klawisz q. 5
Ćwiczenie 49. Napisz program, który z zadeklarowanych n składników obliczy sumę i średnia arytmetyczną. Wykorzystaj pętlę for. Zadeklaruj możliwość wyboru działania deklarując wybór instrukcją if-elese na początku programu: 1 Suma, 2 Średnia, 3 Koniec. Ćwiczenie 50. Napisać program, który sumuje wartości bezwzględne liczb wczytywanych z klawiatury, n jest liczbą wczytaną z klawiatury przed podaniem tych liczb. Ćwiczenie 51. Wykorzystaj pętle zagnieżdżone do wydrukowania poniższej składni: A B C D E F G H I J K L A B C D E F G H I J K A B C D E F G H I J A B C D E F G H I A B C D E F G H A B C D E F G A B C D E F A B C D E A B C D A B C A B A Ćwiczenie 52. Napisać program obliczający sumę(od i=1 do n) z liczb i podniesionych do potęgi m. Wybór m: 1 - m liczba całkowita dodatnia, 2 m liczba całkowita ujemna. Ćwiczenie 53. Napisz program znajdujący minimalną i maksymalną liczbę z n liczb wprowadzonych z klawiatury. W programie nie wykorzystuj tablic. Ćwiczenie 54. Stosując pętle zagnieżdżone napisz program który wydrukuje tabliczkę mnożenia 10 x 15. Ćwiczenie 55. Zadeklaruj dwie tablice jednowymiarowe na ciągi znakowe. W pierwszej Twoje zadeklaruj imię, w drugiej nazwisko. Jeden element tablicy jeden znak. Staraj się aby rozmiar tablicy był zgodny z zadeklarowanym łańcuchem znakowym, przewidując w nich dodatkowy jeden element zakończenia łańcucha \0. Zastosuj pętlę for do wydrukowania swojego imienia i nazwiska litera po literze w jednym wierszu. W wyrażeniu warunkowym pętli uwzględnij ograniczenie drukowania znaków do momentu napotkania na wartownika ( \0 ), po tym znaku przerwij pętlę i drukowanie. Następnie wydrukuj imię i nazwisko jako łańcuch znakowy. Ćwiczenie 56. Napisz program: Rozmiar tablicy deklarowany z konsoli, Elementami są liczby wprowadzane z konsoli (float). Program wykonuje: sumuje elementy, liczy średnią arytmetyczną, określa liczbę maksymalna i minimalną z zbioru liczb. Zmodernizuj program, aby szukał dodatkowo liczb powtarzających się wysyłając komunikaty: Liczby nie powtarzają i Jest para. Ćwiczenie 57. Napisz program tabliczka mnożenia 15 x 10 z wykorzystaniem tablic jednowymiarowych. Ćwiczenie 58. Napisz program deklarując w dwóch tablicach ciągi łańcuchowe: UKSW i Warszawa. Zdefiniuj wskaźniki do tablic i przypisz wskaźnikom zawartości tych tablic. Wydrukuj poprzez wskaźniki łańcuchy znakowe, oraz pierwszy i ostatni element łańcucha. Ćwiczenie 59. Napisz program i wykorzystaj funkcję gets() do wprowadzenia łańcucha tekstowego informatyka do tablicy jednowymiarowej. Funkcja ta niech przekaże pobraną wartość do tablicy 12 elementowej. Następnie przy pomocy pętli małe litery niech zostaną zamienione na duże, następnie wydrukuj tekst. 6
Wskazówka: małe litery zawarte są w kodzie od 97 do 122 ASCII. Zadanie 60 Napisz program, który posortuje metodą bąbelkową: a) rosnąco, b) malejąco, tablicę 10 elementową z elementami, którym przypisano stałe wartości typu float. Zadanie 61 Napisz program, który posortuje tablicę z zadania 60 metodą prymitywną. Zadanie 62 Napisz program, który wczyta dowolna ilość elementów do tablicy jednowymiarowe, następnie posortuje tablicę malejąco metodą bąbelkową, jeśli liczby się powtarzają daje dodatkowy komunikat jest para. Zadanie 63 Napisz program, który w zdefiniowanej funkcji liczy moduł liczby rzeczywistej, wartość niech zwraca do zdefiniowane funkcji. Rezultat działania programu uzyskać poprzez wywołanie funkcji w funkcji main(). Zadanie 64 Napisz program który w zdefiniowanej funkcji dla warunku a 0 i m > 0 (m całkowite): Liczbę rzeczywistą (a) podniesie do potęgi m, wynik zwróci funkcji, rezultat wydrukuje poprzez wywołanie funkcji w funkcji main(). Dla pozostałych a i m druga zdefiniowana funkcja, nie zwraca żadnych wartości, tylko niech przekaże komunikat Popraw wykładnik poprzez wywołanie funkcji w funkcji main(). Zadanie 65 Napisz program, z podprogramami (funkcjami) który pobierze dowolną ilość elementów do tablicy jednowymiarowej. Wyszuka wartość maksymalną, minimalną ze zbioru. Posortuje elementy rosnąco w zbiorze metodą prymitywną. Posumuje wszystkie elementy. Wskazówka, pobieranie elementów w funkcji main() z dynamicznym przydziałem pamięci przy współudziale funkcji calloc(). Maksimum, minimum, suma, porządkowanie w zdefiniowanych funkcjach (cztery). Funkcje posiadają prototypy. Wywołanie funkcji w funkcji main(). Zadanie 66 Napisać program liczący: n n! k = k!*( n k)! Niech n! liczona będzie w zdefiniowanej funkcji. W funkcji main() pobrane z klawiatury zmienne n i k. Warunki: n >= 0, k >= 0, k n i n - k >0. Zadanie 67 Napisz program w oparciu o funkcje liczący pierwiastek liczby r w oparciu o wzór (zaczerpnięty z metody Newtona): x(1)=1 x(n)=[x(n-1)*x(n-1)+r]/[2*x(n-1)] Gdy n dąży do nieskończoności x(n) dąży do pierwiastka z liczby r. Zadanie 68 Napisać program z funkcją o nazwie cels, która oblicza dobowe temperatury w stopniach C, dla danej temperatury w stopniach F (C=(5/9)(F-32)). W funkcji main() niech będą wczytywane dobowe temperatury w stopniach F dla wybranego miesiąca. Należy również deklarować Ilość dni w miesiącu przed wczytywaniem temperatur. Wyprowadzić na ekran: - zestaw temperatur w trzech kolumnach czyli dzień miesiąca, temperatura w F, temperatura w C - maksymalną temperaturę dobową w stopniach C i w stopniach F - minimalną temperaturę dobową w stopniach C i w stopniach F - numery najcieplejszego dnia i najzimniejszego dnia w miesiącu - średnią temperaturę miesiąca w stopniach C i w stopniach F 7