Rozwiązania - lista 1.doc

(76 KB) Pobierz
/* Przykład 1

/*   Zadanie1  -  pierwszy program */

              #include  <stdio.h>

              main()

              {

    printf("Czyż nie jestem wspaniały? Napisałem swój pierwszy

program!!! \n");

      return 0;

}

 

/* Zadanie.2 */

/* Wypisuje na ekranie dane osobowe */

#include <stdio.h>              ,

main()

{

printf("Józek \nMarchewa \nWilcze Dołki 21");

printf("\n45-680 \nKurzy Zdrój \n");

return 0;

}

 

/*   Zadanie.3  */

              /* Wypisuje na ekranie 2 wyrazy oddzielone */

              /* od siebie dwoma znakami tabulatora */

              #include <stdio.h>

              main()

              (

      printf("Kocham \t\tprogramowanie\n");

      return 0;

              }

Wykorzystujemy tutaj kolejną sekwencję wyjściową \t. Wstawia ona odstęp wielkości jednego tabulatora.

 

/*   Zadanie 4 */

/* Wypisuje na ekranie cytat */

#include <stdio.h>

main()

{

     printf("\"Litwo, Ojczyzno moja\"\n");

      return 0;

}

Sekwencja wyjściowa \" wyświetla na ekranie znak cudzysłowu.

Pozostałe znaki tego typu to: \a - wywołuje dźwięk;

\b - powoduje wymazanie pojedynczego znaku (backspace); \\ -wstawiaznak \; \? - wstawia znak zapytania; \ ' - wstawia znak '; \" - wstawia znak cudzysłowiu.

 

              /* Zadanie 5 */

              /* Wypisuje na ekranie tekst oraz wywołuje dźwięk */

              #include <stdio.h>

              main()

              {

              printf( "Ale wnerwiający dzwiek!!! \a\a\a\a\n");

              return 0;

              }

 

Zadanie 6

double procent;

unsigned int Mojwiek;

unsigned long odległość;

int temperatura;

float cena_nawozu;

W przykładzie A użyłem typu double, ponieważ wartość będzie tak minimalna, że mu­simy podać ją z dokładnością przynajmniej 8 miejsc po przecinku (np. 0,00000001%). Dla zmiennej Mojwiek przypisujemy wartość typu unsigned int - wiek jest zawsze dodatni. W przykładzie C odległość w centymetrach od domu do szkoły będzie dosyć duża (załóżmy, że wynosi ona 1 km; 1 km=1000 m= 100000 cm; wartość wykracza poza granicę typu int), dlatego też zalecam użycie typu unsigned long (dodatkowo, od­ległość jest zawsze dodatnia). Temperatura może przyjmować wartości zarówno dodat­nie, jak i ujemne, dlatego też odpowiedni będzie w tym przypadku typ int. Natomiast cena nawozu musi być podana z dokładnością do 2 miejsc po przecinku (dobry rolnik zawsze prowadzi dokładne rozliczenia, np. 12,35 zł

 

/* Zadanie.7 */

/* Przypisuje zmiennym wartości oraz je wyświetla */

#include <stdio.h>

double procent;

unsigned int MojWiek;

unsigned long odległość;

int temperatura;

float cena_nawozu;

main()

{

   procent = 0.000001;

    MojWiek = 20;

   odległość = 100000;

    temperatura = -5;

    cena_nawozu = 12.35;

    printf("Nazywam sie Zdzichu, mam %u",MojWiek);

    printf(" lat, chodzę do szkoły oddalonej ");

   printf("od mojego domu o %lu cm", odległość);

    printf("\nDziewczyny z mojej szkoły maja ");

   printf("temperaturę ciała rzędu %d °C, ",

              temperatura);

    printf("dlatego tez wydaje na nie zaledwie ");

    printf("%f procent moich dochodów ", procent);

    printf("z pracy dodatkowej, jaka jest handel");

    printf("hurtowa nawozem w cenie %f zl za kg\n",

              cena_nawozu);

    return 0;

}

Zmienne deklarujemy na początku programu (przed funkcją main () ). Wartości, jak widać powyżej, przypisujemy w bardzo prosty sposób. Służy do tego znak równości =. Pamiętaj jednak - znak równości w języku C służy tylko do przypisywania wartości (np. zmienna MojWiek nie jest równa 20, lecz ma jedynie przypisaną taką wartość).

Zastanawiacie się co znaczą te dziwne znaczki %u, %lu, itp.??

Są to tzw. specyfikatory konwersji (z ang. conversion specifiers ). Nakazują one funkcji printf () wyświetlać na ekranie wartości zmiennych określonego typu. Oto znaki od­powiadające typom poszczególnych zmiennych:

char              %c

int, short              %d

long              %ld

float, double              %f

unsigned int,              unsigned short      %u

unsigned long              %lu

/* Zadanie 8 */

/* Przypisuje zmiennym wartości oraz je wyświetla */

#include <stdio.h>

: int waga = 100;

float promień = 10.3;

main()

{

      printf("Wazę %d kg i wszystkie kobiety", waga);

       printf(" w promieniu %f metrów nie mogą",

              promień);

      printf (" oderwać ode mnie wzroku\n");

      return 0;

}

Jak widać, możemy przypisywać zmiennym wartości podczas ich deklaracji

 

/* Zadanie 9 */

#include <stdio.h>

#define PI 3.14

float PoleKuli;

const int R = 5;

ma i n ()

{

     PoleKuli = 4*PI*R*R;

     printf("Pole Kuli wynosi %f\n", PoleKuli);

     return 0;

}

Deklarujemy stałą PI w wierszu 4 naszego programu przy pomocy #def ine. Następnie deklarujemy kolejno zmienną PoleKuli oraz stałą R (promień kuli, za pomocą słowa kluczowego const). Teraz, w bardzo prosty sposób, możemy obliczyć pole kuli w wierszu 9, od razu przypisując otrzymaną wartość zmiennej PoleKuli. W wierszu 10 stosujemy funkcję printf (), aby wyświetlić wynik na ekranie

/* Zadanie10 */

/* Oblicza ilosc sekund w ciągu doby */

#include <stdio.h>

#define ile_min_w_godz 60

int ile_sek_w_dobie;

const int ile_sek_w_min = 60;

main()

{

     i 1 e_s e k_w_dobi e=2 4 * i 1 e_min_w_godz * i 1 e_s e k_w_min ;

    printf("Ilosc sekund w 24 godzinach wynosi %d",

              ile_sek_w_dobie);

     return 0;

}

              /*   Zadanie 11   */

              /* Pyta o wiek oraz wyświetla podana wartość*/

              #include <stdio.h>

              int Wiek;

              main()

              (

      scanf("%d", swiek);

      printf("Masz %d lat", Wiek) ;

      return 0;

}

Deklarujesz zmienną, przydzielając jej miejsce w pamięci (wiersz 4). Używasz funkcji scanf () (wiersz 7), która pobiera wartość z klawiatury i wpisuje ją w podane miejsce, a następnie stosujesz printf O (wiersz 8), aby wyświetlić daną wartość na ekranie. Zapytasz, dlaczego przed nazwą zmiennej znajduje się ten śmieszny znaczek &. Ma to związek z adresowaniem pamięci.

   /*   Zadanie.12   */

/* Oblicza Twój wiek po upływie 480-u miesięcy */

#include <stdio.h>

#define PrzedzialCzasu 480

#define ile_mies_w_roku 12

main()

{

     int Wiek;

     int ObliczonyWiek;

     int IleLat;

     IleLat = PrzedzialCzasu/ile_mies_w_roku;

     scanf("%d", SWiek);

     ObliczonyWiek = Wiek+IleLat;

    printf("Za 480 miesięcy, czyli %d lat, ", IleLat);

     printf("miał %d lat\n", ObliczonyWiek);

     return 0;

}

Aby zamienić 480 miesięcy na lata, musiałem zadeklarować kolejną stałą- ile_mies_w_roku (wiersz 5). Następnie wprowadziłem potrzebne zmienne -Wiek (miejsce na wartość wprowadzoną z klawiatury), ObliczonyWiek (w celu prze­chowania wyniku zadania), IleLat (tymczasową zmienną zawierającą obliczoną ilość lat, która ma odpowiadać 480 miesiącom). Kolejnym krokiem jest obliczenie zmiennej

HeLat. Dzielimy w tym celu stałą PrzedzialCzasu przez ile_mies_w_roku (używamy operatora / - na ten temat dowiemy się więcej w następnym rozdziale). Na­stępnie korzystamy z funkcji scanf (), aby uzyskać wartość zmiennej Wiek, do której później dodamy HeLat, i otrzymamy końcowy wynik. Ostatecznie wyświetlamy otrzymaną wartość na ekranie przy użyciu printf ().

              /* Zadanie13 */

              /* Porównuje 2 liczby oraz decyduje która z nich */

              /* jest większa */

              #include <stdio.h>

              int x, y;

main() (

printf("Podaj pierwsza liczbę: \n");

scanf("%d", Sx);

printf("Podaj druga liczbę: \n");

scanf("%d", sy);

if (x>y)

printf("Liczba %d jest wieksza\n", x) ; else {

printf("Liczba %d jest większa lub równa

printf("liczbie %d\n", x); ) return 0;

 

 

W drugim wierszu deklarujemy dwie zmienne: x oraz y. Następnie wykonywana jest funkcja printf () oraz scanf (), która czeka na podanie pierwszej liczby. W wier­szach 10 i 11 ponownie wykonywane są te funkcje (w tym przypadku scanf () czeka na wprowadzenie drugiej liczby). Instrukcja warunkowa sprawdza, czy warunek x>y jest spełniony, a następnie wykonuje jedną z funkcji printf (). Na pewno zauważyli­ście, iż ćwiczenie zostało rozwiązane niezgodnie z poleceniem, gdyż wartości zmien­nych x i y mogą być sobie równe.

/* Zadanie.14 */

/* Dokonuje mnożenia 2 podanych liczb oraz */

/* sprawdza czy wynik jest mniejszy, większy, czy */

/* równy liczbie 100 */

include <stdio.h>

int x, y, z;

main()

{

printf("Podaj pierwsza liczbę: \n");

scanf("%d", Sx);

printf("Podaj druga liczbę: \n");

scanf("%d", &y);

z = x*y;

if (z==100)

{

printf("Wartość zmiennej z jest równa "); printf("liczbie 100. \n");

}

else

<

if (

(z>100

              printf("Wartość zmiennej z jest ");

              printf("większa od liczby 100. \n");

              }

              else

              {

              printf("Wartość zmiennej z jest ");

              printf("mniejsza od liczby 100. \n");

              }

    (

    return 0;

}

Aby rozwiązać powyższe ćwiczenie, należy w głównej instrukcji warunkowej zagnieź­dzić kolejną (z ang. nesting). W celu ułatwienia Wam lepszego zrozumienia pojęcia ne-sting, słowa kluczowe głównej instrukcji warunkowej zaznaczone są grubą czcionką (wiersze 14 i 19). W wierszu 14 testowany jest omawiany wcześniej przypadek, kiedy wartość zmiennej z jest równa liczbie 100. Następnie, w 21 wierszu wprowadzona jest „zagnieżdżona" druga instrukcja warunkowa, w której sprawdzamy, czy wartość zmiennej z jest większa od liczby 100. Jeśli warunek jest spełniony, na ekranie zostanie wyświetlona informacja stwierdzająca ten fakt (wiesze 23-24). W przeciwnym razie wykonana zostanie funkcja printf (), która zawiadomi nas o tym, iż wartość zmiennej z jest mniejsza od liczby 100 (wiersze 28-29).

...

Zgłoś jeśli naruszono regulamin