Top Banner
Feladatgyűjtemény a C programozási nyelvhez Smidla József 2011. november 7.
69

Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

Feb 06, 2018

Download

Documents

PhạmDũng
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

Feladatgyűjtemény a C programozási nyelvhez

Smidla József

2011. november 7.

Page 2: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

2

Page 3: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

Tartalomjegyzék

I. Nyelvi alapok 5

1. Kimenet, bemenet 7

2. Változók, operátorok 13

3. Vezérlési szerkezetek 213.1. Programozási tételek . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1.1. Csere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.2. Lineáris keresés . . . . . . . . . . . . . . . . . . . . . . . . 213.1.3. Eldöntés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.4. Megszámlálás . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.5. Minimum kiválasztás . . . . . . . . . . . . . . . . . . . . . 213.1.6. Rendezés . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4. Függvények 374.1. Függvényhívások . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.2. Rekurzió . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.3. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5. Mutatók 45

6. Struktúrák 51

7. File kezelés 53

8. A standard könyvtár 55

9. Az előfeldolgozó 57

II. Fejlettebb technikák 59

10.Láncolt listák 61

11.Fák 63

12.Bitműveletek 65

13.Memóriakezelés 67

3

Page 4: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

4 TARTALOMJEGYZÉK

14.Parancssori paraméterek 69

Page 5: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

I. rész

Nyelvi alapok

5

Page 6: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.
Page 7: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

1. fejezet

Kimenet, bemenet

A következő feladatokat úgy oldja meg, hogy az alábbi programot egészítse ki:

1 #include <s td i o . h>23 int main ( ) {4 int i 1 = 10 , i 2 = 8 , i 3 = 3 ;5 double d = 666 . 666 ;6 f loat f = 4 2 . 0 ;7 char ch = ’M’ ;8 char s t r [ ] = " ez ␣egy␣ szoveg " ;910 // Ide i r j a a megoldast !1112 return 0 ;13 }

Az alábbi feladatok mindegyikében látható 1-1 példa kimenet olyan formá-ban, hogy az egyes karaktereket (például a szóközöket) jól láthatóan elkülönít-hessük egymástól. Ott, ahol tabulátort kell használni, az átláthatóság kedvéérta példában 3 szóköz található, a valóságban ez több is lehet.

1.1.1. feladat Írassa ki az i1 valtozo erteket minimum 5 karakter szelesmezoben, jobbra igazıtva:

1 0

1.1.2. feladat Írassa ki az i1 valtozo erteket minimum 5 karakter szelesmezoben, balra igazıtva:1 0

1.1.3. feladat Írassa ki az i1 valtozo erteket minimum i2 karakterszeles mezoben, jobbra igazıtva:

1 0

7

Page 8: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

8 1. Kimenet, bemenet

1.1.4. feladat Írassa ki az i1 valtozo erteket minimum 5 karakter szelesmezoben, jobbra igazıtva, a mezo ures karaktereinek helyen 0 legyen:0 0 0 1 0

1.1.5. feladat Írassa ki az i1 valtozo erteket, ha a szam pozitıv, akkorlegyen elotte egy szokoz:

1 0

1.1.6. feladat Írassa ki a d valtozo erteket minimum 8 karakter szelesmezoben, 3 tizedesjegy pontossaggal:

6 6 6 . 6 6 6

1.1.7. feladat Írassa ki a d valtozo erteket minimum i1 karakter szelesmezoben, 3 tizedesjegy pontossaggal:

6 6 6 . 6 6 6

1.1.8. feladat Írassa ki a d valtozo erteket minimum 8 karakter szelesmezoben, i1 tizedesjegy pontossaggal:6 6 6 . 6 6 6 0 0 0 0 0 0 0

1.1.9. feladat Írassa ki a d/2.0 erteket minimum 8 karakter szelesmezoben, 3 tizedesjegy pontossaggal:

3 3 3 . 3 3 3

1.1.10. feladat Írassa ki a d valtozo erteket minimum i3 karakterszeles mezoben, i1 tizedesjegy pontossaggal:6 6 6 . 6 6 6 0 0 0 0 0 0 0

1.1.11. feladat Írassa ki az f valtozo erteket minimum 8 karakter szelesmezoben, 3 tizedesjegy pontossaggal:

4 2 . 0 0 0

1.1.12. feladat Írassa ki az f valtozo erteket minimum i1 karakterszeles mezoben, 3 tizedesjegy pontossaggal:

4 2 . 0 0 0

1.1.13. feladat Írassa ki az f valtozo erteket minimum 8 karakter szelesmezoben, i1 tizedesjegy pontossaggal:4 2 . 0 0 0 0 0 0 0 0 0 0

1.1.14. feladat Írassa ki az f/4.0 erteket minimum 8 karakter szelesmezoben, 3 tizedesjegy pontossaggal:

1 0 . 5 0 0

1.1.15. feladat Írassa ki az f valtozo erteket minimum i3 karakterszeles mezoben, i1 tizedesjegy pontossaggal:4 2 . 0 0 0 0 0 0 0 0 0 0

Page 9: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

9

1.1.16. feladat Írassa ki, hogy a 40 hány százaléka a 90-nek, a kimenet-ben jelenjen meg a % jel is:

4 4 . 4 4 4 4 4 4 %

1.1.17. feladat Írassa ki a d valtozo erteket minimum 7 karakter szelesmezoben, normal alakban:6 . 6 6 6 6 6 0 e + 0 2

1.1.18. feladat Írassa ki az i1 valtozo erteket oktalisan:1 2

1.1.19. feladat Írassa ki az i1 valtozo erteket hexadecimalisan:a

1.1.20. feladat Írassa ki az i1 valtozo erteket oktalisan, 6 karakterszeles mezoben, a mezo ures helyein legyen 0:0 0 0 0 1 2

1.1.21. feladat Írassa ki az i1 valtozo erteket hexadecimalisan, 6karakter szeles mezoben, a mezo ures helyein legyen 0:0 0 0 0 0 a

1.1.22. feladat Írassa ki az i1 valtozo erteket oktalisan, 6 karakterszeles mezoben, a szam 0-val kezdodjon, jelezve, hogy oktalis szamot ırunk ki:

0 1 2

1.1.23. feladat Írassa ki az i1 valtozo erteket hexadecimalisan, 6karakter szeles mezoben, a mezo ures helyein legyen 0, a kiırt ertek pedig 0x-elkezdodjon, jelezve, hogy hexadecimalis szamot ırunk ki:0 x 0 0 0 a

1.1.24. feladat Írassa ki az str stringet:e z e g y s z o v e g

1.1.25. feladat Írassa ki az str stringet ’-k kozott:’ e z e g y s z o v e g ’

1.1.26. feladat Írassa ki az str stringet "-k kozott:" e z e g y s z o v e g "

1.1.27. feladat Írassa ki az str stringet \ -k kozott:\ e z e g y s z o v e g \

1.1.28. feladat Írassa ki az str stringet, majd az utolso elotti karakterhelyere ırasson ki 1-et :e z e g y s z o v 1 g

1.1.29. feladat Írassa ki az str stringet, majd az elejet ırja felul i1ertekevel :1 0 e g y s z o v e g

Page 10: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

10 1. Kimenet, bemenet

1.1.30. feladat Írassa ki az str stringet, majd utana egy tabulatornyitavolsagra i1 erteket 4 szeles mezobe, a mezo ures helyeire 0-kat rakva:e z e g y s z o v e g 0 0 1 0

1.1.31. feladat Írassa ki a ch karaktert:M

1.1.32. feladat Írassa ki a ch karakter ASCII kodjat decimalisan:7 7

1.1.33. feladat Írassa ki a ch karakter ASCII kodjat hexadecimalisan,az A-F betuket kisbetusen:4 d

1.1.34. feladat Írassa ki a ch karakter ASCII kodjat hexadecimalisan,az A-F betuket nagybetusen:4 D

1.1.35. feladat Írassa ki a ch karakter ASCII kodjat hexadecimalisan,az A-F betuket kisbetusen, a kiırt ertek 0x-el kezdodjon:0 x 4 d

1.1.36. feladat Írassa ki a ch karakter ASCII kodjat hexadecimalisan,az A-F betuket nagybetusen, a kiırt ertek 0X-el kezdodjon:0 X 4 D

1.1.37. feladat Írassa ki a ch karakter ASCII kodjat hexadecimalisan,az A-F betuket nagybetusen, a kiırt ertek 0x-el kezdodjon:0 x 4 D

1.1.38. feladat Írassa ki a d erteket 2 tizedesjegy pontossaggal, de ugy,hogy a tizedespont helyett vesszo legyen:6 6 6 , 6 7

1.1.39. feladat Írassa ki az i1, i2 es i3 erteket, az egyes szamokkozott legyen 1-1 tabulatornyi tavolsag:1 0 8 3

1.1.40. feladat Írassa ki az str string legfeljebb elso 7 karakteret "-kkoze:" e z e g y "

1.1.41. feladat Írassa ki az str string legfeljebb elso i1-2 karakteret’-k koze:’ e z e g y s ’

1.1.42. feladat Írassa ki az str string legfeljebb elso 5 karakteret egy8 szeles mezobe, a mezot hataroljak " karakterek:" e z e g "

Page 11: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

11

1.1.43. feladat Írassa ki az str string legfeljebb elso 5 karakteret egy8 szeles mezobe, balra igazıtva, a mezot hataroljak " karakterek:" e z e g "

