Informatika2-2014/Gyakorlat14

A MathWikiből
(Változatok közti eltérés)
(A lap tartalmának cseréje erre: ld. [http://wiki.math.bme.hu/view/Informatika2-2014/2.ZH-ra itt])
 
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>
+

A lap jelenlegi, 2014. május 8., 13:25-kori változata

ld. itt

Személyes eszközök