Квиз

Библиотека <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.