1.1.44. feladat Írassa ki az str string legfeljebb elso i2 karakteret egy8 szeles mezobe, a mezot hataroljak " karakterek:" e z e g y s "

1.1.45. feladat Írassa ki az str string legfeljebb elso i2 karakteret egyi2 + i3 szeles mezobe, balra igazıtva, a mezot hataroljak " karakterek:" e z e g y s "

1.1.46. feladat Írassa ki az első sorba a " karaktert, majd a kovetkezobeegy tabulatorral beljebb a ’-t es vegul a harmadik sor elejere a \ -t:"

’\

1.1.47. feladat Írassa ki a d erteket ugy, hogy a tizedesjegyeket csereljeki az i1 ertekere:6 6 6 . 1 0

1.1.48. feladat Rajzoltasson ki a képernyőre egy 3*3-as mátrixot,amely minimum 5 karakter széles mezőben 1 tizedes pontossággal lebegőpontosszámokat tartalmaz:

1 . 0 2 . 0 3 . 04 . 0 5 . 0 6 . 07 . 0 8 . 0 9 . 0

1.1.49. feladat Írassa ki az -i1 erteket, mintha elojel nelkuli valtozolenne:4 2 9 4 9 6 7 2 8 6

1.1.50. feladat Írassa ki az i1*10000 erteket, majd a kovetkezo sorbamintha short int tıpusu lenne:1 0 0 0 0 0- 3 1 0 7 2

1.1.51. feladat Írassa ki a d*i1 erteket egy i1 szeles mezobe, 2tizedesjegy pontossaggal, a mezot hataroljak " karakterek, a tizedespont helyenlegyen pontosvesszo, ha a szam pozitıv, akkor is jelenjen meg az elojel, a mezoures helyeire keruljenek 0 karakterek:" + 0 0 6 6 6 6 ; 6 6 "

Page 12: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

12 1. Kimenet, bemenet

A következő feladatokat úgy oldja meg, hogy az alábbi programot egészítseki:

1 #include <s td i o . h>23 int main ( ) {4 int a = 0 , b = 0 , c = 0 , d = 0 ;5 char ch1 , ch2 ;67 // Ide i r j a a megoldast !89 return 0 ;10 }

1.1.52. feladat A getchar segıtsegevel olvasson be egy karaktert a bil-lentyuzetrol a ch1 valtozoba, majd ırja ki a kepernyore a beolvasott karaktert:

Kerek egy karaktert: t ←↩A beolvasott karakter: ’t’

1.1.53. feladat A getchar segıtsegevel olvasson be a billentyuzetrol 2karaktert ( ch1, ch2), majd ırja ki oket a kepernyore:

Kerem az elso karaktert: r ←↩Kerem a masodik karaktert: t ←↩A beolvasott karakterek: ’r’ es ’t’

1.1.54. feladat Olvassa be az a valtozo erteket billentyuzetrol scanfsegıtsegevel, majd a beolvasott erteket ırja ki a kepernyore:

Kerek egy szamot: 53 ←↩A beolvasott szam: 53

1.1.55. feladat Olvasson be a billentyűzetről egyetlen scanf segıtsegevelketto szamot az a es b valtozokba, majd ırja ki a ket szamot a kepernyore:

Kerek ketto szamot :34 54 ←↩A szamok: 34, 54

1.1.56. feladat Olvasson be a billentyűzetről 4 számot, egymástól 1-1ponttal elválasztva, az a, b, c es d valtozokba, majd ırja ki a beolvasottszamokat a kepernyore:

Kerek negy szamot, ponttal elvalasztva: 1.2.3.4 ←↩A szamok: 1, 2, 3, 4

Page 13: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

2. fejezet

Változók, operátorok

Az alábbi feladatokat az alábbi kódot néhány scanf-el es egyetlen printf-elkiegeszıtve, es a printf parameterekent megadott osszetett kifejezessel oldjameg!

1 #include <s t d i o . h>2 #include <s t d l i b . h>34 int main ( ) {5 int a , b , c ;6 char ch1 , ch2 ;78 // Ide i r j a a megoldast !910 return 0 ;11 }

1.2.1. feladat Irja ki a kepernyore, hogy az elso szam nagyobb-e minta masodik:

Kerem az elso szamot: 5 ←↩Kerem a masodik szamot: 5 ←↩Az elso szam nagyobb-e mint a masodik: nem

Kerem az elso szamot: 10 ←↩Kerem a masodik szamot: 5 ←↩Az elso szam nagyobb-e mint a masodik: igen

1.2.2. feladat Irja ki a kepernyore a 2 szam kozul a legnagyobb erteket:

Kerem az elso szamot: 5 ←↩Kerem a masodik szamot: 15 ←↩A legnagyobb szam: 15

1.2.3. feladat Irja ki a kepernyore a 3 szam kozul a legnagyobb erteket:

13

Page 14: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

14 2. Változók, operátorok

Kerem az elso szamot: 5 ←↩Kerem a masodik szamot: 15 ←↩Kerem a harmadik szamot: 10 ←↩A legnagyobb szam: 15

1.2.4. feladat Irja ki a kepernyore a 3 szam kozul a legkisebb erteket:

Kerem az elso szamot: 5 ←↩Kerem a masodik szamot: 15 ←↩Kerem a harmadik szamot: 10 ←↩A legkisebb szam: 5

1.2.5. feladat Irja ki a kepernyore a ket legnagyobb szam erteket:

Kerem az elso szamot: 25 ←↩Kerem a masodik szamot: 15 ←↩Kerem a harmadik szamot: 30 ←↩A ket legnagyobb szam: 25, 30

1.2.6. feladat Irja ki a kepernyore a legkisebb es legnagyobb szamosszeget:

Kerem az elso szamot: 25 ←↩Kerem a masodik szamot: 15 ←↩Kerem a harmadik szamot: 30 ←↩Az osszeg: 45

1.2.7. feladat Irja ki, hogy az elso szam negatıv-e:

Kerem az elso szamot: 25 ←↩A szam nem negativ

Kerem az elso szamot: 0 ←↩A szam nem negativ

Kerem az elso szamot: -5 ←↩A szam negativ

1.2.8. feladat Irja ki, hogy az elso szam negatıv-e, majd novelje meg azelso szam erteket a kiıratas utan, most a noveles ellenorzesere hasznalhat egymasodik printf hıvast is:

Kerem az elso szamot: 25 ←↩A szam nem negativAz elso szam erteke az elozo kiiratas utan: 26

Kerem az elso szamot: 0 ←↩A szam nem negativAz elso szam erteke az elozo kiiratas utan: 1

Page 15: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

15

Kerem az elso szamot: -5 ←↩A szam negativAz elso szam erteke az elozo kiiratas utan: -4

1.2.9. feladat Irja ki a kepernyore, hogy igaz-e az, hogy az elso szamkettovel nagyobb, mint a masodik:

Kerem az elso szamot: 7 ←↩Kerem a masodik szamot: 5 ←↩Igen, az elso 2-vel nagyobb, mint a masodik

Kerem az elso szamot: 7 ←↩Kerem a masodik szamot: 6 ←↩Nem, az elso nem 2-vel nagyobb, mint a masodik

1.2.10. feladat Irja ki a kepernyore, hogy igaz-e az, hogy az elso szamkettovel nagyobb, mint a masodik, vagy a harmadik 3-al kisebb, mint az elso:

Kerem az elso szamot: 7 ←↩Kerem a masodik szamot: 5 ←↩Kerem a harmadik szamot: 6 ←↩A harom szam megfelel a feltetelnek

Kerem az elso szamot: 7 ←↩Kerem a masodik szamot: 6 ←↩Kerem a harmadik szamot: 4 ←↩A harom szam megfelel a feltetelnek

Kerem az elso szamot: 7 ←↩Kerem a masodik szamot: 6 ←↩Kerem a harmadik szamot: 5 ←↩A harom szam nem felel meg a feltetelnek

1.2.11. feladat Irja ki a kepernyore, hogy igaz-e az, hogy az elso szama masodiknal nagyobb, es a harmadiknal kisebb:

1.2.12. feladat Irja ki a kepernyore, hogy igaz-e az, hogy az elso es amasodik szam kulonbsege 5-nel nagyobb:

1.2.13. feladat Irja ki a kepernyore, hogy igaz-e az, hogy az elso es amasodik szam kulonbsege 5-nel nagyobb, vagy 5-el egyenlo:

1.2.14. feladat Irja ki a kepernyore, hogy igaz-e az, hogy az elso szamoszthato a masodikkal, de a harmadikkal nem:

Page 16: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

16 2. Változók, operátorok

1.2.15. feladat Irja ki a kepernyore, hogy igaz-e az, hogy az elso szamoszthato a masodikkal, es a harmadikkal osztva a maradek 4 lesz:

1.2.16. feladat Irja ki a kepernyore, hogy igaz-e az, hogy az elso szamoszthato a masodikkal, es a harmadikkal osztva a maradek nagyobb-e mint 5,es a harom szam osszege 50 es 100 kozott van-e:

1.2.17. feladat Irja ki a kepernyore, hogy igaz-e az, hogy ha az elsoszamot bitenkent balra 2-vel, majd a masodikat jobbra 3-al eltoljuk, es a ketszamot osszeadjuk, akkor az eredmeny oszthato-e a harmadik szammal:

1.2.18. feladat Irja ki a 3 szam kozul a legkisebb szam erteket akepernyore, majd a kiıras utan nojon egyel a valtozo erteke:

1.2.19. feladat Irja ki a kepernyore, hogy igaz-e az, hogy a ch1 karakteraz angol ABC kisbetui kozul valamelyik:

