1. Napisati C program koji na standardni izlaz ispisuje poruku Zdravo, svete u jednom redu.
#include <stdio.h>
main()
{
/*iskazi f-je main su zatvoreni
u zagrade */
printf("Zdravo, svete\n"); /*poziv
f-je printf da odstampa poruku*/
}
/*Ovo je komentar u programskom jeziku C. Koristi se da se pojasni uloga novouvedenih promenljivih u programu, da se pojasni uloga delova programskog kôda, da se objasni uloga potprograma u programu tj. ocekivani ulaz i izlaz. Ne koristi se da se objasne delovi sintakse programskog jezika C.*/
PRIMER KORISNOG KOMENTARA
int a,b,c; /* a je brojac u ciklusu, b je tekuca cifra sa ulaza, c je rezultat sabiranja cifri sa ulaza */
PRIMER NEPOTREBNOG KOMENTARA
main() /*ovo je funkcija main */
int a,b,c; /* a, b, c su tri celobrojne promenljive*/
Mnoge linije C kôda se završavaju znakom tačka-zarez (;), ali ne i sve linije. Na primer, nije potrebno stavljati tačku-zarez (;) iza nepotpunih linija kôda.
Takve su, na primer, linije koje se završavaju vitičastim zagradama ( vitičasta zagrade = simboli za grupisanje kôda između početka i kraja)
2. Napisati C program koji na standardni izlaz ispisuje poruku Zdravo, svete u jednom redu.
#include <stdio.h>
main()
{
/*poziv
funkcija printf da odstampaju poruku*/
printf("Zdravo, sve");
printf("te"); printf("\n");
}
3. Napisati C program (skraćeno NCP) koji na standardni izlaz ispisuje poruku Zdravo, svete, štampa prazan red i u narednom redu ispisuje poruku Bonjour, Monde.
#include <stdio.h>
main()
{
printf("\nZdravo,
svete"); /*poziv f-je printf da odstampa poruku na
srpskom*/
printf("\n\n");
/*prelaz
u sledeci red i stampanje praznog reda*/
printf("Bonjour,
Monde\n"); /*poziv f-je printf da odstampa poruku
na francuskom*/
}
4.
Napisati C program (skraćeno NCP) koji zadaje vrednosti dve celobrojne promenljive i na standardni izlaz ispisuje njihovu razliku.
promenljiva - ime koje označava promenljivu vrednost.Vrednost promenljive se može pročitati, promeniti, izdati na izlaz. U ovom zadatku se vrednost promenljive rez izdaje na izlaz.
Imena promenljivih:
Da bi se promenljiva mogla upotrebljavati ona se mora na početku programa deklarisati. Na primer
int x; /*Deklaracija celobrojne promenjive x*/
float x; /*Deklaracija realne promenljive x*/
Prilikom deklaracije može se izvržiti i početna inicijalizacija (dodela početne vrednosti promenljivoj). Na primer
int x=5; /*Deklaracija i inicijalizacija celobrojne promenljive x*/
#include <stdio.h>
main()
{
/*deklaracija vise promenljivih istog tipa (tipa int ) */
int rez,pom1,pom2;
/*rezultat oduzimanja pom1-pom2 -> rez*/
pom1=20;
pom2=15;
rez=pom1-pom2;
/*ispisivanje rezultata*/
printf("Rezultat je %d-%d=%d\n",pom1,pom2,rez);
}
int | ceo broj |
char | znak, karakter (1 B) |
float | realan broj |
double | realan broj dvostruke tacnosti |
short int x;
short x;
long int x
long x;
/ | deljenje |
* | množenje |
% | ostatak pri deljenju |
+ | sabiranje |
- | oduzimanje |
5.
Napisati C program (skraćeno NCP) koji na standardni izlaz ispisuje malo slovo Z u polju širine tri, a u sledećem redu veliko slovo Z u polju širine pet.
Tabela ASCII kôdova
Izlaz iz programa:
Slova
z
Z
%c je za štampanje karaktera
%3c je za štampanje karaktera u polju širine tri pozicije
SLIČNO: %3d za štampanje celog broja na tri pozicije ili %6d za štampanje broja na 6 pozicija.
Pravila:
%d štampaj kao označen ceo dekadni broj
%6d stampaj kao ceo broj u polju širine 6 pozicija
%f štampaj kao realan broj
%6f štampaj kao realan broj u polju širine 6
%o štampaj kao oktalni broj
%x štampaj kao heksadekadni broj
%.2f štampaj kao realan broj sa dve decimale
%6.2f stampaj kao realan broj u polju širine 6 ynakova, a od toga 2 iza decimalne tačke
%s štampaj string
%% za štampanje procenta
6. Šta je rezultat rada sledećeg programa?
#include <stdio.h>
main()
{
int a=21,d=5; float c=8.953, b=6.0;
printf("d=%d c=%f\n",d,c);
printf("a + d/c + b=%f\n",a+ d/c + b);
printf("|%5f |%5.3f| %5.0f|%5.1f\n",c,c,c,c);
}
7.
Napisati C program (skraćeno NCP) koji na standardni izlaz ispisuje malo i veliko slovo A i njihovu vrednost u standardnom setu karaktera.
Tabela ASCII kôdova
vrednost='a';
printf("%s\nkarakter=%3c\nvrednost=%3d\n","Malo",vrednost,vrednost);
}
ZA RAZMIŠLJANJE I UVEŽBAVANJE: ASCII kôd ZADACI
8. NCP koji sa standardnog ulaza učitava ceo broj i ispisuje na standardni izlaz poslednju cifru tog broja (cifru jedinica).
#include <stdio.h>
main()
{
int x, cifra ;
/*x je broj koji se unosi sa stdin, cifra je vrednost poslednje cifre koja se ispisuje na stdout*/
printf("Unesite ceo broj: ");
scanf("%d",&x); /* UOCITE znak & (operator uzimanja adrese)
pre imena promenljive u funkciji
scanf */
cifra=x % 10; /* poslednja cifra broja x je zapravo ostatak pri deljenju broja x sa 10*/
printf("\nPoslednja cifra broja %d jeste %d \n",x, cifra);
}
IZRAČUNAJTE:
15 %3 =
5 + (8%3) =
5 + 8%3 =
(5 + 8)%3 =
5 + 8%8 =
5 + 8%0 =
9. Šta je rezultat rada sledećeg programa?
#include <stdio.h>
main()
{
int x=506, y=3, z=21, t=2;
printf("x=%d y=%d\n",x,y);
printf("Razlika z - t=%d\n", z-t);
printf("Kolicnik z / t =%d\n",z /
t);
printf("-x=%d\n",- x);
printf("Ostatak pri deljenju x %% y=%d\n", x%y);
}
Ako su oba operanda u operaciji deljenja celi brojevi, onda se rezultat formira odbacivanjem tacke i decimalnog dela rezultata. Ako su oba operanda u operaciji deljenja pozitivni celi brojevi, celobrojni deo se zaokruzuje na manju vrednost. Ako je jedan od operanada u celobrojnoj operaciji deljenja negativan ceo broj, negativan rezultat zavisi od implementacije.
10. Šta je rezultat rada sledećeg programa?
#include <stdio.h>
main()
{
int x=50, y=15, z=4, t=2;
printf("Proizvod %d*%d =%d\n",x,z,x*z);
printf("Kolicnik y / t =%d\n",y/
t); printf("Pogresan realan kolicnik y / t =%f\n",y/
t);
printf("Pravi realni kolicnik y / t =%f\n",(float)y/(float)
t);
}
IZRACUNAJTE -5/2 +11%3*2
11. NCP koji sa standardnog ulaza učitava višecifren ceo broj i ispisuje na standardni izlaz pretposlednju cifru tog broja (cifru desetica).
#include <stdio.h>
main()
{
int x, cifra ; /*x je broj koji se unosi sa stdin, cifra je vrednost pretposlednje cifre koja se ispisuje na stdout*/
printf("Unesite ceo broj: ");
scanf("%d",&x);
cifra=(x /10)% 10; /* pretposlednja cifra broja x je zapravo ostatak pri deljenju broja (x/10) sa 10*/
printf("\nPretposlednja cifra broja %d jeste %d \n",x, cifra);
}
12. NCP koji sa standardnog ulaza učitava realan broj i ispisuje na standardni izlaz prvu decimalu (prvu cifru iza decimalne tacke).
#include <stdio.h>
main()
{
float x; /*x je broj koji se unosi sa stdin*/
int d; /*d je prva decimala broja x*/
printf("Unesite realan broj: ");
scanf("%f",&x);
d=(int)(x*10)%10;
printf("\nPrva decimala broja %f jeste %d \n",x, d);
}
13. Korišćenjem makrozamene za protivrednost jednog evra u dinarima, NCP koji ispisuje na standardni izlaz dinarsku vrednost za četiri evra. Kako bi ispisali dinarsku protivvrednost jednog evra sa 0 decimala?
#include <stdio.h>
#define EURO 60.0477
main()
{
printf("4 eura ima vrednost %f dinara\n",
4*EURO);
/*printf("1 euro
ima vrednost %.0f dinara\n",EURO);*/
}
Relacioni operatori:
> >= < <= isti prioritet
== != nizi prioritet
(2003<2006)
(9<=10)
a < 5 != 1 <=> (a < 5)!=1
Logicki operatori:
! unarna negacija (najvisi prioritet)
&& logicko i (visi prioritet od ili)
|| logicko ili izracunavaju se sleva na desno!
5 && 4 vrednost je tacno
10 || 0 vrednost je tacno
0 && 5 vrednost je 0
!1 vrednost je 0
!9 vrednost je 0
!0 vrednost je 1
!(2>3) je 1
a>b && b>c || b>d je isto sto i ((a>b) && (b>c)) || (b>d)
koja je vrednost ako je a=10, b=5, c=1, d=15?
14.
a) NCP koji unosi ceo broj sa standardnog ulaza i ispisuje da li uneti broj je negativan.
b)NCP koji unosi ceo broj sa standardnog ulaza i ispisuje da li je uneti broj negativan ili pozitivan ili jednak nuli.
Deo a)
#include <stdio.h>
main()
{
int x; /*x je broj koji se unosi sa stdin*/
printf("Unesite ceo broj: ");
scanf("%d",&x);
if (x < 0) printf("\nBroj %d jeste negativan\n",x);
}
if (izraz) blok_naredbi_1
else blok_naredbi_2
Deo b)
#include <stdio.h>
main()
{
int x; /*x je broj koji se unosi sa stdin*/
printf("Unesite ceo broj: ");
scanf("%d",&x);
if (x < 0) printf("\nBroj %d jeste negativan\n",x);
else if (x == 0) printf("\nBroj %d je nula\n",x);
else printf("\nBroj %d jeste pozitivan\n",x);
}
if-else-else-else-...
if (izraz1) iskaz1
else if (izraz2) iskaz2
else if (izraz3) iskaz3
else iskaz4 /*ovaj if -else-else-else je jedna naredba !!!*/
if-if-...-else
VAZNA NAPOMENA: else se odnosi na prvi neuparen if. Ako se zeli drugacije moraju se navesti viticaste zagrade.
if (izraz)
if (izraz1) iskaz 1
else iskaz
ovo else se odnosi na drugo if a ne na prvo if!!!
if-if-...-else
if (izraz)
{
if (izraz1) iskaz 1
}
else iskaz
tek sada se else odnosi na prvo if!!!
15. NCP koji unosi ceo broj sa standardnog ulaza i ispisuje da li uneti broj je paran.
#include <stdio.h>
main()
{
int x; /*x je broj koji se unosi sa stdin*/
printf("Unesite ceo broj: ");
scanf("%d",&x);
if (x %2 == 0) printf("\nBroj %d jeste paran\n",x);
}
ZA VEZBU: NCP koji unosi ceo broj sa standardnog ulaza i ispisuje da li uneti broj je trocifren.
16. NCP koji unosi ceo broj sa standardnog ulaza i ispisuje logičku vrednost unetog broja (tačno ili netačno).
#include <stdio.h>
main()
{
int x; /*x je broj koji se unosi sa stdin*/
printf("Unesite ceo broj: ");
scanf("%d",&x);
if (x) printf("\nLogicki gledano %d jeste tacno\n",x); else printf("\n%d je netacno\n",x);
}
Slicno kao if.
izraz1 ? izraz2 : izraz3
z = (a<b)? a : b; /*z=min(a,b); */
/*MOGLI SMO PISATI if (a<b) z=a; else z=b; */
17. NCP koji zadaje vrednosti dve realne promenljive i korišćenjem makrozamene naći kvadrat prve i maksimum njihovih vrednosti. Rezultat ispisati na standardni izlaz.
#include <stdio.h>
#define KVADRAT(x) (
(x)*(x) )
#define MAX(x,y) ( (
(x)>(y)) ? (x) : (y) )
main()
{
float w=3.2,y=8.8 ;
printf("KVADRAT(%.2f)=%.2f\n",w,KVADRAT(
w));
printf("MAX(%.2f , %.2f)=%.2f\n",w,y,MAX(w,y));
}