Informatika2-2014/Gyakorlat14
1. sor: | 1. sor: | ||
− | = Gyakorlás = | + | = Gyakorlás a ZH-ra = |
+ | |||
+ | '''0.''' Néhány ellenőrző kérdés: | ||
+ | * Mit jelent ha egy függvénynek void a visszatérési típusa? | ||
+ | * Mit jelent hogy C-ben "érték szerint" adódnak át a paraméterek a függvényeknek? | ||
+ | * Sorolja fel a C nyelv néhány egyszerű adattípusát! | ||
+ | * Írható-e olyan C függvény, mely paraméterként megkapja egy egész 'a' és 'b' változó értékét, és összegüket egy 'c', szorzatukat egy 'd' nevű változóba visszaadja? Ha igen, írjon ilyet! | ||
+ | * Milyen karakter zárja le a sztringeket? | ||
+ | * Állítsuk sorrendbe precedenciaerősségük szerint az alábbi operátorokat (kezdjük a legerősebbel: | ||
+ | ** ==, prefix++, &&, postfix++, ||, =, *, + (segítség: [http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm]) | ||
+ | * Mit jelent a lógó else? | ||
+ | * Mi a változók hatókörére vonatkozó egyszerű szabály? | ||
+ | * Mely operátorok jobbról asszociatívak? (segítség: [http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm]) | ||
+ | |||
+ | Felkészüléshez használható a wikin lévő 2012-es és 2013-as C előadások anyaga is. A következő feladatokhoz hasonlókra is lehet számítani: | ||
+ | |||
'''1.''' Minden PRINT-et tartalmazó sornál határozzuk meg a kimenet értékét! | '''1.''' Minden PRINT-et tartalmazó sornál határozzuk meg a kimenet értékét! | ||
181. sor: | 196. sor: | ||
} | } | ||
</c> | </c> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
A lap 2014. május 8., 14:19-kori változata
Gyakorlás a ZH-ra
0. Néhány ellenőrző kérdés:
- Mit jelent ha egy függvénynek void a visszatérési típusa?
- Mit jelent hogy C-ben "érték szerint" adódnak át a paraméterek a függvényeknek?
- Sorolja fel a C nyelv néhány egyszerű adattípusát!
- Írható-e olyan C függvény, mely paraméterként megkapja egy egész 'a' és 'b' változó értékét, és összegüket egy 'c', szorzatukat egy 'd' nevű változóba visszaadja? Ha igen, írjon ilyet!
- Milyen karakter zárja le a sztringeket?
- Állítsuk sorrendbe precedenciaerősségük szerint az alábbi operátorokat (kezdjük a legerősebbel:
- ==, prefix++, &&, postfix++, ||, =, *, + (segítség: [1])
- Mit jelent a lógó else?
- Mi a változók hatókörére vonatkozó egyszerű szabály?
- Mely operátorok jobbról asszociatívak? (segítség: [2])
Felkészüléshez használható a wikin lévő 2012-es és 2013-as C előadások anyaga is. A következő feladatokhoz hasonlókra is lehet számítani:
1. Minden PRINT-et tartalmazó sornál határozzuk meg a kimenet értékét!
#include <stdio.h> #define PRINT(int) printf("%d\n",int) int main(void) { int i, j, k=5; i = 17 - 17/k*k; PRINT(i); k += j = i *= 3; k -= i == j; PRINT(k); i=2; j=3; k=5; PRINT( i & j | k ); PRINT( !i || j && k); i=4; j = 3; i <<= j; PRINT( i ); k = i<32 ? ++i : --i; PRINT( k ); return 0; }
2.
#include <stdio.h> #define PRINT(int) printf("%d\n",int) int main(void) { int i, j, k=2; i = (8+7)%6/2; PRINT(i); k *= j = i = 3; k += i == j; PRINT(k); i=2; j=3; k=0; PRINT( i && j || k ); PRINT( !i || j ); PRINT( i++ - --j ); i=1; j = 4; i <<= j; PRINT( i ); k = i<j ? i | j : i & j; PRINT( k ); return 0; }
3. Az alábbi kódrészletet töltsük ki úgy, hogy a ’b’ tömbbe az ’a’ mátrix transzponáltja kerüljön!
int i,j,a[3][2]={{1,2},{2,0},{3,3}}, b[2][3]; for( i=0; i<3; i++ ) { }
4. Az alábbi programkód minden sora mellett adjuk meg a ’t’ tömb tartalmát! (Az utólagos ellenőrzéshez töröljük ki // jeleket a printf-ek elől.)
#include <stdio.h> int main(void) { int t[3] = {1,3,5}, *p; p = &t[0]; //printf("%d %d %d %p\n", t[0], t[1], t[2], p); t[0] = *++p; // kiértékelés jobbról-balra //printf("%d %d %d %p\n", t[0], t[1], t[2], p); t[1] = ++*p; // kiértékelés jobbról-balra //printf("%d %d %d %p\n", t[0], t[1], t[2], p); t[2] = *p++; // a pointert növeli nem azt az értéket, ahová mutat //printf("%d %d %d %p\n", t[0], t[1], t[2], p); return 0; }
5.
#include <stdio.h> int main(void) { int t[4]={2,3,5,8}, *p, i; p = &t[1]; // printf("%d %d %d %d %p\n", t[0], t[1], t[2], t[3], p); t[0] = *p++; // printf("%d %d %d %d %p\n", t[0], t[1], t[2], t[3], p); t[1] = *++p; // printf("%d %d %d %d %p\n", t[0], t[1], t[2], t[3], p); t[2] = ++*p; // printf("%d %d %d %d %p\n", t[0], t[1], t[2], t[3], p); *p += *p; // printf("%d %d %d %d %p\n", t[0], t[1], t[2], t[3], p); return 0; }
6. Írjunk egy rekurzív és egy iteratív C függvényt, mely
kiszámítja az n-edik Fibonacci-számot (f(0)=0, f(1)=1,...),
ahol n nemnegatív egész!
7. Mit ír ki?
#include <stdio.h> #define EVEN 0 #define ODD 1 int main() { int i = 3; switch (i & 1) { case EVEN: printf("Even"); break; case ODD: printf("Odd"); break; default: printf("Default"); } return 0; }
8. Hányszor írja ki, hogy ,,ez az"?
#include<stdio.h> int main() { int i = -5; while (i <= 5) { if (i >= 0) break; else { i++; continue; } printf("ez az"); } return 0; }
9. Mi a kimenete az alábbi programnak?
#include <stdio.h> int main() { int i = 3; while (i--) { int i = 100; i--; printf("%d ", i); } return 0; }
10. Mi a kimenet? (beugratós)
#include <stdio.h> int main() { int x = 3; if (x == 2); x = 0; if (x == 3) x++; else x += 2; printf("x = %d", x); return 0; }