1.2.20. feladat Irja ki a kepernyore, hogy igaz-e az, hogy a ch1 karakterszamjegy-e:

1.2.21. feladat Irja ki a kepernyore, hogy igaz-e az, hogy a ch1 karak-ter szerepelhet-e egy lebegopontos szam kiırasa kozben (tehat szamjegyen kıvullehet ’.’, ’-’, ’+’, ’e’ vagy ’E’ karakter is):

1.2.22. feladat Ha a ch1 karakter az angol ABC kisbetui kozul vala-melyik, akkor ırassa ki a kepernyore a nagybetus valtozatat, egyebkent pedigaz eredeti betut:

1.2.23. feladat Ha a ch1 karakter az angol ABC nagybetui kozulvalamelyik, akkor ırassa ki a kepernyore a kisbetus valtozatat, ha a ch1 kisbetu,akkor a nagybetus megfelelojet ırja ki

Page 17: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

17

1.2.24. feladat Bovıtse ki az elozo programot ugy, hogy ha a ch1 nemtartozik az angol ABC betui koze, akkor ırjon ki hibauzenetet:

1.2.25. feladat Irassa ki az elso szam ellentetjet:

1.2.26. feladat Irassa ki az elso es masodik szam osszegenek ellentetjet:

1.2.27. feladat Irassa ki, hogy igaz-e az, hogy az elso ket szamnegyzetosszege nagyobb-e mint a harmadik szam:

1.2.28. feladat Irja ki, hogy a beolvasott ch1 valtozo 5. bitjenek mi azerteke (a bitek sorszamozasat 0-rol kezdjuk):

Gepeljen be egy karaktert: A ←↩Az 5. bit erteke: 0

Gepeljen be egy karaktert: a ←↩Az 5. bit erteke: 1

1.2.29. feladat Bovıtse ki az elozo programot ugy, hogy a ch1 valtozoosszes bitjet kiırja a kepernyore:

Gepeljen be egy karaktert: A ←↩A bitminta: 01000001

Gepeljen be egy karaktert: a ←↩A bitminta: 01100001

1.2.30. feladat Invertalja a ch1 valtozo bitjeit:

Gepeljen be egy karaktert: A ←↩A bitminta invertalas elott: 01000001A bitminta invertalas utan: 010111110

Gepeljen be egy karaktert: m ←↩A bitminta invertalas elott: 01101101A bitminta invertalas utan: 010010010

1.2.31. feladat Allıtsa be a ch1 valtozo 4. bitjet 1-re:

Gepeljen be egy karaktert: A ←↩A bitminta a modositas elott: 01000001A bitminta a modositas utan: 001010001

Page 18: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

18 2. Változók, operátorok

1.2.32. feladat Allıtsa be a ch1 valtozo 6. bitjet 0-ra:

Gepeljen be egy karaktert: A ←↩A bitminta a modositas elott: 01000001A bitminta a modositas utan: 000000001

1.2.33. feladat Allıtsa be a ch1 valtozo 2. 5 es 6. bitjet 1-re:

Gepeljen be egy karaktert: A ←↩A bitminta a modositas elott: 01000001A bitminta a modositas utan: 001100101

1.2.34. feladat Allıtsa be a ch1 valtozo 0., 1. es 3. bitjet 0-ra:

Gepeljen be egy karaktert: m ←↩A bitminta a modositas elott: 01101101A bitminta a modositas utan: 001100100

1.2.35. feladat A ch1 valtozo minden bitjet tolja el balra 1-el, es alegkisebb helyierteku bitje legyen 0:

Gepeljen be egy karaktert: m ←↩A bitminta a modositas elott: 01101101A bitminta a modositas utan: 011011010

1.2.36. feladat A ch1 valtozo minden bitjet tolja el balra 1-el, es alegkisebb helyierteku bitje legyen 1:

Gepeljen be egy karaktert: m ←↩A bitminta a modositas elott: 01101101A bitminta a modositas utan: 011011011

1.2.37. feladat Allapıtsa meg, hogy a ch1 es ch2 valtozonak vannak-eolyan azonos helyierteku bitparjai, amelyek ertekei rendre megegyeznek:

Gepelje be az elso karaktert: m ←↩Gepelje be a masodik karaktert: a ←↩Az elso karakter bitmintaja: 0001101101A masodik karakter bitmintaja: 01000001Vannak egyezo bitek

1.2.38. feladat Irassa ki, hogy hany bitet foglal el egy int tıpusuvaltozo az adott architekturan:

1.2.39. feladat Irassa ki, hogy a short vagy az int tıpusu valtozofoglal-e tobb bajtot:

Page 19: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

19

1.2.40. feladat Elofordulhat-e az az ANSI C szabvany szerint, hogy afloat, double es long double tıpusu valtozok merete azonos?

1.2.41. feladat Ekvivalens-e egymassal a kovetkezo ket kifejezes?

1 x ∗= y + 12 x = x ∗ y + 1

1.2.42. feladat Mi lesz az erteke a kovetkezo kifejezesnek, es miert?

1 4 < 5 < 3

1.2.43. feladat Mi lesz az erteke az a, b, es c valtozoknak az alabbikodreszlet vegrehajtasa utan, es miert?

1 int a = 2 ;2 int b = 0 ;3 int c = −1;4 a | | b++ && c−−;

1.2.44. feladat Mi lesz az erteke az a, b, es c valtozoknak az alabbikodreszlet vegrehajtasa utan, es miert?

1 int a = −1;2 int b = 0 ;3 int c = −1;4 a++ | | b++ && c−−;

1.2.45. feladat Mi lesz az erteke az a, b, es c valtozoknak az alabbikodreszlet vegrehajtasa utan, es miert?

1 int a = −1;2 int b = 0 ;3 int c = −1;4 ++a && b++ && c−−;

1.2.46. feladat Lehet-e abbol problema, ha egy unsigned int tıpusuvaltozot konvertalunk signed long-ra, ha igen, milyen problema, es miert?

1.2.47. feladat Lehet-e abbol problema, ha egy double tıpusu valtozotkonvertalunk float-ra, ha igen, milyen problema, es miert?

1.2.48. feladat Lehet-e abbol problema, ha egy long int tıpusuvaltozot konvertalunk double-ra, ha igen, milyen problema, es miert?

1.2.49. feladat Lehet-e abbol problema, ha egy double tıpusu valtozotkonvertalunk long int-re, ha igen, milyen problema, es miert?

Page 20: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

20 2. Változók, operátorok

Page 21: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

3. fejezet

Vezérlési szerkezetek

3.1. Programozási tételek

3.1.1. CsereVan ket valtozonk, (A es B), es azok erteket szeretnenk felcserelni. Az egyiklehetseges modszer az, hogy hasznalunk egy segedvaltozot. Ebbe elmentjuk azA valtozo erteket:SEGED = AMivel A erteket ıgy elmentettuk, felulırhatjuk B ertekevel:A = BMajd B erteket felulırjuk A eredeti ertekevel, amit most a SEGED-ben tarolunk:B = SEGED

3.1.2. Lineáris keresés

3.1.3. Eldöntés

3.1.4. Megszámlálás

3.1.5. Minimum kiválasztás

3.1.6. Rendezés

3.2. FeladatokA kovetkezo feladatokat az alabbi forraskodot kiegeszıtve oldja meg. A peldakimenetekben az elso bekert szam az i1, a masodik az i2 es a harmadik pedigaz i3 valtozo.

Bizonyos feladatokat ugy is meg lehetne oldani, hogy egy keplettel kiszamıtjukaz eredmenyt (peldaul egy intervallumon belul az egesz szamok osszege), ammost gyakorlas celjabol tekintsunk el ezektol a kepletektol, es ezek nelkul oldjukmeg a feladatokat. Minden algoritmusnal gondoljuk vegig a szelsoseges eseteketis!

21

Page 22: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

22 3. Vezérlési szerkezetek

1 #include <s t d i o . h>23 int main ( ) {45 int i1 , i2 , i 3 ;6 p r i n t f ( ” Gepel jen be 3 szamot : ” ) ;7 s can f ( ”%d %d %d” , &i1 , &i2 , &i 3 ) ;89 // Ide i r j a a megoldast !1011 return 0 ;12 }

1.3.1. feladat Rajzoljon ki a kepernyore egy i1 sorbol es i2 oszlopbolallo * karakterekkel kitoltott teglalapot:

Gepeljen be 2 szamot: 1 1 ←↩*

Gepeljen be 2 szamot: 3 4 ←↩************

1.3.2. feladat Rajzoljon ki a kepernyore egy i1 sorbol es i2 oszlopbolallo * karakterekkel hatarolt teglalapot:

Gepeljen be 2 szamot: 1 1 ←↩*

Gepeljen be 2 szamot: 2 4 ←↩********

Gepeljen be 2 szamot: 3 4 ←↩************

Gepeljen be 2 szamot: 5 6 ←↩******************************

1.3.3. feladat Rajzoljon ki a kepernyore egy i1 karakternyi magasderekszogu haromszoget:

Page 23: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

3.2. FELADATOK 23

Gepeljen be 1 szamot: 1 ←↩*

Gepeljen be 1 szamot: 2 ←↩***

Gepeljen be 1 szamot: 3 ←↩******

1.3.4. feladat Rajzoljon ki a kepernyore egy i1 karakter szelessegu esmagassagu X-et:

Gepeljen be 1 szamot: 1 ←↩*

Gepeljen be 1 szamot: 2 ←↩****

