<< Chapter < Page Chapter >> Page >

Влез и излез на податоци

Внесување на податоци со scanf() функцијата

Влезните податоци може да се внесат во компјутерот од стандардниот влез со користење на библиотечната функција scanf(). Обликот на оваа функција е следниот:

scanf(Контролна низа од знаци, arg1, arg2, … , argn)

Контролната низа од знаци е всушност низа од знаци (стринг) кој ја содржи потребната информација за форматирање, а arg1, arg2, ..., argn се аргументите кои ги претставуваат индивидуалните податоци. Аргументите претставуваат покажувачи кои ја даваат мемориската адреса каде ќе се смести податокот кој ќе се прочита. Контролната низа од знаци е изградена од индивидуални групи на знаци со една група на знаци за секој податок кој ќе се чита. Секоја група на знаци мора да започне со знакот %. Во нејзината наједноставна форма една група знаци се состои од % по кој следи знак за конверзија кој го дава типот на соодветниот мемориски елемент каде ќе се запише податокот.

Знак законверзија Значење
c Податочниот елемент е еден знак
d Податочниот елемент е децимален цел број
f Податочниот елемент е реална вредност
h Податочниот елемент е краток цел број
I Податочниот елемент е децимален, хексадецимален или октален цел број
o Податочниот елемент е октален цел број
s Податочниот елемент е низа од знаци по која следи едно празно место, нов ред или табулатор
u Податочниот елемент е децимален цел број без знак
x Податочниот елемент е хексадецимален цел број
#include<stdio.h>main() {char del; int delbroj;float cena; ...scanf(“%c%d%f”,&del,&delbroj,&cena); ...}

Првата група знаци покажува дека првиот аргумент е знак, втората дека вториот аргумент е децимален цел број, додека третата дека третиот аргумент е реален број.

Со помош на scanf() функцијата вредностите на трите променливи del, delbroj и cena можат да се прочитаат од стандардниот влез кога ќе се изврши програмата. Влезот за програмата може да е следниот:

Pc 12345 570.34

или

Pc

12345

570.34

#include<stdio.h>main() {int a, b, c; ...scanf(“%3d %3d %3d”,&a,&b,&c); ...}

Влез

Излез

1 2 3 a=1, b=2, c=3
123456789 a=123 b=456 c=789
#include<stdio.h>main() {int i; float f;char c; ...scanf(“%3d %5f%c”,&i,&f,&c); ...}

Влез

Излез

10256.875 T i=102 f=56.87 c=5

Треба да се напомене дека функцијата scanf го враќа бројот на прочитани параметри.

#include<stdio.h>main() {int i; float f = 3.0;char c = ‘a’;i = scanf(“%f %c”,&f,&c); printf(”%d %f %c”,i, f, c);}

Влез

Излез

a c 0 3.0 а
5.0 c 2 5.0 c

Печатење на податоци со printf() функцијата

Излезните податоци може да се запишат од компјутерската меморија на стандардниот излез со користење на библиотечната функција printf. Општата форма на printf функцијата е

printf(Kontrolna niza od znaci, arg1, arg2, …, argn)

каде контролната низа се однесува на низа од знаци која содржи информации за форматирањето. arg1, arg2, …, argn се аргументите кои ги претставуваат индивидуалните излезни податоци.

#include<stdio.h>#include<math.h>main() {float i = 2.0, j = 3.0; printf (“%f %f %f %f”, i, j, i+j, sqrt(i+j));}

Оваа програма на екранот ќе печати:

2.000000 3.000000 5.000000 2.236068

Бројот на конверзии во даден формат треба точно да одговара на бројот на аргументи во функцијата. При тоа, С ова нема да го потврди. Ако се дадени поголем број аргументи, вишокот аргументи се игнорираат. Ако, пак, нема доволен број аргументи, С ќе генерира чудни броеви за аргументите кои недостигаат.

#include<stdio.h>/* Variable for computation results */ int answer;int main() {answer = 2 + 2; printf("The answer is %d\n");return (0); }
#include<stdio.h>float result; /* Rezultat od delenje */ int main(){ result = 7.0 / 22.0;printf("Rezultatot e %d\n", result); return (0);}

Задачи за вежбање:

Задача 1.

Да се напише програма за пресметување и печатење на плоштината и периметарот на круг која ќе чита реален број кој го претставува радиусот на кругот.

ПРОГРАМА:

#include<stdio.h>

int main(void)

{

long double radius = 0.0L;

long double plostina = 0.0L;

const long double pi = 3.1415926353890L;

printf(“vnesi radius na krugot “);

scanf(”%Lf”,&radius);

plostina = pi * radius * radius;

printf(”P na krug so r %.3Lf e %.12Lf\n”, radius, plostina);

return 0;

}

Задача 2.

Да се напише програма која чита големи букви од тастатура и ги печати истите како мали букви.

ПРОГРАМА:

#include<stdio.h>

int main(void)

{

char ch;

printf(“Vnesi golema bukva “);

scanf(”%c”,&ch);

printf(”Mala ekvivalent bukva na ‘%c’ e ‘%c’\n”, ch, ch-’A’+’a’);

return 0;

}

Задача 3.

Кој ќе биде излезот на следната програма?

#include<stdio.h>

int main(void)

{

int i=0, j, k=7, m=5;

j = m += 2;

printf(“j = %d\n“, j); // j = 7

j = k++>7;

printf(”j = %d\n”, j); // j = 0

j = i == 0 || --k;

printf(“j = %d\tk = %d\n”, j, k); // j = 1 k = 8

return 0;

}

Задача 4.

Да се напише програма која ќе прочита два цели броја и ќе ја испечати нивната сума, разлика, производ и остатокот при делењето. Програмата исто така ќе прочита и со која прецизност треба да ги испечати двата броја.

ПРОГРАМА:

#include<stdio.h>

int main(void)

{

int prv, vtor, vkupno, dec;

printf(“vnesi dva broja “);

scanf(”%i %i”,&prv,&vtor);

printf(“vnesi preciznost vkupno decimalni mesta “);

scanf(”%i %i”,&vkupno,&dec);

printf(“%i + %i = %0*i\n“, prv,vtor,vkupno,prv + vtor);

printf(“%i - %i = %0*i\n“, prv,vtor,vkupno,prv - vtor);

printf(“%i * %i = %0*i\n“, prv,vtor,vkupno,prv * vtor);

printf(“%i / %i = %0*.*lf\n“,prv,vtor,vkupno,dec,prv / vtor);

printf(“%i %% %i = %0*i\n“, prv,vtor,vkupno,prv % vtor);

return 0;

}

ИЗЛЕЗ:

vnesi dva broja 12345 56789

vnesi preciznost vkupno mesta decimalni mesta 9 3

12345 + 56789 = 000069134

12345 - 56789 = -00044444

12345 * 56789 = 701060205

12345 / 56789 = 00000.000

12345 % 56789 = 000012345

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Вовед во програмирање. OpenStax CNX. Oct 28, 2013 Download for free at http://cnx.org/content/col11379/1.12
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Вовед во програмирање' conversation and receive update notifications?

Ask