Skuska z programovania C

Programovacie jazyky, rady, poradňa...
MP4-27
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2094
Registrovaný: 10 nov 2006, 20:11
Bydlisko: tak určité:D
Kontaktovať používateľa:

Skuska z programovania C

Príspevok od používateľa MP4-27 »

mohol by mi s tym niekto helpnut? THX
a ak poznate nejake super stranky pre samoukov s vysvetlivkami tak sem s nimi...

Kód: Vybrať všetko

Test (max. 10 bodov)
Zakrúžkujte správne odpovede. Každá správna odpoveď = 1 bod.
1.	Fáza tvorby programu, kde píšeme samotný program je:
a) analýza 		b) návrh			c) implementácia	d) testovanie
2.	Povolený identifikátor v jazyku C je:
a) číslica		b) meno			c) while		d) 4x
3.	Na reprezentáciu desatinných čísel v jazyku C môžeme použiť typ:
a) int 			b) real				c) decadic		d) float
4.	Kľúčové slovo v jazyku C využívajúce sa pri tvorbe cyklu je:
a) cycle		b) switch			c) else			d) while
5.	Ktorý zápis v jazyku C predstavuje reťazec ?
a) "abc" 		b) 'abc'				c) abc			d) char
6.	Súbor štandardného vstupu v jazyku C má názov:
a) FILE		b) stdin			c) fprintf		d) FILE*
7.	Telo cyklu do-while sa vykoná:
a) práve raz 		b) iba keď je splnená podmienka	
c) aspoň raz		d) iba keď podmienka nie je splnená
8.	Alokácia pamäte na požiadanie (knižničnou funkciou) sa označuje ako:
a) automatická 	b) statická			c) dynamická		d) globálna
9.	Pamäť použitá statickou premennou sa uvoľní:
a) hneď po opustení funkcie				b) po ukončení programu
c) hneď po poslednom volaní funkcie		d) až po reštartovaní počítača
10.	Volanie funkcie zo samej seba:
a) nie je možné 	b) je chyba			c) je abstrakcia	d) je rekurzia

Kód: Vybrať všetko

11. Aký je výstup z časti programu?

int i = 1, s = 0;				                i = 10;
do {							   while (--i > 0)
  s++; i--;						       i -= 7;
} while (i > 0);				           printf(“i = %i\n”, i);
printf(“s = %i\n”, s);		

s =_________________(1 bod)		i =_________________ (1 bod)


12. Majme nasledovný kód:
if (a = b && ++a == 2)
printf("T: a=%i, b=%i", a, b);
else						
printf("F: a=%i, b=%i", a, b);

Aký je výstup, keď hodnoty premenných a a b pred začatím uvedeného kódu sú:

a=0, b=0:________________(1 bod)
a=0, b=1:________________(1 bod)
a=1, b=0:________________(1 bod)
a=1, b=1:________________(1 bod)

13. Vyhodnoťte výrazy:

int    a = 2, b = 3, *p = &a;
char   c = ‘A’;
double x = 2.0;
int pole[] = {-1, 0, 1};
int *pp = &pole[1];

a * b + a * b	__________(1 bod)	*p		__________(1 bod)
b / a		__________(1 bod)	++c		__________(1 bod)
b / x		__________(1 bod)	pole[1] 	__________(1 bod)
pp[1]	  	__________(1 bod)	a >> 1  	__________(1 bod)

Prílohy
ALPR_skuska_2005-06_rt.rar
skuska05/06 FEI
(8.01 KiB) 80 stiahnutí
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Tá prvá časť by mohla byť:
1. C
2. B
3. D
4. D
5. A
6. B
7. C
8. C
9. B
10. D
(samozrejme ak som sa nepomýlil) :)
MP4-27
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2094
Registrovaný: 10 nov 2006, 20:11
Bydlisko: tak určité:D
Kontaktovať používateľa:

Príspevok od používateľa MP4-27 »

chrono napísal:Tá prvá časť by mohla byť:(samozrejme ak som sa nepomýlil) :)
dik beriem na vedomie a porovname s inymi...
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

11) i=-8 ; s=9

12)
F: a=0, b=0
F: a=0, b=1
F: a=0, b=0
F: a=1, b=1

nad trináskou sa mi nechce rozmýšlať :/
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

11 máš zle :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

chrono napísal:11 máš zle :)
a ako by mala byť podla teba? Aj som to skúsil hodiť do céčka..
Prílohy
Project1.rar
(2.02 KiB) 52 stiahnutí
tuti
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 740
Registrovaný: 01 okt 2006, 19:23
Bydlisko: Prievidza

Príspevok od používateľa tuti »

12ka by som povedal ze je trosku divna kedze C pouziva skratene vyhodnocanie a nikde nie je napisane ze sa vyhodnocuje podmienka zlava do prava (iked vacsina prekladacov to asi zlava vyhodnocovat bude) takze to moze byt bud:

najskor sa vyhodnoty lava cast podmienky

Kód: Vybrať všetko

F: a=1, b=0
T: a=2, b=1
F: a=1, b=0
T: a=2, b=1
alebo ak sa najskor vyhodnoti prava cast podmienky