Gepeljen be 1 szamot: 3 ←↩* **** *

Gepeljen be 1 szamot: 4 ←↩**************

Gepeljen be 1 szamot: 5 ←↩*********************

1.3.5. feladat Adja ossze a szamokat i1-tol i2-ig:

Gepeljen be 2 szamot: 10 20 ←↩Az osszeg: 165

1.3.6. feladat Adjon ossze minden i1. szamot i2-tol i3-ig:

Gepeljen be 3 szamot: 2 10 20 ←↩Az osszeg: 90

Page 24: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

24 3. Vezérlési szerkezetek

1.3.7. feladat Szamolja ki i1 faktorialisat! Egy n szam faktorialisa azegesz szamok szorzata 1-tol n-ig, tovabba a 0 faktorialisa 1:

Gepeljen be 1 szamot: 0 ←↩0 faktorialisa: 1

Gepeljen be 1 szamot: 1 ←↩1 faktorialisa: 1

Gepeljen be 1 szamot: 2 ←↩2 faktorialisa: 2

Gepeljen be 1 szamot: 3 ←↩3 faktorialisa: 6

Gepeljen be 1 szamot: 4 ←↩4 faktorialisa: 24

1.3.8. feladat Irassa ki kepernyore a Fibonacci-sorozat elso i1 elemet.A Fibonacci sorozat i. elemet jelolje Fi, ahol i ≥ 0. Az elso ket elem erteke:F0 = 0, F1 = 1. Ha i ≥ 2, akkor Fi = Fi−1 + Fi−2.

Gepeljen be 1 szamot: 10 ←↩Az elso 10 Fibonacci szam: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34

1.3.9. feladat Vizsgalja meg, hogy az int tıpus legfeljebb mekkora Nszam faktorialisanak tarolasara alkalmas:

00 faktorialisa: 101 faktorialisa: 102 faktorialisa: 203 faktorialisa: 604 faktorialisa: 2405 faktorialisa: 12006 faktorialisa: 72007 faktorialisa: 504008 faktorialisa: 4032009 faktorialisa: 36288010 faktorialisa: 362880011 faktorialisa: 3991680012 faktorialisa: 47900160013 faktorialisa: 6227020800ez mar nagyobb, mint 2147483647

A legnagyobb ertek, amelynek faktorialisat egy int-ben tarolnitudjuk: 12

1.3.10. feladat Irassa ki egy mertani sorozat elso i1 elemet, ha az elsoelem i2, es a szorzo i3 :

Page 25: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

3.2. FELADATOK 25

Gepeljen be 3 szamot: 10 2 3 ←↩2 6 18 54 162 486 1458 4374 13122 39366

1.3.11. feladat Szamolja ki az i1 i2-edik hatvanyat, de csak akkor,ha i2 nem negatıv :

Gepeljen be 2 szamot: 0 0 ←↩0ˆ0 = nem ertelmezheto

Gepeljen be 2 szamot: 4 0 ←↩4ˆ0 = 1

Gepeljen be 2 szamot: 0 5 ←↩0ˆ5 = 0

Gepeljen be 2 szamot: 1 5 ←↩1ˆ5 = 1

Gepeljen be 2 szamot: 2 5 ←↩2ˆ5 = 32

Gepeljen be 2 szamot: 3 5 ←↩3ˆ5 = 243

Gepeljen be 2 szamot: 4 5 ←↩4ˆ5 = 1024

1.3.12. feladat Szamolja ki az i1 i2-edik hatvanyat es kezelje azt azesetet is, amikor i2 negatıv:

Gepeljen be 2 szamot: 0 -4 ←↩Hiba, ervenytelen adatok!

Gepeljen be 2 szamot: 1 -4 ←↩1ˆ-4 = 1

Gepeljen be 2 szamot: 2 -4 ←↩2ˆ-4 = 0.0625

Gepeljen be 2 szamot: 3 -4 ←↩3ˆ-4 = 0.0123457

Gepeljen be 2 szamot: 4 -4 ←↩4ˆ-4 = 0.00390625

Gepeljen be 2 szamot: 5 -4 ←↩5ˆ-4 = 0.0016

1.3.13. feladat Irja ki a kepernyore i1 osztoit :

Page 26: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

26 3. Vezérlési szerkezetek

Gepeljen be 1 szamot: 1 ←↩1

Gepeljen be 1 szamot: 2 ←↩1 2

Gepeljen be 1 szamot: 10 ←↩1 2 5 10

Gepeljen be 1 szamot: 17 ←↩1 17

Gepeljen be 1 szamot: 100 ←↩1 2 4 5 10 20 25 50 100

1.3.14. feladat Hatarozza meg, hogy i1 prımszam-e:

Gepeljen be 1 szamot: 1 ←↩A(z) 1 nem primszam

Gepeljen be 1 szamot: 2 ←↩A(z) 2 primszam

Gepeljen be 1 szamot: 3 ←↩A(z) 3 primszam

Gepeljen be 1 szamot: 4 ←↩A(z) 4 nem primszam

Gepeljen be 1 szamot: 11223 ←↩A(z) 11223 nem primszam

Gepeljen be 1 szamot: 79609 ←↩A(z) 79609 primszam

1.3.15. feladat Hatarozza meg az i1 utan kovetkezo elso prımszamerteket:

Gepeljen be 1 szamot: 1 ←↩A(z) 1 utani elso primszam: 2

Gepeljen be 1 szamot: 3 ←↩A(z) 3 utani elso primszam: 5

Gepeljen be 1 szamot: 100 ←↩A(z) 100 utani elso primszam: 101

Gepeljen be 1 szamot: 1232 ←↩A(z) 1232 utani elso primszam: 1237

Page 27: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

3.2. FELADATOK 27

1.3.16. feladat Hatarozza meg, hogy i1 negyzetszam-e:

Gepeljen be 1 szamot: 1 ←↩A(z) 1 negyzetszam

Gepeljen be 1 szamot: 2 ←↩A(z) 2 nem negyzetszam

Gepeljen be 1 szamot: 4 ←↩A(z) 4 negyzetszam

Gepeljen be 1 szamot: 10 ←↩A(z) 10 nem negyzetszam

Gepeljen be 1 szamot: 49 ←↩A(z) 49 negyzetszam

Gepeljen be 1 szamot: 32244 ←↩A(z) 32244 nem negyzetszam

Gepeljen be 1 szamot: 28558336 ←↩A(z) 28558336 negyzetszam

1.3.17. feladat Szamolja meg, hogy i1 elott i1-t is vizsgalva) mennyinegyzetszam van:

Gepeljen be 1 szamot: 1 ←↩A(z) 1 elott 1 negyzetszam van

Gepeljen be 1 szamot: 100 ←↩A(z) 100 elott 10 negyzetszam van

Gepeljen be 1 szamot: 212341 ←↩A(z) 212341 elott 460 negyzetszam van

1.3.18. feladat Szamolja meg, hogy i1 es i2 kozott ( i1-t es i2-t isvizsgalva) mennyi negyzetszam van:

Gepeljen be 2 szamot: 1 1 ←↩A [1, 1] intervallumban 1 negyzetszam van

Gepeljen be 2 szamot: 1 10 ←↩A [1, 10] intervallumban 3 negyzetszam van

Gepeljen be 2 szamot: 1 100 ←↩A [1, 100] intervallumban 10 negyzetszam van

Gepeljen be 2 szamot: 232 3242 ←↩A [232, 3242] intervallumban 41 negyzetszam van

Page 28: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

28 3. Vezérlési szerkezetek

1.3.19. feladat Olvasson be a billentyuzetrol szamokat 0 vegjelig (tehatha a beolvasott szam 0, akkor vege a beolvasasnak), es szamolja meg, hogy a0-t kiveve mennyi szamot olvasott be:

Kerek egy szamot: 4 ←↩Kerek egy szamot: 2 ←↩Kerek egy szamot: 8 ←↩Kerek egy szamot: 5 ←↩Kerek egy szamot: 7 ←↩Kerek egy szamot: 0 ←↩5 szamot olvastam be

1.3.20. feladat Olvasson be a billentyuzetrol szamokat 0 vegjelig, es avegjelen kıvul hatarozza meg a legnagyobb beolvasott elemet:

Kerek egy szamot: 4 ←↩Kerek egy szamot: 2 ←↩Kerek egy szamot: 8 ←↩Kerek egy szamot: 7 ←↩Kerek egy szamot: 0 ←↩A legnagyobb beolvasott szam: 8

Kerek egy szamot: -5 ←↩Kerek egy szamot: -7 ←↩Kerek egy szamot: 0 ←↩A legnagyobb beolvasott szam: -5

1.3.21. feladat Olvasson be a billentyuzetrol szamokat 0 vegjelig, es avegjelen kıvul hatarozza meg a legkisebb beolvasott elemet:

Kerek egy szamot: 4 ←↩Kerek egy szamot: 2 ←↩Kerek egy szamot: 8 ←↩Kerek egy szamot: 7 ←↩Kerek egy szamot: 0 ←↩A legkisebb beolvasott szam: 2

1.3.22. feladat Olvasson be a billentyuzetrol szamokat 0 vegjelig, esszamolja meg, hogy mennyi paros szamot olvasott be:

Kerek egy szamot: 4 ←↩Kerek egy szamot: 2 ←↩Kerek egy szamot: 8 ←↩Kerek egy szamot: 7 ←↩Kerek egy szamot: 0 ←↩3 paros szamot olvastam be

