PProg_cw_04.pdf

(127 KB) Pobierz
235976514 UNPDF
Podstawyprogramowania
IrokAutomatykaiRobotykaPWr
wiczenia–Zestaw4
Zakresmateriału
Analizapoprawno±cikonstrukcji,wyliczaniewyra»e«zwska¹nikamiitablicami,r¦cznasymulacja,
opracowywaniefunkcjiprogramu.
Zadania
1.Maj¡czdefiniowanewprogramie
int i=7, p=&i, t[10], q1;
odpowiedznaponi»szepytania.
• Którezpodstawie«s¡poprawne:
a) q1=&i;
b) q1=&&i;
c) q1=p;
d) q1=&p;
e) q1=*t[5];
f) q1=&t[5];
g) q1=&t;
h) q1=t;
• Czypowykonaniu q1=t;q1++; warto±ci t[1] i *q1 s¡równe?Czywynosz¡one7?
2.Załó»my,»emamynast¦puj¡cedeklaracje:
#defineROZMIAR5
intliczby[ROZMIAR]= { 3
|{z}
a 2
, 10
|{z}
a 3
|{z}
a 4
, 9
|{z}
a 5 − adresy
} ;
int*wsk1,*wsk2;
wsk1=liczby;
wsk2=&liczby[3];
okre±lka»d¡zponi»szychinstrukcji:
a) liczby+2==&liczby[2]
b) *(liczby+2)==liczby[2]
c) *(liczby+1)
d) *liczby+2
e) liczby
f) *wsk1
g) printf("%d,%p",*wsk1++,wsk1)
h) printf("%d,%p",*++wsk1,wsk1)
1
|{z}
a 1
, 8
, 3
Podstawyprogramowania,IrokAutomatykaiRobotykaPWr 2
i) (*wsk2)++
j) wsk1+4==&liczby[4]
k) wsk2-2!=&liczby[1]
l) *--wsk2
m) wsk2-wsk1
n) wsk2==wsk1
o) *wsk2==*wsk1
3.Jakajestwarto±¢ *wsk i *(wsk+2) wka»dymprzypadku?
a) int*wsk;
intkulki[2][2]={12,14,16}
wsk=kulki[0]
b) int*wsk;
intpilki[2][2]={{12},{14,16}}
wsk=pilki[0]
4.Ilewynosi **wsk i **(wsk+1) wka»dymprzypadku?
a) int(*wsk)[2];
intkulki[2][2]={12,14,16}
wsk=kulki
b) int(*wsk)[2];
intpilki[2][2]={{12},{14,16}}
wsk=pilki
5.Zadeklarowanozmienne:
chara[10]="0123456789";
char*pa;
charx,y,z;
Którezponi»szychinstrukcjis¡poprawne?Je±lis¡poprawne,jakib¦dzieefektichdziałania.
pa=a;
pa++;
a++;
a=pa;
*pa++;
(*pa)++;
x=*pa;
y=*pa++;
z=*++pa;
printf("%c%c%c\n",x,y,z);
printf("%s\n",pa-2);
6.Podajró»nicepomi¦dzyponi»szymidefinicjamizmiennej napis
charnapis[80]="Alamakota";
charnapis[] ="Alamakota";
char*napis ="Alamakota";
Podstawyprogramowania,IrokAutomatykaiRobotykaPWr 3
7.Przydefinicjach:
int*zPtr;
int*aPtr=0;
void*sPtr=0;
intliczba,i;
intz[5]={1,2,3,4,5};
sPtr=z;
wyka»bł¦dywponi»szychfragmentachprogramuiopiszwjakisposóbmo»najepoprawi¢.
a) ++zPtr;
b)Abypobra¢pierwszyelementtablicy,nale»yskorzysta¢zekonstrukcji
liczba=zPtr;
c)Przypisanietrzeciegoelementutablicy(owarto±ci3)zmiennej liczba uzyskujesi¦przez
liczba=*zPtr[2];
d)Nawydrukowaniecałejzawarto±citablicy z pozwalaj¡instrukcje
for(i=0;i<=5;i++)
printf("%d\n",zPtr[i]);
e)Przypisaniewarto±ciwskazywanejprzez sPtr zmiennej liczba
numer=*sPtr;
f) ++z;
8.Załó»my,»eliczbyzmiennoprzecinkowepojedynczejprecyzjiprzechowywanes¡w4bajtach,
natomiastpierwszyelementtablicyznajdujesi¦podadresem1002500.Wykonajnast¦puj¡ce
operacje:
a)Zadeklarujtablic¦liczbtypu float zawieraj¡c¡10elementów,onazwie liczby ,iza-
inicjowa¢j¡warto±ciami:0 . 0,1 . 1,2 . 2,...9 . 9.Załó»my,»estałejsymbolicznej ROZMIAR
zostałanadanawarto±¢10.
b)Zadeklarujwska¹nik nPtr wskazuj¡cynaobiektutypu float .
c)Wydrukujnastandardowymwyj±ciuzawarto±¢tablicy liczby posługuj¡csi¦indeksem.
Posłu»si¦instrukcj¡ for ,zakładaj¡c,»ezostałazdefiniowanakontroluj¡caj¡zmienna
całkowita i .Ka»dyzelementówtablicypowinienby¢wydrukowanyzjednymmiejscem
poprzecinku.
d)Podajprzykładdwóchró»nychwyra»e«,przypisuj¡czmiennej nPtr adrestablicy liczby .
e)Wydrukujzawarto±¢tablicy liczby korzystaj¡cznotacjiwska¹nik/przesuni¦cieorazze
wska¹nika nPtr .
f)Wydrukujzawarto±¢tablicy liczby korzystaj¡cznotacjiwska¹nik/przesuni¦cie,je»eli
funkcj¦wska¹nikapełninazwatablicy.
g)Wydrukujzawarto±¢tablicy liczby indeksuj¡cwska¹nik nPtr .
h)Poka»czwartyelementtablicy liczby posługuj¡csi¦metod¡indeksowaniatablicy,nota-
cj¡wska¹nik/przesuni¦cie,je»elifunkcj¦wska¹nikapełninazwatablicy,metod¡indekso-
waniawska¹nikaoraznotacj¡wska¹nik/przesuni¦cie,je»elifunkcj¦wska¹nikapełni nPtr .
i)Zakładaj¡c,»e nPtr wskazujepocz¡tektablicy liczby ,jakiadresjestokre±lanyprzez
nPtr+8 ?Jakaznajdujesi¦tamwarto±¢?
j)Zakładaj¡c,»e nPtr wskazujena liczby[5] ,jakiadresb¦dziewskazywanyprzez nPtr
powykonaniuoperacji nPtr-=4 ?Wjakisposóbjestprzechowywanawarto±¢podtym
adresem?
Podstawyprogramowania, IrokAutomatykaiRobotykaPWr 4
9.Czynast¦puj¡cyfragmentkodujestpoprawny?
int main() {
int st;
st=&st;
return 0;
}
10.Cojestniepoprawnegownast¦puj¡cymfragmenciekoduijakmo»natopoprawi¢?
int main() {
int st;
st=100;
printf(”%d \ n”, st);
return 0;
}
11.Pracujeszpewnieju»długo.Odpocznijchwil¦:)
12.Czynast¦puj¡cyfragmentkodupoprawnieskompilujesi¦iwykona?Je»elitak,tocozostanie
wy±wietlonenaekranie?
int main() {
int a=5;
a= & & & &a;
printf(”awynosi%d \ n”,a);
return 0;
}
13.Czynast¦puj¡cyfragmentkodupoprawnieskompilujesi¦iwykona?
int main() {
int a=5;
a= &&a;
printf(”awynosi%d \ n”,a);
return 0;
}
14.Jakiwynikdanast¦puj¡cyprogram?
int main() {
char p;
for (p=”WNT”; p;p++)printf(”%c”, p − 1);
printf(” \ n”);
return 0;
}
15.Napiszfunkcjeint strlen(char*str) i intstrlen(charstr[]) ,którezwracaj¡długo±¢
stringu.
16.Napiszprogram,którywdanejtablicyliczbcałkowitychwyszukaelementnajwi¦kszy.Wsz¦-
dzie,gdzietojestmo»liwewykorzysta¢wska¹niki.
17.Jeszczejednachwilarelaksuniezaszkodzi.Tymbardziej,»eponi»ejmo»eby¢ci¦»ko:)
18.Napiszfunkcj¦ voiddopisz(char*p,char*q) któradopisujeci¡gznakówwskazywany
przez q doci¡guznakówwskazywanegoprzez p .Przyj¡¢,»edługo±¢strukturdanychsłu-
»¡cychdoprzechowywaniaci¡gówwskazywanychprzez p i q jestokre±lonastał¡ LENGTH .
Zaproponowa¢przebiegtestówfunkcji.
235976514.004.png 235976514.005.png 235976514.006.png 235976514.007.png
Podstawyprogramowania, IrokAutomatykaiRobotykaPWr 5
19.Przeanalizujponi»szyprogram,anast¦pnieodpowiedznapytania.Odpowiedziuzasadnij.
#include < stdio.h >
int main() {
int i, ti[15], tp1[15], tp2[15], tp3[15], tp4[15];
for (i=0;i < =14;i++) {
ti[i]=i;
tp1[i]=i;
tp2[i]=&i;
tp3[i]=&ti[i];
tp4[14 − i]=ti+i;
}
printf(”%d \ n”,tp1[10]);
printf(”%p \ n”,tp1[10]);
printf(”%d \ n”, (tp1[10]));
/ TEST /
return 1;
}
a)Któreliniezawieraj¡poleceniapowoduj¡cebł¡dkompilacji?Któreliniezawieraj¡pole-
cenia,któremog¡powodowa¢bł¡dwczasiewykonywaniaprogramu?
b)Jak¡warto±¢maj¡ tp_2[5] , *tp_2[5] wlinii18?
c)Jak¡warto±¢maj¡ tp_3[5] , *tp_3[5] wlinii18?
d)Cozostaniewypisanewlinii14?Acowlinii15?
e)Czypolecenie
printf(”%d \ n”, (ti+ tp4[ (ti+3)]));
jestpoprawne?Je±litak,tocozostałobywypisanepoumieszczeniugowlinii18?
20.Programistamiałnapisa¢gr¦wprzesuwank¦naplanszy5x5(naplanszyznajduj¡si¦24
elementyponumerowaneod1do24,jednopolejestpuste,grapoleganauło»eniuelementów
wkolejno±ci).Jakosposóbreprezentacjidanychprzyj¡łtablic¦jednowymiarow¡zdefiniowan¡
jako intplansza[25]; Przyj¡łtak»enast¦puj¡ceoznaczeniakierunkówprzesuwaniasi¦
wolnegopolanaplanszy:1–góra,2–prawo,4–dół,8–lewo.Pomó»muzdefinowa¢funkcje:
a) z1d_na2d ,którejpierwszymargumentemb¦dzieindekswtablicy,ab¦dziezwraca¢par¦
liczbb¦d¡cychwspółrz¦dnymi(x,y)elementu;
b) z2d_na1d ,któranapodstawiewspółrz¦dnych(x,y)wyliczyindekstablicy;
c) ruch ,któranapodstawieaktualnegoindeksuwolnegomiejscaorazkierunkuwyliczynowe
poło»eniewolnegomiejsca.
21.Niematojaklistazawieraj¡cadwudzie±ciajedenzada«.Naszcz¦±cietozadaniete»pozwala
nachwil¦relaksu.Zwłaszcza,»etoju»koniec(takieinfonawszelkiwypadek,dlatychconie
zauwa»yli:).
235976514.001.png 235976514.002.png 235976514.003.png
Zgłoś jeśli naruszono regulamin