Kód: Vybrať všetko

F: a=1, b=0
F: a=1, b=1
T: a=0, b=0
T: a=1, b=1
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

13.) moze byt takto, myslim...

Kód: Vybrať všetko

a*b+a*b = 12
*p = 2
b/a = 1
++c = 'B'
b/x = 1.5
pole[1] = 0
pp[1] = 1
a>>1 = 1
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

audiotrack napísal:a ako by mala byť podla teba? Aj som to skúsil hodiť do céčka..
Aj ja som to skúsil dať do C a mne vyšlo:

Kód: Vybrať všetko

s = 1
i = -7
MP4-27
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2094
Registrovaný: 10 nov 2006, 20:11
Bydlisko: tak určité:D
Kontaktovať používateľa:

Príspevok od používateľa MP4-27 »

neutronmind napísal:13.) moze byt takto, myslim...

Kód: Vybrať všetko

a*b+a*b = 12
*p = 2
b/a = 1
++c = 'B'
b/x = 1.5
pole[1] = 0
pp[1] = 1
a>>1 = 1
to
pp[1]=1 si jak zistil podla coho?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Kód: Vybrať všetko

int pole[] = {-1, 0, 1}; 
int *pp = &pole[1];
V tom druhom riadku nastavíš pp tak, že ukazuje na prvý (alebo ak chceš druhý) prvok toho poľa pole (a teda na číslo 0).
Keď potom pristupuješ k tomu pp ako k poľu, tak bude pp[0] nultý prvok a teda tá 0, pp[1] bude prvý prvok (a teda 1)...
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

pp je ukazatel na prvy prvok pola. Tento prvy prvok sa v podstate stava nultym prvkom ukazatela pp(ked sa nan pozeras ako na pole). Prvy prvok "pola" pp je teda hned dalsi objekt v pamati za pole[1], cize pole[2] (teda *(pp+1)), a to ma hodnotu 1... :)

//hm, neskoro :D
MP4-27
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2094
Registrovaný: 10 nov 2006, 20:11
Bydlisko: tak určité:D
Kontaktovať používateľa:

Príspevok od používateľa MP4-27 »

este by som potreboval dovysvetlovat totoka

Kód: Vybrať všetko

15. Majme kód:	typedef struct _zoznam {
 				int data;
 				struct _zoznam* dalsi;
} zoznam;

zoznam z1, z2, *p = &z1;
z1.data = 4; 		z2.data = 5;
z1.dalsi = &z2;	z2.dalsi = NULL;

Napíšte hodnoty výrazov: 
z2.data	_________(1 bod)	z1.dalsi->data	________(1 bod)
p->data	_________(1 bod)	p->dalsi->data	________(1 bod)
24. Napíšte program kalkulačka, ktorý načíta 2 čísla a znak operácie (+, -, *, /) a vypíše výsledok zvolenej operácie nad zadanými číslami. Na výpočet výsledku použite funkciu.
(5 bodov)
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

15)
z1.data=4
p->data=4
z1.dalsi->data=5
p->dalsi->data=5
24)

Kód: Vybrať všetko

#include <stdio.h>
#include <conio.h>

double kalkulacka(double a, double b, char c)
{
    switch (c) {
           case '+': return a+b;
           case '-': return a-b;
           case '/': return a/b;
           case '*': return a*b;
    }
}

int main(void)
{
    char c;
    double a, b;
    
    printf("Zadaj dve cisla: ");
    scanf("%lf %lf", &a, &b);
    while (getchar()!='\n');
    printf("Zadaj +, -, *, /\n");
    while ((c=getch())!='+' && c!='-' && c!='*' && c!='/');
    printf("Vysledok je: %.2lf\n", kalkulacka(a, b, c));
    
    return 0;
}
Namiesto getch() si mozes dat radsej getchar(), kedze getch() je platformovo zavisla funkcia... :)
MP4-27
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2094
Registrovaný: 10 nov 2006, 20:11
Bydlisko: tak určité:D
Kontaktovať používateľa:

Príspevok od používateľa MP4-27 »

toto by som este potreboval vysvetlit

Kód: Vybrať všetko

Aký je možný výstup z programu pre možné hodnoty a, b buď 0 alebo 1. 

if (a == b)
	printf("a = b = %i", a);
else
	printf("a = %i, b = %i", a, b);

if (a == b && ++a == 1)
	printf("a = %i, b = %i", a, b);
else
	printf("b = %i, a = %i", b, a);

if (a - b)
	printf("a = %i, b = %i", a, b);

Kód: Vybrať všetko

19. Majme funkciu: 	void f(char *r)
{	
if (*r=='\0') return;
	else {
		f(r+1);
		printf("%c",r[0]);
	}
	}
Čo vráti volanie:
f("abcde")	_____________________  	(1 bod)
Slovne popíšte, čo robí funkcia f :				(1 bod)
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

19)

Kód: Vybrať všetko

f("abcde") vypise na standardny vystup "edcba" (nevracia nic, vola sa ako procedura)

funkcia f() vypise na standardny vystup retazec (zadany ako parameter) od jeho konca
Inak, je to take tazke to skompilovat? :)
Napísať odpoveď