1.3.23. feladat Olvasson be a billentyuzetrol szamokat 0 vegjelig, esszamolja ki a beolvasott szamok atlagat, a vegjelet ne vegye figyelembe:

Page 29: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

3.2. FELADATOK 29

Kerek egy szamot: 4 ←↩Kerek egy szamot: 2 ←↩Kerek egy szamot: 8 ←↩Kerek egy szamot: 7 ←↩Kerek egy szamot: 0 ←↩A szamok atlaga: 5.25

1.3.24. feladat Egy dolgozat ponthatarai a kovetkezok:

• 0 - 12 : elegtelen

• 13 - 18 : elegseges

• 19 - 27 : kozepes

• 28 - 31 : jo

• 32 - 39 : jeles

A program ırja ki, hogy i1 pontszam eseten milyen jegy adhato az adott dol-gozatra:

Gepeljen be 1 szamot: 1 ←↩Az erdemjegy: elegtelen

Gepeljen be 1 szamot: 12 ←↩Az erdemjegy: elegtelen

Gepeljen be 1 szamot: 20 ←↩Az erdemjegy: elegseges

Gepeljen be 1 szamot: 32 ←↩Az erdemjegy: jeles

1.3.25. feladat Switch - case segıtsegevel hatarozza meg, hogy az i1.honap i2. napjaig hany nap telt el az evben, ha nem szokoevben vagyunk.:

Kerem a honapot: 5 ←↩Kerem a napot: 20 ←↩Az eltelt napok szama: 140

1.3.26. feladat Switch - case segıtsegevel hatarozza meg, hogy az i1evben a i2. honap i3. napjaig hany nap telt el az evben, de most vegyefigyelembe azt is, ha szokoevben vagyunk:

Kerem az evet: 1993 ←↩Kerem a honapot: 5 ←↩Kerem a napot: 20 ←↩Az eltelt napok szama: 140

Kerem az evet: 2000 ←↩Kerem a honapot: 5 ←↩

Page 30: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

30 3. Vezérlési szerkezetek

Kerem a napot: 20 ←↩Az eltelt napok szama: 141

1.3.27. feladat Valosıtson meg egy egyszeru menut! A program jelenıtsenmeg 4 valasztasi lehetoseget, amik kozul 1 es 4 kozotti szamok beırasaval lehes-sen valasztani, es a valasztasnak megfeleloen ırjon ki egy uzenetet:

Elso menupont: 1Masodik menupont: 2Harmadik menupont: 3Negyedik menupont: 4Valasszon a fenti menupontok kozul: 2 ←↩

Ugyintezonk ebredeseig kerjuk varjon turelemmel

1.3.28. feladat Bovıtse ki az elozo programot ugy, hogy a menupontvalasztas utan kerdezze meg a felhasznalot, hogy szeretne-e ujra valasztani, haigen, akkor jelenjen meg ujra a menu, egyebkent lepjen ki:

Elso menupont: 1Masodik menupont: 2Harmadik menupont: 3Negyedik menupont: 4Valasszon a fenti menupontok kozul: 1 ←↩

Sajnaljuk, de ugyintezonknek jelenleg nincs kedve az On problemajavalfoglalkozniKivan masik menupontot kivalasztani (i/n)? i ←↩

Elso menupont: 1Masodik menupont: 2Harmadik menupont: 3Negyedik menupont: 4Valasszon a fenti menupontok kozul: 3 ←↩

Jelenleg fontosabb dolgunk is van, mint Onnel foglalkozniKivan masik menupontot kivalasztani (i/n)? n ←↩Forduljon hozzank maskor is bizalommal!

1.3.29. feladat Modosıtsa az elozo programot ugy, hogy minden eddigimenupontbol terjen vissza a menube, es legyen egy kilepes menupont is :

Elso menupont: 1Masodik menupont: 2Harmadik menupont: 3Negyedik menupont: 4Kilepes: 5Valasszon a fenti menupontok kozul: 4 ←↩

Probalta kikapcsolni, bekapcsolni?

Page 31: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

3.2. FELADATOK 31

Elso menupont: 1Masodik menupont: 2Harmadik menupont: 3Negyedik menupont: 4Kilepes: 5Valasszon a fenti menupontok kozul: 5 ←↩Forduljon hozzank maskor is bizalommal!

1.3.30. feladat Fejlessze tovabb az elozo programot egyszeru szamologepprogramma: lehessen valasztani a negy alapmuvelet kozul, es vegezze el akivalasztott muveletet ket bekert szam kozott. Amennyiben osztas eseten azoszto nulla, akkor jelenıtsen meg egy hibauzenetet, majd addig kerje be azosztot, amıg a felhasznalo nullatol kulonbozo erteket nem ır be:

Osszeadas: 1Kivonasz: 2Szorzas: 3Osztas: 4Kilepes: 5Valasszon egy menupontot: 2 ←↩Kerem a szamokat: 5 3 ←↩5 - 3 = 2

Osszeadas: 1Kivonasz: 2Szorzas: 3Osztas: 4Kilepes: 5Valasszon egy menupontot: 4 ←↩Kerem a szamokat: 5 0 ←↩Uriember nem oszt 0-val, kerek masik osztot: 0 ←↩Uriember nem oszt 0-val, kerek masik osztot: 2 ←↩5 / 2 = 2.5

Osszeadas: 1Kivonasz: 2Szorzas: 3Osztas: 4Kilepes: 5Valasszon egy menupontot: 5 ←↩Viszlat

1.3.31. feladat Toltson fel egy 10 elemu int tombot szamokkal, aszamokat billentyuzetrol olvassa be:

Kerem a(z) 1. szamot: 5 ←↩Kerem a(z) 2. szamot: 2 ←↩..

Page 32: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

32 3. Vezérlési szerkezetek

.Kerem a(z) 10. szamot: 8 ←↩

1.3.32. feladat Irassa ki a fenti tomb elemeit:

A beolvasott tomb:5 20 6 7 2 3 63 5 6 12

1.3.33. feladat Hatarozza meg a tomb legnagyobb es legkisebb elemet:

A tomb legnagyobb eleme: 63A tomb legkisebb eleme: 2

1.3.34. feladat Cserelje meg a tomb elso es masodik elemet:

Csere elott:5 20 6 7 2 3 63 5 6 12Csere utan:20 5 6 7 2 3 63 5 6 12

1.3.35. feladat Cserelje meg a tomb elso es a legkisebb elemet:

Csere elott:5 20 6 7 2 3 63 5 6 12Csere utan:2 20 6 7 5 3 63 5 6 12

1.3.36. feladat Az elozo programot bovıtse ki ugy, hogy rendezzenovekvo sorrendbe a tombot:

Csere elott:5 20 6 7 2 3 63 5 6 12Legkisebb elem: 2, pozicioja: 51. es 5. elem csereje utan:2 20 6 7 5 3 63 5 6 12Kovetkezo legkisebb elem: 3, pozicioja: 62. es 6. elem csereje utan:2 3 6 7 5 20 63 5 6 12Kovetkezo legkisebb elem: 5, pozicioja: 53. es 5. elem csereje utan:2 3 5 7 6 20 63 5 6 12Kovetkezo legkisebb elem: 5, pozicioja: 74. es 7. elem csereje utan:2 3 5 5 6 20 63 7 6 12Kovetkezo legkisebb elem: 6, pozicioja: 55. es 5. elem csereje utan:2 3 5 5 6 20 63 7 6 12Kovetkezo legkisebb elem: 6, pozicioja: 96. es 9. elem csereje utan:

Page 33: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

3.2. FELADATOK 33

2 3 5 5 6 6 63 7 20 12Kovetkezo legkisebb elem: 7, pozicioja: 87. es 8. elem csereje utan:2 3 5 5 6 6 7 63 20 12Kovetkezo legkisebb elem: 12, pozicioja: 108. es 10. elem csereje utan:2 3 5 5 6 6 7 12 20 63Kovetkezo legkisebb elem: 20, pozicioja: 99. es 9. elem csereje utan:2 3 5 5 6 6 7 12 20 63

1.3.37. feladat Modosıtsa az elozo programot ugy, hogy csokkenosorrendbe rendezzen!

1.3.38. feladat Egy masik tombbe masolja at az elozo feladatokbanhasznalt tombbol a paros szamokat. A szamok sorrendje tetszoleges lehet:

Az elso tomb:5 20 6 7 2 3 63 5 6 12A masodik tomb:20 6 2 6 12

1.3.39. feladat Hatarozza meg egy string hosszat (sajat ciklussal, es neaz strlen-el!), segıtseg: a string karaktertomb ’\0’-val van lezarva.

A string: "ez egy szoveg"Hossza: 13

1.3.40. feladat Vizsgalja meg, hogy egy string palindrom-e (azaz elolrololvasva ugyanaz-e mint visszafele), peldaul.: gorog, keretkarakterek:

String: "gorog"Ez palindromString: "keretkarakterek"Ez palindromString: "alma"Ez nem palindrom

1.3.41. feladat Irjon programot, amely egy tomb elemeinek sorrendjetmegfordıtja:

A tomb megforditas elott:5 20 6 7 2 3 63 5 6 12A tomb megforditas utan:12 6 5 63 3 2 7 6 20 5

1.3.42. feladat Irjon programot, amely egy tomb elemeit a tombon belulegyel elorebb tolja, es az eredeti elso elemet az utolso helyre illeszti be:

Page 34: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

34 3. Vezérlési szerkezetek

A tomb az eltolas elott:5 20 6 7 2 3 63 5 6 12A tomb az eltolas utan:20 6 7 2 3 63 5 6 12 5

