Функции вывода данных на дисплей

В языке Си нет встроенных средств ввода/вывода данных. Ввод/вывод информации осуществляется с помощью библиотечных функций и объектов.

Декларации функций ввода/вывода, как уже упоминалось, приведены в заголовочном файле stdio.h.

Для вывода информации на экран монитора (дисплей) в языке Си чаще всего используются функции: printf() и puts().

Формат функции форматного вывода на экран:

printf( управляющая строка , список объектов вывода);

В управляющей строке, заключенной в кавычки, записывают: поясняющий текст, который выводится на экран без изменения (комментарии), список модификаторов форматов, указывающих компилятору способ вывода объектов (признак модификатора формата – символ %) и специальные символы, управляющие выводом (признак – символ \).

В списке объектов вывода указываются идентификаторы печатаемых объектов, разделенных запятыми: переменные, константы или выражения, вычисляемые перед выводом.

Количество и порядок следования форматов должен совпадать с количеством и порядком следования выводимых на экран объектов.

Функция printf выполняет вывод данных в соответствии с указанными форматами, поэтому формат может использоваться и для преобразования типов выводимых объектов.

Если признака модификации (%) нет, то вся информация выводится как комментарии.

Основные модификаторы формата:

%d (%i) – десятичное целое число;
%c – один символ;
%s – строка символов;
%f – число с плавающей точкой, десятичная запись;
– число с плавающей точкой, экспоненциальная запись;
%g – используется вместо f, e для исключения незначащих нулей;
%o – восьмеричное число без знака;
%x – шестнадцатеричное число без знака.

Для чисел long добавляется символ l, например, %ld – длинное целое, %lf – число вещественное с удвоенной точностью – double.

Если нужно напечатать сам символ %, то его нужно указать 2 раза:

printf ("Только %d%% предприятий не работало. \n",5);

Получим: Только 5% предприятий не работало.

Управляют выводом специальные последовательности символов: \n – новая строка; \t – горизонтальная табуляция; \b – шаг назад; \r – возврат каретки; \v – вертикальная табуляция; \\ – обратная косая; \' – апостроф; \" – кавычки; \0 – нулевой символ (пусто).

Пример:

#define PI 3.14159

. . .

int number = 5;

float bat = 255;

int cost = 11000;

. . .

printf(" %d студентов съели %f бутербродов. \n", number, but);

printf(" Значение числа pi равно %f. \n", pi);

printf(" Стоимость этой вещи %d %s. \n", cost, "Руб.");

. . .

В модификаторах формата функции printf после символа % можно указывать число, задающее минимальную ширину поля вывода, например, %5d – для целых, %4.2f – для вещественных – две цифры после запятой для поля шириной 4 символа. Если указанных позиций для вывода целой части числа не хватает, то происходит автоматическое расширение.

Если после «%» указан знак «минус», то выводимое значение будет печататься с левой позиции поля вывода, заданной ширины, например: % – 10d.

Использование функции printf для преобразования данных:

1) printf("%d", 336.65); получим: 336;

2) printf("%o", 336); получим: 520, т.е. 5*8**2+2*8+0*1 = 336;

3) printf("%x", 336); получим: 150 (шестнадцатеричное).

Можно использовать функцию printf для нахождения кода ASCII некоторого символа:

printf (" %c – %d\n", 'a', 'a');

получим десятичный код ASCII символа а: a – 65 .

Функция puts(ID строки); выводит на экран дисплея строку символов, автоматически добавляя к ней символ перехода на начало новой строки (\n).

Аналогом такой функции будет: printf(“%s \n”, ID строки);

Функция putchar() выдает на экран дисплея один символ без добавления символа ‘\n’.

Функции ввода информации

Функция, предназначенная для форматированного ввода исходной информации с клавиатуры:

scanf (управляющая строка , список адресов объектов ввода);

в управляющей строке указываются только модификаторы форматов, количество и порядок следования которых должны совпадать с количеством и порядком следования вводимых объектов, а тип данных будет преобразовываться в соответствии с модификаторами.

Список объектов ввода представляет собой адреса переменных, разделенные запятыми, т.е. для ввода значения переменной перед ее идентификатором указывается символ &, обозначающий операцию «взять адрес».

Если нужно ввести значение строковой переменной, то использовать символ & не нужно, т.к. строка – это массив символов, а ID массива является адресом его первого элемента. Например:

int course;

double grant;

char name[20];

printf (" Укажите курс, стипендию, имя \n ");

scanf ("%d %lf %s", &course, &grant, name);

Вводить данные с клавиатуры можно как в одной строке через пробелы, так и в форме разных строк, нажимая после ввода текущего объекта клавишу Enter.

Функция scanf() использует практически тот же набор модификаторов форматов, что и printf(); отличия от функции вывода следующие: отсутствует формат %g, форматы %e,%f – эквивалентны. Для ввода коротких целых чисел введен модификатор формата %h.

Внимание. Функцией scanf() по формату %s строка вводится только до первого пробела.

Для ввода фраз, состоящих из слов, разделенных пробелами, используется функция

gets (ID строковой переменной);

Символы вводятся при помощи функции getch(). Причем простой ее вызов организует паузу, при которой система программирования приостановит выполнение программы и будет ждать нажатия любой клавиши. Так поступают в том случае, когда нужно просмотреть какие-то результаты работы, при выводе их на экран монитора.

Если же использовать ее в правой части операции присваивания, например:

char c;

. . .

c = getch();

то символьная переменная с получит значение кода нажатой клавиши.

С началом работы любой программы автоматически открываются стандартные потоки для ввода (stdin) и вывода данных (stdout), которые по умолчанию связаны с клавиатурой и экраном монитора соответственно.

