18.NCP koji na standardni izlaz ispisuje broj bajtova koji zauzimaju određeni tipovi podataka.
#include <stdio.h>
main()
{ printf("char: %d bajt\n", sizeof(char));
printf("short: %d bajta\n", sizeof(short));
printf("int : %d bajta\n", sizeof(int));
printf("long=%d bajta\n", sizeof(long));
printf("unsigned=%d bajta\n", sizeof(unsigned));
printf("float=%d bajta\n", sizeof(float));
printf("double=%d bajta\n", sizeof(double));
}
19. NCP koji na standardni izlaz ispisuje vrednosti predefinisanih konstanti (zaglavlja: limits.h, float.h).
#include <stdio.h>
#include <limits.h>
#include <float.h>
main()
{
printf("CHAR_BIT:\t%d\n", CHAR_BIT);
printf("UCHAR_MAX:\t%u\n", UCHAR_MAX);
printf("INT_MIN:\t%d\n", INT_MIN);
printf("INT_MAX:\t%d\n", INT_MAX);
printf("LONG_MAX:\t%ld\n", LONG_MAX);
return 0;
}
20. Zadate su tri verzije C programa. Koja od njih nije korektna i zašto?
#include <stdio.h> void ispisati (void) ; main() { int a,b,c; a=b=c=2; ispisati (a, b, c); c=4; ispisati (a, b, c); } /*f-ja koja stampa na glavni izlaz*/ printf("1. argument je %d\n", i); } | #include <stdio.h> void ispisati (int a, int b, int c) ; main() { int a,b,c; a=b=c=2; ispisati (a, b, c); c=4; ispisati (a, b, c); } /*f-ja koja stampa na glavni izlaz*/ printf("1. argument je %d\n", i); } | #include <stdio.h> void ispisati (int, int, int) ; main() { int a,b,c; a=b=c=2; ispisati (a, b, c); c=4; ispisati (a, b, c); } /*f-ja koja stampa na glavni izlaz*/ printf("1. argument je %d\n", i); } |
21. NCP koji će izračunati sume ∑
i=1..5 i2 i ∑
i=1..23 i2 i obe sume ispisati u zasebnim linijama.
#include <stdio.h>
void Zbir_Kvad(int n); /*f-ja koja vrsi zeljeno izracunavanje */
main()
{ Zbir_Kvad( 5);
Zbir_Kvad( 23);
}
void Zbir_Kvad(int n)
{ int br; /* lokalna promenljiva funkcije, brojac u ciklusu */
long Zbir=0; /* lokalna promenljiva funkcije, suma kvadrata brojeva od 1..n */
for (br=1; br<=n; Zbir+= (long) br*br, ++br) ;
printf(" Zbir kvadrata brojeva od 1 do %d jese %ld\n", n,Zbir);
}
Poziv funkcije: pozivajuća jedinica(main) -> funkcija Zbir_Kvad -> pozivajuća jedinica(main)
22. Članovi niza a se formiraju po pravilu a[i]=5*(n/4-i), gde n je broj članova niza a. NCP koji će za n=12 prikazati na standardni izlaz elemente niza a i to po 10 u svakoj liniji. Zatim ispisati maksimum niza na standardni izlaz.
#include <stdio.h>
#define UKUPNO 12
int max( int prvi, int drugi );
main()
{
int a[UKUPNO], indeks, Max;
for(indeks=0; indeks<UKUPNO; indeks++)
a[indeks]=5*(UKUPNO/4-indeks);
/* prikazuje elemente niza po 10 u liniji*/
for(indeks=0; indeks<UKUPNO; indeks++)
printf("%6d%c", a[indeks],(indeks%10==9 || indeks==UKUPNO-1)? '\n':' ');
printf("Niz sadrzi %d elem%s \n", UKUPNO, (UKUPNO==1)?"ent":( (UKUPNO>=2 && UKUPNO<=4)?"enta":"enata" ) );
/* trazenje max clana */
Max=a[0];
for(indeks=1; indeks<UKUPNO; indeks++) Max=max(Max, a[indeks]);
printf("Maksimum niza je %d \n", Max);
return 0;
}
/* max: vraca maksimum dva argumenta */
int max( int prvi, int drugi )
{
return ( (prvi>=drugi)?prvi:drugi );
}
23. NCP koji će izračunati i ispisati na standardni izlaz sume: ∑
i=1..5 i2, ∑
i=1..5 i3, ∑
i=1..10 i4.
#include <stdio.h>
void Zbir_stepena (int n, int granica); /*izracunava za brojeve od 1 do n zbir po granica. stepenu */
main()
{ Zbir_stepena(5,2);
Zbir_stepena(5,3);
Zbir_stepena(10,4);
return 0;
}
void Zbir_stepena (int n, int granica)
{
int i,j; /*brojaci u for petljama */
long Zbir=0 , stepenovan ;
for (i=1; i<=n; Zbir +=stepenovan, ++i) /*spoljasnji for ciklus obavlja sumiranja*/
for( stepenovan=1,j=1; j<=granica; stepenovan*= (long) i, ++j) ; /*unutrasnji for ciklus obavlja stepenovanje */
printf(" Zbir %d. stepena od 1 do %d jeste %ld\n", granica,n,Zbir);
}
24. Šta je rezultat rada sledećeg programa koji je blokovski orjentisan?
#include <stdio.h>
main()
{
int pom=1;
printf("Pre ulaska u unutrasnji blok pom=%d\n",pom);
{ int pom=50;
printf("Pre izlaska iz unutrasnjeg bloka pom=%d\n",pom);
}
printf("Nakon izlaska iz unutrasnjeg bloka pom=%d\n",pom);
}
25. Šta je rezultat rada sledećeg programa s obzirom na svojstva automatskih i statičkih promenljivih?
#include<stdio.h>
void funkcija(void);
main()
{ int br;
for(br=1;br<=5;++br) funkcija();
}
void funkcija(void)
{ static int a=0;
int b=0;
printf("static =%d auto=%d\n",a,b);
++a;
++b;
}
26.
NCP koji će ispisati rezultat skalarnog množenja uređene šestorke a i
uređene šestorke b. Uređenu šestorku a čini prvih šest prirodnih brojeva, a
uređenu šestorku b čine brojevi 8,7,6,5,4,3.
#include <stdio.h>
long mnozi(int x[],int y[],int n);
main()
{int a[ ]={1,2,3,4,5,6}, b[ ]={8,7,6,5,4,3};
printf("Skalarno a*b= %ld\n",mnozi(a,b,6));
}
long mnozi(int x[ ],int y[ ],int n)
{ int br;
long suma=0;
for(br=0;br<n;br++) suma=suma+x[br]*y[br];
return suma;
}
27. Šta je rezultat rada sledećeg programa?
/* bitske operacije. */
#include <stdio.h>
main()
{
printf( "255 & 15 = %d\n", 255 & 15 );
printf( "255 | 15 = %d\n", 255 | 15 );
printf( "255 & 15 = %o\n", 255 & 15 );
printf( "255 | 15 = %x\n", 255 | 15 );
printf( "255 ^ 15 = %d\n", 255 ^ 15 );
printf( "4 << 2 = %d\n", 4 << 2 );
printf( "16 >> 2 = %d\n", 16 >> 2 );
printf( "~(-3) = %d\n", ~(-3) );
}
255 & 15 = 15 255 ^ 15 = 240
255 | 15 = 255 4 << 2 = 16
255 & 15 = 17 16 >> 2 = 4
255 | 15 = ff ~(-3) = 2
Protumačiti uz pomoć K&R izraze:
unsigned x, n;
x=x & 0177;
x=x&01;
x=x|n;
x=x|01;
x=x & ~0177;
~0;
~0<<n;
~(~0<<n);
Jelena Grmuša | Osnovi programiranja |