1.3.43. feladat Irjon programot, amely eldonti, hogy egy adott ertekbenne van-e egy tombben:

A tomb:5 20 6 7 2 3 63 5 6 12Gepeljen be 1 szamot: 2 ←↩A(z) 2 benne van a tombbenGepeljen be 1 szamot: 4 ←↩A(z) 4 nincs benne a tombben

1.3.44. feladat Gondolja vegig, hogy az elozo feladatban hany lepesrevan szukseg

• a legjobb esetben

• a legrosszabb esetben

• atlagosan

1.3.45. feladat Irjon olyan algoritmust, amely egy rendezett tombbenkeres egy adott erteket, kihasznalva a tomb rendezettseget.

1.3.46. feladat Az elozo algoritmusban hany lepesre van szukseg

• a legjobb esetben

• a legrosszabb esetben

1.3.47. feladat Irjon programot, amely ket azonos elemszamu tombroleldonti, hogy az azonos indexu elemeik mind megegyeznek-e:

Az egyik tomb:5 20 6 7 2 3 63 5 6 12A masik tomb:5 20 6 7 2 3 63 5 6 12A ket tomb megegyezik

Az egyik tomb:4 20 7 6 2 3 61 5 6 12A masik tomb:5 20 6 7 2 3 63 5 6 12A ket tomb nem egyezik meg

Az egyik tomb:4 20 7 6 2 3 61 5 6 12

Page 35: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

3.2. FELADATOK 35

A masik tomb:5 20 6 7 2 3 63 5 6A ket tomb nem egyezik meg

1.3.48. feladat Irjon programot, amely ket azonos elemszamu tombeseten megszamolja, hogy mennyi azonos indexu elemuk egyezik meg:

Az egyik tomb:4 20 7 6 2 3 61 5 6 12A masik tomb:5 20 6 7 2 3 63 5 6 126 elem egyezik meg

1.3.49. feladat Irjon programot, amely eldonti, hogy egy adott A esB tomb eseten az A tomb elemei mind benne vannak-e B tombben ugy, hogyaz elemek sorrendje barmilyen lehet a tombokon belul. Az ismetlodo elemekazonosnak tekinthetok:

A tomb:4 20 7 6 2 3 61 5 6 12B tomb:2 3 8 3A tomb elemei nincsenek benne mind a B-benB tomb elemei mind benne vannak az A-ban

1.3.50. feladat Irjon programot, amely kiszamolja egy tomb elemeinekatlagat, szorasat, a legnagyobb es legkisebb elem kulonbseget:

A tomb elemei:4 20 7 6 2 3 61 5 6 12Atlag: 12.6Szoras: 16.88905 Legnagyobb es legkisebb elem kulonbsege: 59

1.3.51. feladat Irjon programot, amely meghatarozza egy tomb leggya-koribb elemeit:

A tomb elemei:4 20 7 6 2 3 61 5 6 12A tomb leggyakoribb elemei: 6

A tomb elemei:4 20 7 6 2 3 61 5 6 2A tomb leggyakoribb elemei: 2 6

Page 36: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

36 3. Vezérlési szerkezetek

Page 37: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

4. fejezet

Függvények

4.1. FüggvényhívásokAz alabbiakban ismertetjuk, hogy a C programok fuggvenyhıvasai milyen me-chanizmus szerint jatszodnak le. Ennek ismerete azert szukseges, hogy ertsukazt, hogy a fuggvenyek parameterei, lokalis valtozoi hova kerulnek, hogy ke-zeli azokat a program. Tovabba, ezen informaciok birtokaban bizonyos vegzeteshibak elkerulesere is tudatosan felkeszulhetunk.

Kezdetben vizsgaljuk meg az alabbi programot:

1 #include <s t d i o . h>23 void fv ( ) {4 p r i n t f ( ” fv \n” ) ;5 }67 int main ( ) {8 p r i n t f ( ”main\n” ) ;9 fv ( ) ;10 return 0 ;11 }

A program a main fuggveny elso utasıtasaval indul (8-as sor). Amintelerkezik az fv() sorhoz, a vezerles atugrik az fv fuggveny elso sorara (4-es sor). Miutan az fv fuggveny utolso utasıtasa is vegrehajtodott, a vezerlesvisszalep a main fuggvenybe, megpedig oda, ahol annak a futasa megszakadt(9-es sor). A kerdes az, hogy a program honnan tudja, hogy az fv fuggvenybefejezese utan a main fuggvenybe kell visszalepni, megpedig a kod 9. sorara?Eloszor arra gondolhatunk, hogy a C fordıto biztos olyan gepi kodot fordıtott aforraskodbol, hogy a vezerles az fv utolso sora utan mindig a main fuggvenymegfelelo soraba ugorjon. Am tekintsuk meg a kovetkezo programot:

37

Page 38: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

38 4. Függvények

1 #include <s t d i o . h>23 void fv1 ( ) {4 p r i n t f ( ” fv1 \n” ) ;5 }67 void fv2 ( ) {8 p r i n t f ( ” fv2 \n” ) ;9 fv1 ( ) ;10 p r i n t f ( ” fv1 h ivas utan , de az fv2−ben\n” ) ;11 }1213 int main ( ) {14 p r i n t f ( ”main\n” ) ;15 fv2 ( ) ;16 p r i n t f ( ” fv2 h ivas utan , de a main−ben\n” ) ;17 fv1 ( ) ;18 p r i n t f ( ” fv1 h ivas utan , de a main−ben\n” ) ;19 return 0 ;20 }

Ennek a programnak a kimenete a kovetkezo:

mainfv2fv1fv1 hivas utan, de az fv2-benfv2 hivas utan, de a main-benfv1fv1 hivas utan, de a main-ben

Tehat eloszor meghıvjuk az fv2 fuggvenyt, az pedig meghıvja az fv1-et.Az fv1 vegrehajtasa utan a program ujra az fv2-ben folytatodik, megpediga forraskod 10. soraban. Viszont az fv1-et kulon meghıvjuk a main-bol is,ekkor viszont az fv1 lefutasa utan mar a forraskod 18. soraban folytatodika vegrehajtas. Nem igaz tehat, hogy a fordıto ”beegeti”, hogy egy fuggvenyvegrehajtasa utan hol kell folytatodnia a vezerlesnek. Tehat valami modon megkell jegyezni, hogy egy fuggvenyhıvas vegrehajtasa utan hol kell folytatodnia aprogramnak. Erre hasznalhatunk egy listat, amire minden fuggvenyhıvas elottfeljegyezzuk, hogy ha vegrehajtottuk a fuggvenyt, akkor hol kell folytatodnia aprogramnak. Erre a listara ırjuk fel a forraskod megfelelo sorainak a szamat!Lassuk, hogy mukodik ez az elozo program eseteben:

Kezdetben a vezerles a kod 14. soran all. Miutan ezt vegrehajtottuk,raterunk a kovetkezo utasıtasra, ami egy fuggvenyhıvas (tulajdonkeppen azelozo sor is az volt, de erre meg visszaterunk). A 15. sor szerint el kell indıtaniaz fv2 fuggvenyt. Ezen a ponton tudjuk, hogy ha ez a fuggveny lefutott, akkora 16. sorban kell folytatni a programot. Ezert feljegyezzuk a 16. sort:

Page 39: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

4.1. FÜGGVÉNYHÍVÁSOK 39

16. sor

Elindıtjuk hat az fv2 fuggvenyt, raugrunk a 8. sorra. Ezt vegrehajtjuk,majd kovetkezik a 9. sor, ahol meghıvjuk az fv1 fuggvenyt. Itt tudjuk, hogyaz fv1 vegrehajtasa utan a kod 10. soraban kell folytatni a vegrehajtast, ezertezt is felırjuk a listankra:

10. sor16. sor

Atugrunk a kod 4. sorara, vegrehajtjuk, majd ezzel befejeztuk az fv1fuggvenyt. Ekkor megnezzuk, hogy melyik a legutolso sorszam a listankon. Je-len esetben ez a 10. sor, ezert ide ugrunk, majd a legutobbi bejegyzest toroljuka listarol:

16. sor

Miutan vegeztunk a 10. sorral is, befejezzuk az fv2 vegrehajtasat, ezertujra megnezzuk, hogy melyik a legutolso sorszam a listan. Ez a 16. sor, tehatide ugrunk, es ezt a bejegyzest is toroljuk a listarol:

A 16. sor utan jon a 17. ami egy ujabb fuggvenyhıvas, itt most az fv1-etkell elindıtani. Tudjuk, hogy miutan vegeztunk ezzel a fuggvennyel, a kod 18.soraban kell majd folytatni a programot, ezert ezt a sorszamot felırjuk a listara:

Page 40: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

40 4. Függvények

18. sor

Igy, miutan az fv1 lefutott, megnezzuk a lista legutolso bejegyzeset, ez a18. sor. Ugrunk a 18. sorra, majd toroljuk a listat.

A C programokban (es szinte minden mas nyelven ırt programokban is)hasznalnak ilyen listat a fuggvenyhıvasok vezerlesere. Az ilyen listakat szakszovalveremnek, vagy angolul stack-nek hıvjuk. A tovabbiakban a verem szot fog-juk hasznalni. A verem bizonyos elemeket, jelen esetben szamokat tarol. Averem teteje mindig az a pozıcio, ahova a legutolso elemet beszurtuk, es ujelem hozzaadasakor csak a verem tetejere pakolhatunk. Azaz, amit utoljarabeszurtunk, azt vehetjuk ki elsonek (last in, first out, azaz LIFO elv). Azt azerteket, ami jelzi, hogy az aktualis fuggveny vegrehajtasa utan melyik utasıtasonkell folytatni a programot, visszateresi cımnek nevezzuk. A cım szo onnan ered,hogy a program utasıtasai annak vegrehajtasakor a memoriaban talalhatoak,ıgy minden utasıtas mas es mas memoria cımen helyezkedik el, a verembe pedigilyen cımeket szurunk be.

