Lab_07_Instrukcje sterujace w C.pdf

(132 KB) Pobierz
387412813 UNPDF
07 Metodyka i techniki programowania
2007-11-06
Instrukcje sterujące w C
mgr inż. Wojciech Szmuc
Ćwiczenie 1. Instrukcja switch
1. Zaimplementuj kod:
/* TODO: wczytanie zmiennych "lArgument", "operator", "pArgument" (%f%c%f) */
switch (operator) /* okreslenie zmiennej, ktorej wartosc bedzie sprawdzana */
{
case '+': /* jedna z mozliwych wartosci */
printf("%f+%f=%f\n", lArgument, pArgument, lArgument+pArgument);
break;
/* wyjscie z bloku "switch" */
case '-':
printf("%f-%f=%f\n", lArgument, pArgument, lArgument-pArgument);
break;
case '*':
printf("%f*%f=%f\n", lArgument, pArgument, lArgument*pArgument);
break;
case '/':
printf("%f/%f=%f\n", lArgument, pArgument, lArgument/pArgument);
break;
default:
/* wybierane, gdy inne nie pasuja */
printf("Niepoprawny format.\n");
};
2. Sprawdź co spowoduje wykasowanie instrukcji break .
Zadanie
Napisz program wypisujący nazwy pór roku w zależności od numeru wprowadzonego
miesiąca. W przypadku, gdy miesiąc może należeć do różnych pór roku rozstrzyganie na
podstawie pobranego numeru dnia tego miesiąca.
Ćwiczenie 2. Pętle while
1. Zaimplementuj kod:
srand(time(NULL)); /* inicjalizacja generatora liczb losowych */
short propozycja, wylosowana=rand()%100; /* losowanie liczby od 0 do 99 */
do
/* poczatek petli */
{
printf("Wpisz liczbe: ");
scanf("%hd", &propozycja);
if (propozycja>wylosowana) printf("Zbyt duza liczba\n");
if (propozycja<wylosowana) printf("Zbyt mala liczba\n");
} while (propozycja!=wylosowana);
/* warunek powtarzania */
printf("Zgadza sie!\n");
2. Przed instrukcjami warunkowymi dopisz:
if (propozycja<0 || propozycja>99)
{
printf("Liczba poza zakresem 0-99.\n");
continue;
/* przejdz do warunku petli */
};
Sprawdź działanie programu po wpisaniu niepoprawnej wartości.
3. Podmień continue na break . Sprawdź działanie programu.
4. Zmodyfikuj program tak, aby wykorzystywał pętlę while zamiast do/while .
387412813.001.png
Ćwiczenie 3. Pętla for
1. Zaimplementuj kod:
/* TODO: wczytanie poprawnej wartosci zmiennej "n" */
unsigned indeks, silnia=1;
for (indeks=2; indeks<=n; indeks++) /* zaczyna od "indeks=2", sprawdza czy */
{
/* "indeks<=n", inkrementuje "indeks" */
silnia*=indeks;
};
2. Sprawdź co się zmieni po zastąpieniu indeks++ przez ++indeks .
3. Zmodyfikuj program tak, aby obliczał liczbę Eulera przy pomocy wzoru: e = n =0
1
n! .
Maksymalną wartość n pobierz z konsoli.
Zadanie
Napisz program, który wyświetli przebieg ustalonej funkcji (na przykład sinus) za pomocą
symboli * .
Ćwiczenie 4. Operatory bitowe
1. Stwórz plik bitowe.c zawierający:
/* TODO: wczytanie zmiennej "nieujemna" (unsigned) */
short indeks;
printf("%u w zapisie binarnym: ", nieujemna);
for (indeks=31; indeks>=0; indeks--)
{
printf("%d", (nieujemna>>indeks)%2); /* przesuniecie o "indeks" bitow */
/* w prawo */
if (indeks%4==0) printf(" ");
if (indeks%8==0) printf(" ");
};
Sprawdź działanie programu oryginalnego oraz po usunięciu nawiasów zawierających
operację przesunięcia bitowego.
2. Używając powyższego programu (lub jego modyfikacji) wypisz więcej bitów niż wynosi
wielkość wypisywanego typu.
Co można wywnioskować z otrzymanego wyniku?
3. Zmodyfikuj program tak, aby wyświetlał również reprezentację bitową liczb ujemnych.
4. Wykorzystując przedstawiony w punkcie 1. algorytm sprawdź działanie pozostałych
operatorów bitowych.
Zadanie
Napisz program, który rozkłada liczbę na bity z wykorzystaniem przesunięcia bitowego
w lewo.
387412813.002.png
Zgłoś jeśli naruszono regulamin