1. [Funkcje] Utworzyć funkcję: a) Posiadającą nagłówek int isWhite
Transkrypt
1. [Funkcje] Utworzyć funkcję: a) Posiadającą nagłówek int isWhite
1. [Funkcje] Utworzyć funkcję: a) Posiadającą nagłówek int isWhite(char z), która zwraca 1, jeśli przekazany do niej jako argument znak z jest białym znakiem (spacja, tabulacja pozioma, nowa linia) i 0 w przeciwnym wypadku. b) Posiadającą nagłówek int words(char *s), która zlicza liczbę słów (tj. zbiorów znaków „czarnych”, oddzielonych znakami białymi) w podanym łańcuchu znaków s. Funkcja powinna wykorzystywać funkcję utworzoną w poprzednim punkcie. c) Posiadającą nagłówek float sumClear(float *tab, int n), gdzie tab jest wskaźnikiem na początek tablicy oraz n określa jej rozmiar. Funkcja przegląda kolejne elementy tablicy i tworzy sumę liczb spełniających taki warunek, że nowo dodawana liczba jest większa od poprzednio dodanej (np. dla zbioru {4.0, 1.2, 5, -0.3, 1, 10, 6.0} powstanie suma: 4.0 + 5 + 10 ). Przed swoim zakończeniem funkcja zeruje wszystkie elementy tablicy i zwraca wartość obliczonej sumy. 2. [Przekazywanie argumentów do funkcji przez wartość i wskazanie] Określić wartości zmiennych x, y, z po wywołaniu funkcji fun: a) float x = 3.5f; int y = 2, z = 8; float fun(float *a, int *b, float c) { *a += *b – c; c = --*a; return *a +-- *b; } void main(void) { fun(&x, &y, z); } b) float x = 2.5f; int y = 4, z = 3; float *fun(float a, int *b, int *c) { a += *b – *c; *c = --a +-- *b; return &a; } void main(void) { fun(x, &y, &z); } 3. [Tablice a wskaźniki, arytmetyka wskaźników] Zinterpretować podane definicje zmiennych i przypisania: int a = 4, b = 3; int *pa = &b, g; float p = 7, q = 10; float *pf = &p, m; float tabf[10] = {0.4f, -4, 12, 1}; int tabi[][3] = {{2, 3, 4}, {-2, -4, 0}, {23, 2, 10}, {1, 2, 3}}; int *tabpi[4]; tabpi[0] tabpi[1] tabpi[2] tabpi[3] = = = = &a; tabi[1]+1; pa; tabi[2]+2; W oparciu o powyższe definicje, określić poprawność składniową i logiczną poniższych wyrażeń. Dla wyrażeń poprawnych podać ich wartość lub znaczenie wskaźnikowe. a + *pa a + pa a – pa pf – a pf – *pa tabf[4] *(tabf + 3) tabf + q *tabf + q *(tabi – 3) tabpi[2] *tabpi[2] **(tabpi+2) *tabpi[1] – *tabpi[3] tabpi[3] – tabpi[1] *(*tabi + *(tabi[2] - 2) + *(tabi[2] + 2)) 4. [Deklaracje zmiennych, wskaźników, tablic, funkcji] Zinterpretować podane niżej deklaracje: int i; float (*pa)[]; int (**ppa)[]; int (*apa[])[]; float *p; char (*pf)(); void (**ppf)(); void (*apf[])(); char a[]; int *ap[]; int*(*pap)[]; char ***fpp(); void f(); char *fp(); char *(*pfp)(); int (*fpa())[]; int **pp; float ***ppp; int **app[]; float (*fpf())();