A verem azonban nem csak visszateresi cımek tarolasara alkalmas. Tekintsukaz alabbi programot:

1 #include <s t d i o . h>23 void fv ( int p1 , int p2 ) {4 int l = 0 ;5 l = p1 + p2 ;6 p1 = 10 ;7 p r i n t f ( ”%d\n” , l ) ;8 }910 int main ( ) {11 int a = 2 , b = 5 ;12 fv ( a , b ) ;13 return 0 ;14 }

Ez a program tartalmaz valtozokat is. A main fuggvenyben vannak aza, b, az fv-ben pedig a p1, p2 es l valtozok. A main fuggvenybol nemlathatjuk az fv-ben levo valtozokat, mivel ezek lokalis valtozok: Ha a main-benhivatkoznank a p1-re, akkor a fordıto hibajelzes utan leallna. Hasonloan, azfv-bol sem lathatoak a main valtozoi. Amennyiben a main-ben letrehozunkegy p1 nevu valtozot, az semmilyen zavart nem fog okozni az fv mukodeseben,mivel itt ketto, egymastol teljesen elkulonulo p1 valtozo letezne a programban.Ez azert hasznos, mert egy nagyobb programban, ahol akar tobb ezer fuggvenyis lehet, nem kell arra ugyelni, hogy mikor melyik fuggvenyben milyen valtozoneveket hasznalunk. Ellenkezo esetben nagyobb programok fejlesztese hamargyotrelmes torturava valna.

Page 41: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

4.1. FÜGGVÉNYHÍVÁSOK 41

Ezek a lokalis valtozok szinten a veremben helyezkednek el. A kovetkezobenbemutatjuk, hogy hogyan fut le a fenti program, megpedig ugy, hogy a veremtartalmanak valtozasat is nyomon kovetjuk.

Mint minden C program, ez is a main fuggvennyel kezdodik. Itt letrejon aza es b valtozo, ıgy azokat belerakjuk a verembe:

b = 5a = 2

A kovetkezo lepesben meghıvjuk az fv fuggvenyt. Elotte azonban jegyezzukfel, hogy annak lefutasa utan a 13. sorban kell folytatni a vegrehajtast, ezertezt jegyezzuk fel a veremben:

13. sorb = 5a = 2

Az fv fuggvenynek vannak parameterei is: Az a es b erteket atadjukaz fv-nek, hogy azokat felhasznalhassa a futasa soran. A parameterek ertekeitszinten a verembe szurjuk be, eloszor a b, majd az a erteket:

25

13. sorb = 5a = 2

Ezek utan a vezerles atugrik az fv fuggvenyre. A fuggveny tudja, hogyneki 2 parametere van, es ismeri azok tıpusait is. Azt is tudja, hogy ha neki 2parametere van, akkor azok a verem tetejen talalhatoak meg, ezert a p1-et esa p2-t megfelelteti a verem tetejen levo ertekeknek:

p1 = 2p2 = 513. sorb = 5a = 2

Page 42: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

42 4. Függvények

A kovetkezo lepes a fuggveny vegrehajtasa. Az elso utasıtas szerint letre kellhozni meg egy lokalis valtozot, az l-t, tehat ezt is beszurjuk a verembe:

l = 0p1 = 2p2 = 513. sorb = 5a = 2

Az 5. sor ertelmeben az l erteket megvaltoztatjuk, tehat a verem elsosoraban tarolt ertek megvaltozik:

l = 7p1 = 2p2 = 513. sorb = 5a = 2

A 6. sor hatasara a p1 erteket valtoztatjuk meg:

l = 7p1 = 10p2 = 513. sorb = 5a = 2

Itt jol latszik, hogy a p1 es a valtozok semmilyen kapcsolatban nem allnakegymassal, a eredeti erteke valtozatlan marad. A 7. sor elvegzese utan az fv-tbefejezzuk, a fuggveny lokalis valtozoira a tovabbiakban nincs szukseg, ezertazok megsemmisulnek:

13. sorb = 5a = 2

Mivel a fuggveny vegrehajtasat befejezzuk, ezert vissza kell terni a mainfuggvenybe, ezert kiolvassuk a verembol, hogy hanyadik kodsornal kell folytatnia programot. Ez a 13. sor, tehat ide ugrunk, es a visszateresi cımet toroljuk averembol:

Page 43: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

4.2. REKURZIÓ 43

b = 5a = 2

Termeszetesen a fenti programban a printf is egy fuggveny, tehat an-nak meghıvasakor a fenti mechanizmus jatszodik le, tehat a verembe ujabbvisszateresi cım es ujabb lokalis valtozok kerulnek, am a printf lefutasa utanezek torlodnek is a verembol ugy, ahogy az fv eseteben azt lattuk. Am a veremhasznalatanak koszonhetoen ez egyaltalan nem fogja megzavarni a programunkmukodeset, hiszen ıgy a printf ugy fut le, hogy utana a vermen nem latunkvaltozast.

A fenti forraskod 12. soraban lathato fuggveny parametereket aktualis pa-rametereknek, mıg a 3. sorban levo parameter listat formalis parametereknekhıvjuk. A formalis parameterek a peldaprogram 12. soraban kaptak meg konkretertekeiket az aktualis parameterektol.

Kicsit mélyebben

Aki jaratos a verem mukodeseben es az assembly programozasban, most bi-zonyara azt mondja, hogy a verem mukodesenek fenti ismertetese pontatlan,nem minden ilyen sorrendben zajlik le. Ez teljesen igaz, a fenti leırasban azertnem kovettuk a valosagot teljes szigorusaggal, hogy az ismertetett mukodesimechanizmust konnyebben bemutathassuk, es az Olvaso konnyebben megertsea lenyeget. Az alabbiakban a teljesseg kedveert leırjuk a fenti mechanizmusvalodi mukodeset a 32 bites Intel processzorok eseteben, majd utana kiterunkarra, hogy a 64 bites processzorok mukodese mennyiben ter el ettol.

TODO: ezt a reszt befejezni...

4.2. Rekurzió

4.3. Feladatok

Page 44: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

44 4. Függvények

Page 45: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

5. fejezet

Mutatók

A kovetkezo feladatokat ugy oldja meg, hogy az alabbi programot egeszıtse ki:

1 #include <s t d i o . h>2 #include <s t d l i b . h>34 int main ( ) {5 int a = 1 , b = 2 , c = 3 ;67 return 0 ;8 }

1.5.1. feladat Irassa ki az a, b es c valtozok cımeit:

Az ’a’ cime: 0xbfc56a08A ’b’ cime: 0xbfc56a04A ’c’ cime: 0xbfc56a00

1.5.2. feladat Tarolja el az a valtozo cımet egy kulon pa nevuvaltozoban:

A ’pa’ erteke: 0xbfc56a08

1.5.3. feladat Valtoztassa meg az a valtozo erteket a pa valtozonkeresztul:

Az ’a’ erteke a valtoztatas elott: 1Az ’a’ erteke a valtoztatas utan: 10

1.5.4. feladat Tarolja el a pa cımet is egy ppa nevu valtozoban:

A ’ppa’ erteke, azaz ’pa’ cime: 0xbfc569fc

45

Page 46: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

46 5. Mutatók

1.5.5. feladat Valtoztassa meg az a valtozo erteket a ppa valtozonkeresztul:

Az ’a’ erteke a valtoztatas elott: 10Az ’a’ erteke a valtoztatas utan: 100

1.5.6. feladat A ppa-n keresztul allıtsa at a pa valtozot ugy, hogy b-remutasson:

A ’A ’pa’ erteke a valtoztatas elott: 0xbfc56a08A ’pa’ erteke a valtoztatas utan: 0xbfc56a04A ’b’ cime: 0xbfc56a04

1.5.7. feladat A ppa-n keresztul valtoztassa meg b erteket:

A ’b’ erteke a valtoztatas elott: 2A ’b’ erteke a valtoztatas utan: 200

1.5.8. feladat Foglaljon le dinamikusan egy 10 elemu int tombot!

1.5.9. feladat Szabadıtsa fel az elobb lefoglalt tombot!

1.5.10. feladat Lefoglalas utan toltse fel a tombot ertekekkel!

1.5.11. feladat A lefoglalast, felszabadıtast es feltoltest tegye kulonfuggvenybe, de ugy, hogy a fuggvenyek visszateresi tıpusa void legyen!

1.5.12. feladat Rendezze a lefoglalt es feltoltott tomb elemeit novekvosorrendbe!

1.5.13. feladat Irjon fuggvenyt, amely az elobbi tombbol kigyujti aparos szamokat egy masik dinamikus tombbe. Csak akkora legyen az uj tomb,amennyi paros szam van az elsoben!

1.5.14. feladat Foglaljon le ket dinamikus tombot, toltse fel oket, majdhozzon letre egy harmadik dinamikus tombot, es az tartalmazza a ket elozotomb elemeit! Csak akkora legyen a harmadik tomb, amekkora szukseges!

1.5.15. feladat Az elozo programot ırja at ugy, hogy a harmadiktomb egyszer tartalmazzon minden elemet, es tovabbra is akkora legyen a tomb,amennyi elem kerul bele!

