|
|
1. sor: |
1. sor: |
− | = Gyakorlás a ZH-ra =
| + | ld. [http://wiki.math.bme.hu/view/Informatika2-2014/2.ZH-ra itt] |
− | | + | |
− | '''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!
| + | |
− | | + | |
− | <c>
| + | |
− | #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;
| + | |
− | }
| + | |
− | </c>
| + | |
− | | + | |
− | '''2.'''
| + | |
− | | + | |
− | <c>
| + | |
− | #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;
| + | |
− | }
| + | |
− | </c>
| + | |
− | | + | |
− | | + | |
− | '''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!
| + | |
− | <c>
| + | |
− | int i,j,a[3][2]={{1,2},{2,0},{3,3}}, b[2][3];
| + | |
− | for( i=0; i<3; i++ ) {
| + | |
− | | + | |
− | | + | |
− | | + | |
− | }
| + | |
− | </c>
| + | |
− | | + | |
− | '''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.)
| + | |
− | | + | |
− | <c>
| + | |
− | #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;
| + | |
− | }
| + | |
− | </c>
| + | |
− | | + | |
− | '''5.'''
| + | |
− | | + | |
− | <c>
| + | |
− | #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;
| + | |
− | }
| + | |
− | </c>
| + | |
− | | + | |
− | | + | |
− | '''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?
| + | |
− | <c>
| + | |
− | #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;
| + | |
− | }
| + | |
− | </c>
| + | |
− | | + | |
− | | + | |
− | '''8.''' Hányszor írja ki, hogy ,,ez az"?
| + | |
− | | + | |
− | <c>
| + | |
− | #include<stdio.h>
| + | |
− | int main()
| + | |
− | {
| + | |
− | int i = -5;
| + | |
− | while (i <= 5)
| + | |
− | {
| + | |
− | if (i >= 0)
| + | |
− | break;
| + | |
− | else
| + | |
− | {
| + | |
− | i++;
| + | |
− | continue;
| + | |
− | }
| + | |
− | printf("ez az");
| + | |
− | }
| + | |
− | return 0;
| + | |
− | }
| + | |
− | </c>
| + | |
− | | + | |
− | '''9.''' Mi a kimenete az alábbi programnak?
| + | |
− | | + | |
− | <c>
| + | |
− | #include <stdio.h>
| + | |
− | int main()
| + | |
− | {
| + | |
− | int i = 3;
| + | |
− | while (i--)
| + | |
− | {
| + | |
− | int i = 100;
| + | |
− | i--;
| + | |
− | printf("%d ", i);
| + | |
− | }
| + | |
− | return 0;
| + | |
− | }
| + | |
− | </c>
| + | |
− | | + | |
− | | + | |
− | '''10.''' Mi a kimenet? (beugratós)
| + | |
− | | + | |
− | <c>
| + | |
− | #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;
| + | |
− | }
| + | |
− | </c>
| + | |