Informatika2-2014/2.ZH-ra

A MathWikiből
A lap korábbi változatát látod, amilyen Wettl (vitalap | szerkesztései) 2014. május 8., 13:25-kor történt szerkesztése után volt.
(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

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;
}
Személyes eszközök