1.5.16. feladat Az elozo programot bovıtse ki ugy, hogy az elemekrendezve keruljenek a harmadik tombbe!

1.5.17. feladat Irjon programot, amely n db dinamikus tombot tarol,az elso tomb 2, a masodik 4, azaz az i. tomb 2*i darab elemet tartalmazzon!Toltse is fel a tomboket!

Page 47: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

47

1.5.18. feladat Az elozo programot modosıtsa ugy, hogy a lefoglalas,feltoltes es felszabadıtas kulon void visszateresi tıpusu fuggvenyekkel tortenjen!

1.5.19. feladat Irjon programot, amely dinamikusan letrehoz egy n*m-esmatrixot, foltolti ertekekkel, kiırja es felszabadıtja.

1.5.20. feladat Az elozo programot modosıtsa ugy, hogy a lefoglalas,feltoltes es felszabadıtas kulon void visszateresi tıpusu fuggvenyekkel tortenjen!

1.5.21. feladat Irjon programot, amely letrehoz ketto n meretu vektort,es osszeadja oket, az eredmeny egy ujabb n meretu vektorba kerul.

1.5.22. feladat Irjon programot, amely letrehoz ketto n meretu vektort,es skalarisan osszeszorozza oket.

1.5.23. feladat Irjon programot, amely letrehoz egy n*m-es dinamikusmatrixot, es egy m elemu oszlopvektort, feltolti oket, majd osszeszorozza amatrixot es a vektort. Az eredmenyt egy kulon dinamikus vektorba ırja, majdaz eredmenyt jelenıtse meg a kepernyon.

1.5.24. feladat Irjon programot, amely egy n*m es egy m*k meretudinamikus matrixot hoz letre, feltolti oket ertekekkel, majd osszeszorozza a ketmatrixot. Az eredmeny egy uj, dinamikusan letrehozott matrixba keruljon.

1.5.25. feladat Irjon programot, amely egy n*n-es matrixot hoz letredinamikusan, majd letrehoz ebbol egy (n-1)*(n-1)-es matrixot, amely ugyanaz,mint az eredeti matrix, de az i. sor es j. oszlop nelkul. Az i es j erteketbillentyuzetrol kerje be a program

1.5.26. feladat Irjon programot, amely egy dinamikusan letrehozottn*m-es matrix transzponaltjat hozza letre, az eredmeny matrix is dinamikusanlegyen letrehozva.

1.5.27. feladat Irjon programot, amely 2 n*m-es, dinamikusan letrehozottmatrix osszegeit szamolja ki, az eredmeny matrix is dinamikusan legyen letrehozva.

1.5.28. feladat Irjon fuggvenyt, amely egy 2*2-es matrix determinansatszamolja ki.

1.5.29. feladat Irjon programot, amely kiszamolja egy dinamikusanletrehozott n*n-es matrix adjungalt matrixat (a feladathoz erdemes felhasznalniaz elozo feladatok megoldasait), az eredmeny egy ujabb dinamikus matrixbakeruljon.

1.5.30. feladat Irjon programot, amely, ha lehetseges, kiszamolja egydinamikusan letrehozott n*n-es matrix inverzet, es az eredmeny egy ujabb di-namikus matrixba keruljon. A program ezek utan ellenorizze le a szamolashelyesseget, azaz vizsgalja meg, hogy az eredeti es az inverz szorzata valobanegysegmatrixot ad-e.

Page 48: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

48 5. Mutatók

1.5.31. feladat Irjon programot, letrehoz egy 3 dimenzios, feltoltiertekekkel, majd felszabadıtja.

1.5.32. feladat Az elozo programot modosıtsa ugy, hogy a lefoglalas,feltoltes es felszabadıtas kulon void visszateresi tıpusu fuggvenyekkel tortenjen!

1.5.33. feladat Az elozo programot bovıtse ki ugy, hogy a programkeresse meg a legkisebb elemet, es ırassa ki annak indexet. Amennyiben ez azelem tobbszor fordul elo, akkor eleg csak az elsot megkeresni.

1.5.34. feladat Az elozo programot bovıtse ki ugy, hogy a programkeresse meg a legkisebb elemet, es szamolja meg, hogy mennyi ilyen elem van,es ezt ırassa ki a kepernyore.

1.5.35. feladat Bovıtse ki az elozo programot ugy, hogy a legkisebbelemek indexeit gyujtse ki egy 3*n meretu dinamikus tombbe, ahol n a legkisebbelemek mennyisege.

*1.5.36. feladat Irjon programot, amely dinamikusan egy tetszolegesdimenzio szamu tombot hoz letre, feltolti ertekekkel, megjelenıti a kepernyon,majd felszabadıtja. A program olvassa be billentyuzetrol a dimenziok szamat,majd a dimenziok mereteit.

Az alabbi feladatok megoldasahoz ne hasznalja a string.h header fajlt!

1.5.37. feladat Irjon programot, amely dinamikusan letrehoz, majdfeltolt ket stringet, kiırja, majd felszabadıtja oket.

1.5.38. feladat Az elozo programot bovıtse ki ugy, hogy az egyikstringrol keszıtsen masolatot, a masolat szinten egy dinamikusan letrehozottkaraktertomb legyen.

1.5.39. feladat Az elozo programot bovıtse ki ugy, hogy a ket stringetosszefuzi, az eredmenyt egy harmadik, dinamikusan lefoglalt stringbe teszi.

1.5.40. feladat Irjon fuggvenyt, amely ket dinamikusan letrehozottstringrol megallapıtja, hogy egyenloek-e.

1.5.41. feladat Irjon fuggvenyt, amely ket dinamikusan letrehozottstringrol megallapıtja, hogy melyik van elorebb az ABC-ben, a stringek csak azangol ABC kisbetuit tartalmazzak.

1.5.42. feladat Irjon fuggvenyt, amely ket dinamikusan letrehozottstringrol megallapıtja, hogy melyik van elorebb az ABC-ben, a stringek csak azangol ABC kis- es nagybetuit tartalmazzak, az egyes betuk kis es nagybetusvaltozatai azonosnak tekinthetoek, azaz az ”alma” szo egyenrangu az ”AlMa”szoval.

1.5.43. feladat Irjon fuggvenyt, amely kap egy stringet, es egy i egeszszamot. A fuggveny megkeresi az i. szot a kapott stringben, lefoglal egy uj dina-mikus karaktertombot, es abba kiırja a kert szot, majd visszater az uj stringgel.Ha nem letezik az i. szo, akkor a fuggveny NULL-al ter vissza.

Page 49: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

49

1.5.44. feladat Irjon fuggvenyt, amely kap egy stringeket tartalmazotombot, es dinamikusan letrehoz egy uj stringet, amely a tombben levo stringe-ket tartalmazza osszefuzve, szokozzel elvalasztva, majd visszater az uj stringgel.

1.5.45. feladat Irjon fuggvenyt, amely kap egy stringeket tartalmazotombot, majd ABC sorrendbe rendezi a benne levo stringeket, a rendezett strin-gek sorozatat egy masik dinamikus tombben tarolja. A fuggveny terjen visszaaz ujonnan letrehozott tombbel.

1.5.46. feladat Mi a baj az alabbi programreszlettel? Melyik sort engedilefordıtani a fordıto, melyiket nem, melyik okoz futas kozbeni hibat?

1 char ∗ szoveg = ”alma” ;2 char szoveg2 [ ] = ” korte ” ;3 f r e e ( szoveg ) ;4 szoveg = 0 ;5 f r e e ( szoveg2 ) ;6 szoveg2 = 0 ;

1.5.47. feladat Miert nem jo az alabbi programreszlet?

1 register int ra = 42 ;2 int ∗ pra = &ra ;

1.5.48. feladat Megoldhato-e az elozo problema ugy, hogy a pra isregister valtozo lesz?

1 register int ra = 42 ;2 register int ∗ pra = &ra ;

1.5.49. feladat Miert nem jo az alabbi programreszlet?

1 int alma ;2 int ∗∗∗ mutato = &&&alma ;

1.5.50. feladat Irjon programot, amely kiırja a kepernyore, hogy aprogramot 32, vagy 64 bites rendszerre fordıtottak.

Page 50: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

50 5. Mutatók

Page 51: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

6. fejezet

Struktúrák

51

Page 52: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

52 6. Struktúrák

Page 53: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

7. fejezet

File kezelés

53

Page 54: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

54 7. File kezelés

Page 55: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

8. fejezet

A standard könyvtár

55

Page 56: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

56 8. A standard könyvtár

Page 57: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

9. fejezet

Az előfeldolgozó

57

Page 58: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

58 9. Az előfeldolgozó

Page 59: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

II. rész

Fejlettebb technikák

59

Page 60: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.
Page 61: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

10. fejezet

Láncolt listák

61

Page 62: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

62 10. Láncolt listák

Page 63: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

11. fejezet

Fák

63

Page 64: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

64 11. Fák

Page 65: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

12. fejezet

Bitműveletek

65

Page 66: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

66 12. Bitműveletek

Page 67: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

13. fejezet

Memóriakezelés

67

Page 68: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

68 13. Memóriakezelés

Page 69: Feladatgyűjtemény a C programozási nyelvhezsmidla.mik.uni-pannon.hu/sites/default/files/files/prog1/segedlet/... · Tartalomjegyzék I. Nyelvi alapok 5 1. Kimenet, bemenet 7 2.

14. fejezet

Parancssori paraméterek

69