Квиз¶
Библиотека <stdio.h>¶
Провери своје знање. Пробај да решиш квиз.
Питање 1:
Функција за форматирани унос знака је (са конверзијом):
scanf
printf
putchar
getchar
Питање 2:
Функција за неформатирани унос знака (без конверзије) је:
scanf
printf
putchar
getchar
Питање 3:
Функција за форматирани испис знака је (са конверзијом):
scanf
getchar
putchar
printf
Питање 4:
Функција за неформатирани испис знака (без конверзије) је:
scanf
printf
putchar
getchar
Питање 5:
Функције за неформатирани унос и испис стринга (без конверзије) су:
puts, gets
putchar, gets
getchar, puts
printf, scanf
Питање 6:
Функције за форматирани унос и испис стринга (са конверзијом) су:
puts, gets
putchar, gets
getchar, puts
printf, scanf
Питање 7: Дате су линије кода:
#include <stdio.h>
int main(void)
{
char s[] = "Petrovic Pero";
printf("(Ime je %-10.3s)", s);
return 0;
}
Шта ће бити исписано на излазу?
(Ime je Per)
(Ime je Pero)
(Ime je Petrovic Per)
Библиотека <string.h>¶
Питање 8:
Функција strcpy(t, s):
Дописује низ s на крај низа t
Преписује знаковни низ s у низ t укључујући и \0
Преписује знаковни низ t у низ s укључујући и \0
Дописује низ t на крај низа s
Питање 9:
Функција strcat(t, s):
Дописује низ s на крај низа t
Преписује знаковни низ s у низ t укључујући и \0
Преписује знаковни низ t у низ s укључујући и \0
Дописује низ t на крај низа s
Библиотека <stdlib.h>¶
Питање 10: Дата је линија кода:
#include<stdio.h>
int main(void)
{
char a[] = "k234";
int b = 5, c;
printf("c = %d",atoi(a) + b);
return 0;
}
Шта се исписује на излазу?
c = 0
c = 5
c = 238
Библиотека <ctype.h>¶
Питање 11:
Библиотечке функције за рад са знаковима налазе се у библиотеци: Изаберите исправан одговор.
stdio.h
ctype.h
string.h
stdlib.h
Пробај да одговориш на следећа питања¶
Питање 12:
Дат је прототип функције написан у програмском језику С:
void test(char *a, char k);
У main функцији дате су следеће декларације променљивих:
char s1[20], *s2, s3;
Одредити који су исправно написани позиви декларисане функције
test (s2, s1[i]);
(s2, s1);
(s2, ‘A’);
(s1, s3);
(*s2, s3);
(s3, &s1);
Питање 13:
Дат је прототип функције написан у програмском језику С:
void test(char *a, char k);
У main функцији дате су следеће декларације променљивих:
char s1[20], *s2, s3;
Одредити који су исправно написани позиви декларисане функције
test (s2, s1[i]);
(s2, s1);
(s2, ‘A’);
(s1, s3);
(*s2, s3);
(s3, &s1);
Питање 14: Дат је кôд функције funkcija написане у програмском језику C
int funkcija(char c)
{
return ((c>='a'&&c<='z') || (c>='A'&&c<='Z') || (c>='0'&&c<='9')) ? 1 : 0;
}
Изабрати којој функцији из стандардне библиотеке функција ctype.h одговара дата функција
isupper
isalpha
isalnum
strchr
atoi
gets
Питање 15: Дат је кôд функције funkcija написане у програмском језику C
int funkcija() (char c)
{
return (c>='A'&& c<='Z') ? 1 : 0;
}
Изабрати којој функцији из стандардне библиотеке функција ctype.h\ одговара дата функција
isupper
isalpha
isalnum
strchr
atoi
strcmp
Питање 16: Дат је кôд функције funkcija написане у програмском језику C
int funkcija(char *s)
{
int n, sign;
while(*s==' ' || *s=='\t')
s++;
sign = (*s=='-') ? -1 : 1;
if(*s=='+' || *s=='-') s++;
for(n=0; *s>='0'&& *s<='9'; s++) n=10*n+ *s - '0';
return (!*s) ? sign*n : 0;
}
Изабрати којој функцији из стандардне библиотеке одговара дата функција
isupper
isalpha
strcmp
strchr
atoi
gets
Питање 17: Дат је кôд функције funkcija написане у програмском језику C
char * funkcija(char *s)
{
char c,*temp;
temp=s;
while((c=getchar())!='\n')
*temp++=c;
*temp='\0';
return s;
}
Изабрати којој функцији из стандардне библиотеке одговара дата функција
isupper
isalpha
isalnum
strchr
atoi
gets
Питање 18: Дат је кôд функције funkcija написане у програмском језику C
int funkcija(char *s, char *t)
{
char tempt, temps;
while(*s && *t)
{
if(*t>='A'&& *t<='Z')
tempt = 'a' + *t -'A';
else
tempt=*t;
if(*s>='A'&& *s<='Z')
temps = 'a' + *s -'A';
else
temps=*s;
if(temps != tempt)
return temps - tempt;
else s++, t++;
}
return *s - *t; .
}
Изабрати којој функцији из стандардне библиотеке одговара дата функција
isupper
isalpha
isalnum
strchr
strcmp
gets
Питање 19: На програмском језику C декларисани су стрингови:
char s1[100]="", s2[100]="geografija";
char *t="nacrtna geometrija";
Одредити вредност стринга s1 по извршењу наведене наредбе strcpy(s1, t);
nacrtna geometrija
nacr
nacrtna
eomgrafija
Питање 20: На програмском језику C декларисани су стрингови:
char s1[100]="", s2[100]="geografija";
char *t="nacrtna geometrija";
Одредити вредност стринга s1 по извршењу наведене наредбе `strncpy(s1, t, 4);
geometrija
eomgrafija
nacrtna geometrija
nacr
Питање 21: На програмском језику C декларисани су стрингови:
char s1[100]="", s2[100]="geografija";
char *t="nacrtna geometrija";
Одредити вредност стринга s2 по извршењу наведене наредбе strcpy(s2, t);
nacrtna geometrija
eomgrafija
nacrtnageometrija
nacr
Питање 22: На програмском језику C декларисани су стрингови:
char s1[100]="", s2[100]="geografija";
char *t="nacrtna geometrija";
Одредити вредност стринга s2 по извршењу наведене наредбе strncpy(s2,t+9,3);
nacrtna geometrija
eomgrafija
grafija
nacr
Питање 23: У програмском језику C дат је кôд :
#include<stdio.h>
#include <string.h>
int main(void)
{
char s1[]="Kratka Servisna Poruka", *s2, *s3;
s2=strchr(s1,'S');
s3=strrchr(s2,'P');
strncpy(s1+1,s2,1);
strcpy(s1+2,s3);
puts(s1);
puts(s2);
puts(s3);
return(0);
}
Одредити вредност стринга s1 по извршењу програма
Poruka
KSP
KSPoruka
SerPoruka
а
Питање 24: У програмском језику C дат је кôд:
#include<stdio.h>
#include <string.h>
int main(void)
{
char s1[]="Kratka Servisna Poruka", *s2, *s3;
s2=strchr(s1,'S');
s3=strrchr(s2,'P');
strncpy(s1+1,s2,1);
strcpy(s1+2,s3);
puts(s1);
puts(s2);
puts(s3);
return(0);
}
Одредити вредност стринга s2 по извршењу програма
Poruka
KSP
KSPoruka
SerPoruka
а
Питање 25: У програмском језику C дат је кôд:
#include<stdio.h>
#include <string.h>
int main(void)
{
char s1[]="Kratka Servisna Poruka", *s2, *s3;
s2=strchr(s1,'S');
s3=strrchr(s2,'P');
strncpy(s1+1,s2,1);
strcpy(s1+2,s3);
puts(s1);
puts(s2);
puts(s3);
return(0);
}
Одредити вредност стринга s3 по извршењу програма
Poruka
KSP
KSPoruka
SerPoruka
а
Пробајте да напишете следеће програме:¶
Написати програм који броји децималне цифре у улазном тексту до ознаке за крај уноса ЕОF. Написати програм без коришћења функција за проверу карактера, а затим користећи функцију isdigit.
Решење 1:
#include <stdio.h>
int main(void)
{
int c, n=0;
printf("Unesi tekst pa enter i ctrl+z na kraju\n" );
while((c=getchar()) != EOF)
if(c>='0'&& c<='9')
n++;
printf("\n Broj cifara: %d.\n", n);
return(0);
}
Решење 2:
#include <stdio.h>
int main(void)
{
int c, n=0;
printf("Unesi tekst pa enter i ctrl+z na kraju\n" );
while((c=getchar()) != EOF)
if(isdigit(c)) n++;
printf("\n Broj cifara: %d.\n",n);
return(0);
}
Излаз:
Unesi tekst pa enter i ctrl+z na kraju
Ovaj red 123 mora da ima 4 cifre i zavrsen je sa ctrl+z
^Z
Broj cifara: 4.
Написати програм за одређивање броја великих слова, малих слова и цифара у улазном тексту. Унос текста се завршава сигналом ЕОF. Написати програм без коришћења функција за проверу карактера, а затим користећи функцију isdigit.
Решење 1:
#include <stdio.h>
int main(void)
{
int c, veliko=0, malo=0, cifra=0;
while((c = getchar()) != EOF)
{
if(c >= 'A' && c <= 'Z')
veliko++;
if(c >= 'a' && c <= 'z')
malo++;
if(c >= '0' && c <= '9')
cifra++;
}
printf(" Velika: %d\n", veliko);
printf(" Mala: %d\n", malo);
printf(" Cifre: %d\n",cifra);
return(0);
}
Решење 2:
#include <stdio.h>
int main(void)
{
int c, veliko=0, malo=0, cifra=0;
while((c = getchar()) != EOF)
{
veliko = veliko+(isupper(c) != 0);
malo = malo+(islower(c) != 0);
cifra =cifra+(isdigit(c) != 0);
}
printf(" Velika: %d\n", veliko);
printf(" Mala: %d\n", malo);
printf(" Cifre: %d\n", cifra);
return(0);
}
Излаз:
Ovaj red sadrzi VELIKA mala slova i cifre 123 i zavrsava se sa ctrl+Z
^Z
Velika: 9
Mala: 43
Cifre: 3
Написати програм за одређивање броја појављивања слова А у улазном тексту и изразити ту вредност процентуално у односу на све унете знаке. Унос текста се завршава сигналом ЕОF.
Решење:
#include <stdio.h>
int main(void)
{
int c, n=0, u=0;
float p;
while((c = getchar()) != EOF)
{
u++;
if(c=='A')
n++;
}
p=(float)n/u*100;
printf("\nUkupno znakova: %d", u);
printf("\nUkupno slovo A: %d", n);
printf("\nU procentima: %.2f%\n", p);
return(0);
}
Излаз:
Ovde ima dva velika slova AA
^Z
Ukupno znakova: 29
Ukupno slovo A: 2
U procentima: 6.90
Домаћи задатак¶
Пробајте за домаћи да решите следеће задатке. Решења задатака можете проверити на дну ове странице.
Домаћи 1. Написати програм који броји празне знакове (размак, хоризонтални табулатор и нови ред), слова, децималне цифре, као и све знакове улазног текста до ознаке за крај уноса ЕОF. Програм написати без коришћења библиотечких функција, а затим са коришћењем библиотечких функција.
Домаћи 2. Написати програм за одређивање броја самогласника и сугласника у улазном тексту. Унос текста се завршава сигналом ЕОF.
Домаћи 3. Написати програм који броји карактере улазног текста до прве децималне цифре. Унос текста се завршава сигналом EOF.
Домаћи 4.Написати програм који врши конверзију унетих великих слова у мала. Унос текста се завршава сигналом EOF.
Домаћи 5. Написати програм за проналажење најдужег учитаног реда текста. Унос редова се прекида кад се *** учита из реда.
Решења домаћих задатака¶
Домаћи 1 Решење 1:
#include <stdio.h>
int main(void)
{
int c, nk=0, nr=0, nb=0, ns=0;
while((c=getchar()) != EOF)
{
if((c==' ') || (c=='\t') || (c=='\n'))
nr++;
if(c>='0' && c<='9')
nb++;
if((c>='a' && c<='z') || (c>='A' && c<='Z'))
ns++;
nk++;
}
printf("Razmaci: %d\n", nr);
printf("Cifre: %d\n", nb);
printf("Slova: %d\n", ns);
printf("Ukupno: %d\n",nk);
return(0);
}
Домаћи 1 Решење 2:
#include <stdio.h>
int main(void)
{
int c, nk=0, nr=0, nb=0, ns=0;
while((c=getchar()) != EOF)
{
if(isspace(c))
nr++;
if(isdigit(c))
nb++;
if(isalpha(c))
ns++;
nk++;
}
printf(" Razmaci: %d\n", nr);
printf(" Cifre: %d\n", nb);
printf(" Slova: %d\n", ns);
printf(" Ukupno: %d\n",nk);
return(0);
}
Излаз:
Broj 1 i broj 158
^Z
Razmaci: 12
Cifre: 4
Slova: 9
Ukupno: 25
Домаћи 2 Решење :
#include <stdio.h>
int main(void)
{
int c, sugl=0, samog=0;
while((c=getchar()) != EOF)
{
if((c>='a' && c<='z') || (c>='A' && c<='Z'))
if(c=='a' || c=='e' || c=='i' || c=='o' || c=='u'|| c=='A' || c=='E' || c=='I' || c=='O' || c=='U')
samog++;
else
sugl++;;
}
printf("Samoglasnika: %d\n", samog);
printf("Suglasnika: %d\n", sugl);
return(0);
}
Излаз:
Programski jezik C
^Z
Samoglasnika: 5
Suglasnika: 11
Домаћи 3 Решење :
#include <stdio.h>
int main(void)
{
int c, n=0;
while((c=getchar()) != EOF)
{
if(isdigit(c))
break;
n++;
}
printf("Broj znakova: %d\n", n);
return(0);
}
Излаз:
Do broja 1 ce prebrojati broj karaktera
Broj znakova: 9
Домаћи 4 Решење 1:
#include <stdio.h>
int main(void)
{
int c;
while((c=getchar()) != EOF)
{
if(c >= 'A' && c <= 'Z')
c = c -'A' + 'a';
putchar(c);
}
return(0);
}
Домаћи 4 Решење 2:
#include <stdio.h>
int main(void)
{
int c;
while((c=getchar()) != EOF)
putchar(tolower(c));
return(0);
}
Излаз:
ovaj program PrEtVaRa sva VELIKA SLOVA u mala
ovaj program pretvara sva velika slova u mala
Домаћи 5 Решење :
#include <stdio.h>
int main(void)
{
char red[100], max[100]="";
while (1)
{
gets (red);
if (strcmp(red, "***")==0)
break;
if (strlen(red)>
strlen(max))
strcpy (max,red);
}
puts(max);
return(0);
}
Излаз:
Pronalazi najduzi ucitan red
I prekida se kada se ucita u novom redu
***
I prekida se kada se ucita u novom redu
На Петљи можете решавати задатке из Методичке збирке задатака из основа програмирања, део „Карактери и ниске“ који се налазе на линку Metodicka zbirka zadataka кристећи он лајн С или С/С++ компајлер. За почетак пробајте да решите задатак из збирке који се налази на линку Prezime pa ime.