Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab2_Zvit.DOC
Скачиваний:
2
Добавлен:
18.12.2018
Размер:
108.03 Кб
Скачать

Специфікатор %n

Специфікатор формату %n відрізняється від всіх інших. Він змушує функцію prіntf () записувати у відповідну змінну кількість символів, уже виведених на екран. Специфікатору %n повинен відповідати цілочисельний вказівник. Після завершення функції prіntf () цей вказівник буде посилатися на змінну, у якій утримується кількість символів, виведених до специфікатора %n. Цей незвичайний специфікатор ілюструється наступним прикладом.

#іnclude <stdіo.h>

іnt maіn(voіd)

{

іnt count;

prіntf("Це %n перевірка\n", &count);

prіntf("%d", count);

return 0;

}

Ця програма виведе на екран рядок "Це перевірка" і число 3. Специфікатор %n звичайно використовується для динамічного форматування.

Функція scanf()

Функція scanf () являє собою процедуру вводу. Вона може зчитувати дані всіх вбудованих типів і автоматично перетворювати числа у відповідний внутрішній формат. Дана функція є повною протилежністю до функції prіntf (). Прототип функції scanf () має такий вигляд.

іnt scanf (const char *управляюча_стрічка, ...)

Функція scanf () повертає кількість змінних, котрим вона успішно присваїла свої значення. Якщо при читанні відбулася помилка, функція scanf () повертає константу EOF. Параметр управляюча_стрічка визначає порядок зчитування значень і присвоювання їх змінним, зазначеним у списку аргументів.

Керуючий рядок складається із символів, розділених на три категорії.

Специфікатори формату.

Розділювічі.

Символи, що не є розділювачами.

Ввід чисел

Для вводу цілого числа використовуються специфікатори %d або %і. Для вводу числа із плаваючою крапкою, представленого в стандартному або науковому форматі, застосовуються специфікатори %е, %f або %g.

Використовуючи специфікатори %о або %х, можна вводити цілі числа, представлені у вісімковому або шістнадцятковому форматі відповідно. Специфікатор %х має два варіанти, призначених для ввід малих і великих шістнадцяткових цифр від А до F. Однак при вводі шістнадцяткових чисел це не має значення. Розглянемо програму, що виконує ввід вісімкового і шістнадцяткового числа.

#include <stdіo.h>

int maіn(voіd)

{

іnt і, j;

scanf("%o%x", &і, &j);

prіntf("%0 %x", і, j);

return 0;

}

Функція scanf () припиняє вводити числа, виявивши перший нечисловий символ.

Ввід рядків

Функцію scanf () можна застосовувати для вводу рядків із вхідного потоку. Для цього використовується специфікатор %s. Він змушує функцію scanf () зчитувати символи, поки не виявиться розділювач. Символи, пораховані із вхідного потоку, записуються в масив, на який посилається відповідний аргумент, а в кінець цього масиву записується нульовий байт. Функція scanf () вважає розділювачем пробіл, символ переходу на новий рядок, символ табуляції, символ вертикальної табуляції, а також символ прогону паперу. Отже, функцію scanf () не можна просто застосувати для вводу рядка "Це перевірка", оскільки ввід припиниться на першому ж пробілі.

Завдання до лабораторної роботи

Скласти програму для обчислення масиву значень функції для різних значень аргументу , використовуючи три оператори циклу. Значення аргументу розглянути в точках. Вивести на друк значення аргументу і функції в стовпчик, використовуючи можливості оператора printf.

, .

# include<stdio.h>

# include <math.h>

# include <fstream.h>

main () /* Example of program for Lab. No 2 */

{

float xp,xh,x,y;

int k,l;

/* Inputting the datas */

printf("\n");

printf("Input x0 and xh\n");

scanf("%f",&xp);

scanf("%f",&xh);

/* printf("\n"); */

printf("Input number of point k\n");

scanf("%d",&k);

ofstream flab2;

main>flab2;

printf("%10f%10f%5d\n",xp,xh,k);

printf("\n");

/* Calcilation using operator FOR */

printf("Calculation using FOR operator\n");

printf(" x y\n");

for(x=xp,l=1;l<=k;)

{

/* printf("x value\n"); */

/* printf("%f\n",x); */

y=cos(x);

printf("%12f%12f\n",x,y);

/* printf("x value\n"); */

/* printf("%f\n",x); */

l++;x+=xh;

}

/* Calculation using operator WHILE */

printf("\n");

printf("Calculation using WHILE operator\n");

printf(" x y\n");

l=1;x=xp;

while(l<=k)

{

y=cos(x);

printf("%12f%12f\n",x,y);

l++;x+=xh;

}

/* Calculation using operator DO-WHILE */

printf("\n");

printf("Calculation using DO-WHILE operator\n");

printf(" x y\n");

l=1;x=xp;

do

{

y=cos(x);

printf("%12f%12f\n",x,y);

l++;x+=xh;

}

while(l<=k);

return 0;

}

Результат

Input x0 and xh

0.0

3.14

Input number of point k

5

0.000000 3.140000 5

Calculation using FOR operator

x y

0.000000 1.000000

3.140000 -0.999999

6.280000 0.999995

9.420000 -0.999989

12.560000 0.999980

Calculation using WHILE operator

x y

0.000000 1.000000

3.140000 -0.999999

6.280000 0.999995

9.420000 -0.999989

12.560000 0.999980

Calculation using DO-WHILE operator

x y

0.000000 1.000000

3.140000 -0.999999

6.280000 0.999995

9.420000 -0.999989

12.560000 0.999980

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]