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())();