Внимание. Ввод данных функциями gets(), getch() выполняется с использованием потока stdin. Если указанная функция не выполняет своих действий (проскакивает), перед использованием необходимо очистить поток (буфер) ввода с помощью функции

fflush(stdin);

__________________________________________________________________

В языке С++ существует наиболее простая с точки зрения использования возможность ввода-вывода - потоковый ввод-вывод, основы которого рассмотрены в разд. 16.1, 16.2.

__________________________________________________________________

Советы по программированию

При выполнении вариантов заданий придерживайтесь следующих ключевых моментов.

1. Выбирайте тип для переменных с учетом диапазона их возможных значений и требуемой точности представления данных.

2. Старайтесь давать переменным ID (имена), отражающие их назначение.

3. При вводе данных с клавиатуры выводите на экран пояснения: что нужно ввести, т.е. организуйте диалог. Для контроля сразу же после ввода выводите исходные данные на дисплей (хотя бы в процессе отладки).

4. До запуска программы подготовьте тестовые примеры, содержащие исходные данные и ожидаемые результаты. Отдельно нужно проверить реакцию программы на заведомо неверные исходные данные. Для таких ситуаций необходимо предусмотреть вывод сообщений, например, «Ошибка! Решения нет».

5. При составлении выражений учитывайте приоритет используемых операций.

6. В функциях ввода/вывода printf и scanf для каждой переменной указывайте спецификацию формата, соответствующую ее типу. Не забывайте, что в функции scanf передается адрес переменной, а не ее значение.

7. При использовании стандартных функций требуется с помощью директивы препроцессору include подключить к программе соответствующие заголовочные файлы. Установить, какой именно файл необходим, можно с помощью справочной системы Visual C++ 6.0 – «MSDN».

8. Данные при вводе разделяйте пробелами, символами перевода строки или табуляции, но не запятыми.

__________________________________________________________________

Не смешивайте в одной программе ввод/вывод с помощью стандартных функций (в стиле Си) с вводом/выводом в потоке (в стиле C++).

__________________________________________________________________

ЗАДАНИЕ 1. Составление линейных алгоритмов

Первый уровень сложности

Составить программу для расчета двух значений z1 и z2, результаты которых должны совпадать [32]. Ввод исходных данных можно задавать при декларации или вводить с клавиатуры. Игнорировать возможность деления на ноль. Значение p = 3,1415926.

1. Функции вывода данных на дисплей - student2.ru .

2. Функции вывода данных на дисплей - student2.ru .

3. Функции вывода данных на дисплей - student2.ru .

4. Функции вывода данных на дисплей - student2.ru .

5. Функции вывода данных на дисплей - student2.ru .

6. Функции вывода данных на дисплей - student2.ru .

7. Функции вывода данных на дисплей - student2.ru .

8. Функции вывода данных на дисплей - student2.ru .

9. Функции вывода данных на дисплей - student2.ru .

10. Функции вывода данных на дисплей - student2.ru .

11. Функции вывода данных на дисплей - student2.ru .

12. Функции вывода данных на дисплей - student2.ru .

13. Функции вывода данных на дисплей - student2.ru .

14. Функции вывода данных на дисплей - student2.ru .

15. Функции вывода данных на дисплей - student2.ru .

Второй уровень сложности

Составить программу для расчета заданных выражений. Вводить исходные данные с клавиатуры. Обязательно проверять исключительные ситуации. Значение p = 3,1415926.

1. Функции вывода данных на дисплей - student2.ru .

При x = 14.26, y = –1.22, z = 3.5´10-2, результат t = 0.564849.

2. Функции вывода данных на дисплей - student2.ru .

При x = –4.5, y = 0.75´10-4, z = 0.845´102, результат u = –55.6848.

3. Функции вывода данных на дисплей - student2.ru .

При x = 3.74´10-2, y = –0.825, z = 0.16´102, результат v = 1.0553.

4. Функции вывода данных на дисплей - student2.ru .

При x = 0.4´104, y = –0.875, z = –0.475´10-3, результат w = 1.9873.

5. Функции вывода данных на дисплей - student2.ru

При x = –15.246, y = 4.642´10-2, z = 20.001´102, результат a = –182.036.

6. Функции вывода данных на дисплей - student2.ru .

При x = 16.55´10-3, y = –2.75, z = 0.15, результат b = –38.902.

7. Функции вывода данных на дисплей - student2.ru

При x = 0.1722, y = 6.33, z = 3.25´10-4, результат g = –172.025.

8. Функции вывода данных на дисплей - student2.ru

При x = –2.235´10-2, y = 2.23, z = 15.221, результат j = 39.374.

9. Функции вывода данных на дисплей - student2.ru

При x = 1.825´102, y = 18.225, z = –3.298´10-2, результат y = 1.2131.

10. Функции вывода данных на дисплей - student2.ru

При x = 3.981´10-2, y = –1.625´103, z = 0.512, результат a = 1.26185.

11. Функции вывода данных на дисплей - student2.ru

При x = 6.251, y = 0.827, z = 25.001, результат b = 0.7121.

12. Функции вывода данных на дисплей - student2.ru

При x = 3.251, y = 0.325, z = 0.466´10-4, результат c = 4.025.

13. Функции вывода данных на дисплей - student2.ru .

При x = 17.421, y = 10.365´10-3, z = 0.828´105, результат f = 0.33056.

14. Функции вывода данных на дисплей - student2.ru .

При x = 12.3´10-1, y = 15.4, z = 0.252´103, результат g = 82.8257.

15. Функции вывода данных на дисплей - student2.ru .

При x = 2.444, y = 0.869´10-2, z = –0.13´103, результат h = –0.49871.


Наши рекомендации