1a. jakie wartości będą miały zmienne a,b po wykonaniu fragmentu programu:
int a,b;
for(a=0,b=6; a<b; --b) { ++a; b-=2; }
Rozwiązanie:
a = 2 b = 0
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a,b;
for(a=0,b=6; a<b; --b,printf("a wynosi %d b wynosi %d\n",a,b))
{ ++a; b-=2;}
printf("\n");
printf("a wynosi %d b wynosi %d\n",a,b);
system("PAUSE");
return 0;
}
1b. jakie wartości będą miały zmienne a,b po wykonaniu fragmentu programu:
int a=2,b;
b=1; while(b<4) { a+=b; b+=2; }
Rozwiązanie:
a = 6 b = 5
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a=2,b;
b=1; while(b<4) { a+=b; b+=2; }
printf("a wynosi %d b wynosi %d\n",a,b);
system("PAUSE");
return 0;
}
1c. jakie wartości będą miały zmienne a,b po wykonaniu fragmentu programu:
int a=8,b;
b=1; do { a+=b; b+=2; } while(b<4)
Rozwiązanie:
a = 12 b = 5
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a=8,b;
b=1; do { a+=b; b+=2; } while(b<4) ;
printf("a wynosi %d b wynosi %d\n",a,b);
system("PAUSE");
return 0;
}
1d. jakie wartości będą miały zmienne a,b po wykonaniu fragmentu programu:
int a,b;
a=b=6;
while(a=b) --b;
a=b=0
a=b podstawienie w wyrażeniu warunkowym(warunek logiczny) sterującym wykonanie pętli
2. Przy następującej deklaracji oraz podstawieniach:
int i=2, t[4]={ 4,3,4,1 };
*(t+2)=2;
t[1]=*(t+i);
jaką wartość mają poszczególne elementy tablicy t ?.
Rozwiazanie:
t[0]=4
t[1]=2
t[2]=2
t[3]=1
int main(int argc, char *argv[])
{
int i=2, t[4]={ 4,3,4,1 };
*(t+2)=2;
t[1]=*(t+i);
printf("t0 wynosi %d \n",t[0]);
printf("t1 wynosi %d \n",t[1]);
printf("t2 wynosi %d \n",t[2]);
printf("t3 wynosi %d \n",t[3]);
system("PAUSE");
return 0;
}
2a. Przy deklaracjach i podstawieniach:
int *a, *b, i=4, k=1;
a= &i;
b=a;
*a*= *b;
jaka jest wartość zmiennej i ?.
i = 16
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int *a, *b, i=4, k=1;
a= &i;
b=a;
*a*= *b;
printf("i wynosi %d \n",i);
printf("k wynosi %d \n",k);
printf("a wynosi %d \n",a);
printf("*a wynosi %d \n",*a);
printf("b wynosi %d \n",b);
printf("*b wynosi %d \n",*b);
system("PAUSE");
return 0;
}
3. Jakie będą wartości zmiennych i,j w wyniku następującego wywołania funkcji.
long i=1,j=4;
j= 2*f(&i, (int)j);
zdefiniowanej:
long f( long *a , int j )
{
j= 2*j; *a=j+1;
return j;
}
Rozwiązanie:
i=9
j=16
#include <stdio.h>
#include <stdlib.h>
long f( long *a , int j )
{
printf("a wynosi %d \n",*a);
printf("j2 wynosi %d \n",j);
j= 2*j; *a=j+1
return j;
}
int main(int argc, char *argv[])
{
long i=1,j=4;
j= 2*f(&i, (int)j);
printf("i wynosi %d \n",i);
printf("j wynosi %d \n",j);
system("PAUSE");
return 0;
}
4. Jakie będą wartości elementów tablicy z w wyniku następującego wywołania funkcji.
long z[2],*p;
x[0]=3; p=z+1;
f(x, p);
zdefiniowanej:
void f( long *a , long *b )
{
*b= *a;
a=b;
++*a;
}
NIC nie wyjdzie x jest nie zadeklarowany
#include <stdio.h>
#include <stdlib.h>
void f( long *a , long *b )
{
*b= *a;
a=b;
++*a;
printf("a wynosi %d \n",*a);
}
int main(int argc, char *argv[])
{
long z[2],*p;
x[0]=3; p=z+1;
f(x, p);
printf("z0 wynosi %d \n",z[0]);
printf("p wynosi %d \n",*p);
system("PAUSE");
return 0;
}
5. Jakie będą wartości elementów tablicy z w wyniku następującego wywołania funkcji.
long z[2],p=3;
z[0]=3;;
f(z, p);
zdefiniowanej:
void f( long *a , long &b )
{
b= *a;
++a;
*a=b;
}
6. Jakie będą wartości zmiennych x[0], x[1] w wyniku następującego wywołania funkcji.
long x[2];
x[0]=3; x[1]=4;
f(x, x+1);
zdefiniowanej:
void f( long *a , long *b )
{
++a;
++*a;
}
Rozwiązanie
x[0] = 3
x[1] =5
#include <stdio.h>
#include <stdlib.h>
void f( long *a , long *b )
{
printf("*a1 wynosi %d \n",*a);
++a;
printf("*a2 wynosi %d \n",*a);
++*a;
printf("*a3 wynosi %d \n",*a);
}
int main(int argc, char *argv[])
{
long x[2];
x[0]=3; x[1]=4;
printf("x0_1 wynosi %d \n",x[0]);
printf("x1_1 wynosi %d \n",x[1]);
f(x, x+1);
printf("x0 wynosi %d \n",x[0]);
printf("x1 wynosi %d \n",x[1]);
system("PAUSE");
return 0;
}
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
7. Dana jest lista o elementach typu:
class element
{
int x,y,wiek;
struct element *nastepny;
}
Napisz funkcję zwracającą maksymalną wartość pola wiek ze wszystkich elementów listy. (lista identyfikowana jest przez wskaźnik p do pierwszego elementu).
8. Dana jest lista o elementach typu:
struct element
{
int x,y,z
struct element *nastepny;
}
Zapisz funkcję zwracającą ilość elementów listy. (lista identyfikowana jest przez wskaźnik p do pierwszego elementu).
9. Dana jest lista o elementach typu:
struct element
{
int x,y,z
struct element *nastepny;
}
Napisz funkcję zwracającą wskaźnik do ostatniego elementu listy (lista identyfikowana jest przez wskaźnik p do pierwszego elementu).
10. Dane są dwie listy o elementach typu:
struct element
{
int x,y,z;
struct element *nastepny;
}
Zapisz funkcję dołączającą jedną listę do drugiej (listy identyfikowane są przez wskaźniki p1,p2, do pierwszych elementów; ponadto dane są wskaźniki o1,o2 do ostatnich elementów list ).
11. W pewnym programie gwiazdy zmienne reprezentowane są strukturą
struct gwiazda
{ char nazwa[100];
int typ_zmiennosci;
double okres_zasadniczy, amplituda;
};
Zapisz funkcję zwracającą:
- okres_zasadniczy gwiazdy gdy jej typ_zmiennosci oznaczony jest kodem większym od 5
- wartość zero w przeciwnym przypadku
(argumentem funkcji powinien być: wskaźnik do struktury gwiazda)
12. W pewnym programie planety reprezentowane są obiektami klasy:
class planeta
{
private:
char nazwa[100];
double okres_obiegu, masa;
};
Napisz funkcję (składową klasy) zwracającą okres_obiegu planety
oraz konstruktor obiektu klasy planeta, podstawiający pod pola tworzonego obiektu pewne
`bezpieczne' dane, oraz drugi konstruktor inicjujący dodatkowo nazwę planety (nazwę przekazać poprzez argument konstruktora).
13. W pewnym programie znaki reprezentowane są poprzez obiekty klasy:
class znak
{
public:
int kod, x, y, kolor;
class znak *nastepny;
void rysuj(void);
};
, zaś napisy poprzez lisy jednokierunkowe o elementach typu znak (ostatni znak napisu ma pole nastepny równe NULL). Mając do dyspozycji metodę rysuj wyświetlającą pojedynczy znak, napisz funkcję wyświetlającą cały napis
14. W pewnym programie zdefiniowano klasę znaków:
class znak
{
int kod,
long kolor;
};
oraz klasę znak_wektorowy:
class znak_wektorowy : znak
{
int szerokosc, wysokosc, czcionka
};
zadeklaruj i zdefiniuj operator `*' jako funkcję (metodę klasy) zwiększającą pewien obiekt klasy `znak_wektorowy', tak by poprawny był zapis:
znak_wektorowy z;
z*4.5;
15. W pewnym programie zdefiniowano klasę punktów oraz łamanych na płaszczyźnie:
class punkt
{
public:
double x,y; // współrzędne punktu
};
class lamana
{
punkt p[10];
int n; // ilosc punktów węzłowych łamanej
};
zadeklaruj i zdefiniuj operator `+' jako funkcję (metodeę klasy) zwracającą lamaną która powstaje przez połaczenie dwóch innych łamanych:
lamana l1,l2,l3;
-----
l3= l1 + l2;
-----
13