C++ programok kimenete | 22. készlet
Jósoljuk meg a következő C++ programok kimenetét! 1. kérdés CPP
2. kérdés CPP
3. kérdés CPP
4. kérdés CPP
5. kérdés CPP
7. kérdés CPP
8. kérdés CPP
#include using namespace std ; int main () { int a = b = c = 0 ; cout < < a < < '*' < < b < < '*' < < c ; return 0 ; }
Output: Compile time error!Magyarázat: A chained statement cannot be used to initialize variables at the time of declaration. Hence the statement a = b = c = 0; is an illegal statement. However following way a legal syntax and can be used in C++ or C.
int abc; a = b = c = 0;
2. kérdés CPP
#include using namespace std ; int main () { for ( ; ; ) cout < < 'blank' ; return 0 ; }
Output: Infinite Loop!Magyarázat: Mivel az inicializálási teszt feltétele és a növelési/csökkentési feltétel hiányzik a cikluson belül, a végrehajtás végtelen hurokba kerül.
3. kérdés CPP
#include using namespace std ; int main () { int i ; for ( i = 0 ; i < 3 ; i ++ ); cout < < 'hello!' < < i ; return 0 ; }
Output: hello!3Magyarázat: A Hello!3 az eredmény, mert amikor a for ciklus végrehajtódik, nincs semmilyen feladata a pontosvessző(;) miatt abban a sorban, ahol a for ciklust meghatározták. A ciklus háromszor hajtódik végre, és az i értéke 3 lesz, majd a többi utasítás(ok) végrehajtásra kerülnek.
4. kérdés CPP
#include using namespace std ; int main () { int i ; i = 1 + ( 1 4 5 6 3 ); cout < < i ; return 0 ; }
Output: 4Magyarázat: A vessző () operátor egy bináris operátor, amely kiértékeli az első operandust és elveti az eredményt, majd kiértékeli a másodikat, majd visszaadja a második értékét. Itt a vessző () operátor asszociativitása balról jobbra halad, és könnyen érthető, hogy az (14563) kifejezés 3-ra értékeli, majd az 1 + 3 eredményt az i-hez rendeli.
5. kérdés CPP
#include using namespace std ; int main () { int a = 0 b ; b = ( a = 50 ) + 10 ; cout < < a < < '$' < < b ; return 0 ; }
Output: 50Magyarázat: A b = (a = 50) + 10 állítás; a beágyazott hozzárendelés fogalmát használja. Itt az a változóhoz az 50-es, a b-hez pedig az 50+10-es eredményt rendeljük. 6. kérdés CPP
#include using namespace std ; int main () { char a = 30 b = 40 c = 10 ; char d = ( a * b ) / c ; cout < < int ( d ); return 0 ; }
Output: 120Magyarázat: A C++ a karakterek ASCII értékeinek figyelembevételével is tud aritmetikai számításokat végezni, ha az aritmetikai műveletet char adattípusú változókon hajtjuk végre. Ebben az esetben a válasz 120, ami az x ASCII értéke.
7. kérdés CPP
#include using namespace std ; int main ( int x ) { static int i = 5 ; if ( -- i ) { cout < < i ; main ( 10 ); } return 0 ; }
Output: 4321Magyarázat: A C++ nyelvben minden nullától eltérő szám valódi értékként kezelendő. Ebben a kódban az if utasítás csökkenti az i értékét, de az if blokkjában a main() függvényt újra és újra meghívják. Itt úgy tűnik, hogy a program végtelen ciklusban van, de az i változó statikus természetű, élettartama a végrehajtásig megvan, ezért a program leáll, ha i-ből 0 lesz.
8. kérdés CPP
#include using namespace std ; int main ( int x ) { int i = 5 ; if ( -- i ) { cout < < i ; main ( 10 ); } return 0 ; }
Output: infinite loopMagyarázat: A C++ nyelvben minden nullától eltérő szám valódi értékként kezelendő. Ebben a kódban az if utasítás csökkenti az i értékét, de az if blokkon belül a main() függvényt újra és újra meghívják (az összes utasítás most úgy fut le, mintha egy új program lenne), így a program végrehajtása végtelen ciklusba kerül, mivel nincs lezárási feltétel. Kvíz létrehozása