Delovanje printf (printf.c)
printf.c
Napiši program, ki prebere in izpiše, če je prvo število večje od drugega.
primerjava.c
Napiši program, ki pretvarja Fahrenheit-e v Celzije v mejah med 0 in 200 s korakom 20.
fahr.c
Napiši program, za štetje digitov. Vhodno zaporedje prekinemo s pritiskom na Q.
sw.c
FILE *f, ftell(f), fseek(f), rewind(f), feof(f),fopen(fname, mode) mode= [+]w, [+]r, [+]a, fclose(f), freopen(f,fname, mode)…
int ferror(f), vooid clearerr(f)
Napiši program, ki prešteje število vrstic in znakov v datoteki kjer je shranjen.
stej.c
Napiši program, ki oštevilči vrstice datoteke, ki jo je podal uporabnik.
filenum.c
Napišite program, ki prešteje znake, besede, vrstice v datoteki katere ime poda uporabnik.
Napišite makro lower, ki pretvarja velike črke v male z uporabo pogojnega izraza.
#define LOWER(ch) (ch>='A'&& ch<='Z') ? ch+'a'-'A' : ch;
Napiši makro za zamenjavo dveh vrednosti.
Napiši makro za izračun absolutne vrednosti.
Napiši podprogram za potenciranje.
exp(x , n)
Napišite podprogram, ki polje cifer, ki tvorijo besedo pretvori v število (brez uporabe obstoječe atof funkcije).
Napiši proceduro, ki zamenja vrednosti dveh spremenljivk.
zamenjaj.c
Napišite podprogram, ki izpiše vse permutacije dane besede.
permute.c
void perm(char *niz, char *p) { char *q=p, b=*p?0:puts(niz); while (b=*p) { *q=*p; *p=b; perm(niz, p+1); *p=*q; *q++=b; } }
Napišite funkcijo, ki bo izračunala prvi člen geometrijsega zaporedja 1, 2, 4, 8, 16, …, ki je večji od 1000.
Napišite program, ki izpiše tabelo funkcije sin(x)/x v mejah od -2π
do 2π s korakom po π/10. Kako boste ukrepali, ko je x enak 0?
Napišite program, ki z zvezdicami izriše graf kvadratne funkcije (napišite podprogram, ki izpiše določeno število presledkov).
Napišite program, ki izračuna in izpiše kvadrat števila, ki ga vnesemo v ukazni vrstici ob imenu programa.
Napišite program, ki bo najprej prebral celo število, nato tvoril
naključno število med 0 in prebranim celim številom. Poskušajte uganiti
generirano naključno število. Če boste vnesli premalo/preveliko
naključno število bo program (podprogram) izpisal, da je število
večje/manjse od generiranega. Na koncu naj program sporoči, v kolikih
poskusih smo našli iskano število.
Napiši funkcijo, ki prešteje, na koliko možnih načinov lahko dano naravno število zapišemo kot nepadajočo vsoto naravnih števil.
Npr.
6=
1+1+1+1+1+1=
1+1+1+1+2=
1+1+1+3=
1+1+2+2=
1+1+4=
1+2+3=
1+5=
2+2+2=
2+4=
3+3
Napišite funkcijo, ki prejme tri cela števila a, b, c kot vhodne parametre in jih uredi po velikosti tako, da bo a najmanjše.
Napišite funkcijo, ki izračuna razdaljo dveh točk v ravnini. Vhodni
podatki v funkcijo so koordinati točk x in y v ravnini. Deklaracije
matematičnih funkcij so v math.h, ki jo moramo vključit v program.
Opazuj spreminjanje globalnega kazalca, ki kaže na lokalno spremenljivko, pred in po izvajanju funkcije.
bing.c
Napiši program, ki prešteje prazna mesta in male črke v vtipkanem stavku.
male_c_praz.c
Napiši program za tabeliranje polinomov.
tabeliranje.c
Za dani niz ugotovi, ali predklepaji in zaklepaji nastopajo v pravilno gnezdenih parih.
Namig: #predklepajev==#zaklepajev
v vsakem začetnem podnizu je vsaj toliko predklepajev kot zaklepajev.
Za branje vhodnega niza uporabljaj fgets(niz,MAX,stdin)
, konec niza '\0'
.
Primer:
typedef double (*FUNC)() FUNC g()…
sizeof(char)=1, sizeof(int)=2, sizeof(float)=4.Določi vrednosti po dodeljevanju:
char *pc; /*naj bo pc=900*/ int *pi1, *pi2; /*naj bo pi1=1000, pi2=1012*/ float *pf1, *pf2; /*naj bo pf1=1100,pf2=1112*/ pc+=6; pi1+=6; pf1+=6; *pf1=pi1-pi2; *pi1=pf1-pf2; pi1-=*pi1;
malloc(), calloc(), free(), cfree(), mlalloc(n), clalloc(n, siz), realloc()
Napiši program, ki prebere 15 float vrednosti, jih shrani v blok v spominu z uporabo kazalcev in potem izračuna in izpiše njihovo vsoto in minimum.
#define SIZE 15 float *init() { char *malloc(); return (float*) malloc(SIZE*sizeof(float)); } void readin(a) float *a; { int i; printf(“Vnesite %d vrednosti:”, SIZE); for (i=1; i < SIZE; i++) scanf(“%f”, a+i); }
Napiši program, ki prebere zaporedje besed in izpiše v obratnem
vrstnem redu kot se pojavljajo na vhodu tiste besede, ki se začnejo z
veliko začetnico. Predpostavi, da ni več kot 15 besed in da ni ni niti
ena beseda daljša kot 10 črk. To bo mogoče pomagalo, če uporabljaš '\0'
za konec besede.
besede.c
Napiši program, ki prebere 30-znakov dolgo vrstico in jo shrani v 30-karakterjev dolgo tabelo. Če se znak za konec-vrstice pojavi pred 30-im znakom, naj se vnašanje konča. Potem prikaži vhodne podatke brez presledkov in številk.
Napiši funkcijo FIND, ki ima tri parametre:
In vrne 1, če je x element tabele in 0 sicer. Predpostavi, da je F urejena po velikosti in uporabljaj binarno iskanje.
find.c
Napiši program, ki prešteje pogostost vsake številke, število belih presledkov in število ostalih znakov. Uporabljajte tabele.
Napišite program, ki dolgo vhodno vrstico razdeli v več vrstic. Vrstico naj deli za zadnjim neločljivim znakom , ki se pojavi pred n-tim stolpcem. Širina vrstic n naj bi parameter.
Imamo naslednji program
izpis.c
0-i: 8515
in sizeof(int) = 2
. Povej kaj se bo izpisalo:
0-i: 8515 1-i: 2-i:… 5-i: 0-i: 1-i: 2-i:
Napiši funkcije za seštevanje, odštevanje, množenje, deljenje, kompleksnih števil, pri tem uporabljaj strukturo
complex.c
Podane so naslednje definicije:
struct secret { int age; enum {male, female}: sex; } struct agent { struct secret friends[10]; struct secret enemies[10]; }
Napiši proceduro info(a, fage, eage)
, ki skozi fage
vrne najmlajšo žensko prijateljico agenta in skozi eage
vrne najstarejšega moškega sovražnika agenta. –1 vrne, če ni prijateljev/sovražnikov agenta.
struct.c
Ugotovi ali leži točka prostora, katere koordinate prebereš, znotraj izbrane krogle, na njenem robu ali zunaj nje.
struct tock { double x, y, z; } struct krogla { struct tocka sredisce; double polmer; }
Sestavi funkcijo, ki brez tvorjenja novih elementov obrne smer
povezav v linearnem seznamu. Napiši tudi testni program, s katerim
preveriš pravilnost rešitve.
obrni.c
Preuredi seznam celih števil, da bodo na začetku vsa soda, na koncu
vsa liha. Medsebojni vrstni red sodih naj se ohrani, vrstni red lihih
naj se obrne. Npr. podano: 1, 2, 3, 4, 5, 6, 7, 8, dobimo: 2, 4, 6, 8,
7, 5, 3, 1.
preuredi.c
Napiši program, ki iz naključnih številk zgradi seznam in ga izpiše.
navadni_sez.c
Podana je naslednja definicija tipa dvojno povezanega seznama:
typedef struct tlist { char key; /*vrednost */ struct tlist *prev;/* predhodni */ struct tlist *next;/* naslednji*/ } LISTSTART, *LISTPTR;
Napiši proceduro, ki vstavi podani niz znakov v že obstoječi dvojno povezani seznam za elementom, ki ima vrednost given.
Iz podanega niza znakov prehodno zgradi dvojno povezani seznam in ga nato vstavi.
podseznam.c
Podan je program string.c
string.c
Prevedemo ga: cc –lm string.c –o string
Klic programa:
./string I like to program
Prvi test: test-number est-number st-number t-number Drugi test: test-number three for-2023 section Tretji test: I like to program
Operacije za delo z nizi:
int strlen(s) STRING strcpy(s1, s2) kopira s2 v s1 in "povozi" s1, vrne kazalec na s1 STRING strcat(s1, s2) doda s2 s1, vrne kazalec na s1 int strpos(s1, c) če je karakter c v s1 vrne pozicijo, sicer –1 STRING strchr(s1, c) vrne kazalec na prvo pojavitev karakterja c v s1, sicer pa NULL int strcmp(s1, s1) vrne 0, če se niz s1 ujema s s2, negativno vrednost, če je s1 leksikografsko pred s1, sicer pa pozitivno vrednost
Napiši proceduro strip(s, t), ki skozi t vrne string s, z zbrisanimi začetnimi praznimi mesti. Predpostavi, da je za t zadosti prostora v spominu.
Napiši program, ki bere datoteko, ki jo sestavljajo vrstice vrstice tipa Ime Priimek in izpise jo v obilki IP, oz. izpise začetne črke imen in priimkov.
Napiši proceduro, ki obrne bite v byte-u.
obrni.c
Napiši proceduro octal(i)
, ki pokaže osmiško predstavitev števila i
s pomočjo premika (shift)
osmisko.c
Sestavi program, ki prebere besedilo s standardnega vhoda in ga
preoblikovanega izpiše v datoteko z danim imenom. Program naj v besedilu
odstrani večkratne presledke, poskrbi, da se stavki začenjajo z veliko
začetnico in podobno.
preoblikuj.c