Na zajęciach obowiązuje zakaz używania zmiennych globalnych !
#include <stdio.h> /* deklaracja funkcji */ int silnia(int n); int main() { int liczba,s; printf("Podaj liczbe: "); scanf("%d",&liczba); s = silnia(liczba); printf("Silnia z %d wynosi %d\n",liczba,s); return 0; } /* definicja funkcji */ int silnia(int n) { int i=2, s=1; while( i < n+1 ) { s = s * i; i = i + 1; } return s; }
Ćwiczenia
jest_pierwsza
, która dla danej liczby całkowitej zwraca wartość 1 gdy podana liczba jest liczbą pierwszą a wartość 0 - gdy jest nie jestjest_pierwsza
napisz program który wyświetli wszystkie liczby pierwsze mniejsze lub równe pewnej podanej przez użytkownika liczbie całkowitejtrojkat
, która dla danej liczby całkowitej wyświetla trójkąt prostokątny złożony z podanej liczby linii, np.:***** **** *** ** *
trojkat()
, który określa jaki znak będzie użyty zamiast *
potega
, która dla danych argumentów x
(wartość rzeczywista) i y (wartość całkowita) wyznacza wartość potęgi xy
rpotega()
, która dla danych argumentów float p
i int w
wyznacza rekurencyjnie wartość potęgi pw
Ćwiczenia
scanf()
, printf()
, getchar()
i putchar()
(biblioteka stdio.h
)void pierwiastki(float a,float b,float c)
, która wyświetla miejsca zerowe równania y = ax2 + bx +c lub komunikat o ich braku
Uwaga
Kompilując program korzystający z funkcji matematycznych zadeklarowanych w pliku math.h
należy dodać opcję -lm
, czyli
dla programu zawartego w pliku pirwiatek.c
kompilacja w Linuksie wygląda tak
cc pierwiastek.c -lm -o pierwiastek
Fibonacci
(w postaci iteracyjnej lub rekurencyjnej), która wyświetla n
pierwszych elementów ciągu Fibonacciego.n > 1
Newton
, która dla podanych dwóch liczb całkowitych oblicza wartość symbolu NewtonaGauss
, która dla podanej wartości centrum (wartości średniej) i rozmycia (odchylenia standardowego) oblicza wartość funkcji Gaussan
pierwszych elementów ciągu arytmetycznego n
pierwszych elementów ciągu geometrycznegoDla danych dwóch liczb X i Y
1. jeśli X jest równe Y to jest to największy dzielnik 2. jeśli X > Y to niech X <- X - Y i wróć do punktu 1 3. jeśli X < Y to niech Y <- Y - X i wróć do punktu 1
#include<stdio.h> int globalna; void f(void) { int lokalna = 6; globalna++; printf("wewnatrz funkcji: globalna = %d\tlokalna = %d\n",globalna,lokalna); } int main() { int lokalna; printf("globalna = %d\tlokalna = %d\n",globalna,lokalna); f(); printf("globalna = %d\tlokalna = %d\n",globalna,lokalna); return 0; }
#include <stdio.h> void dodaj(int a) { static int x = 0; /* zmienna statyczna */ int y = 0; /* zmienna automatyczna */ x = x + a; y = y + a; printf("x = %d\ty = %d\n",x,y); } int main() { dodaj(1); dodaj(3); dodaj(4); dodaj(1); return 0; }
Wersja iteracyjna
int silnia(int n) { int i, s=1; for(i=1; i < n+1 ; i++) s*= i; return s; }
Wersja rekurencyjna
int rsilnia(int n) { if(n <= 1) return 1; return n*rsilnia(n-1); }