Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_C-03 (scanf).doc
Скачиваний:
1
Добавлен:
21.11.2019
Размер:
96.77 Кб
Скачать

Задание ширины поля

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

% [ширина] <тип данных, с модификатором или без него>

ЗАДАНИЕ 5 (учет длины полей при вводе)

1. Написать программу, в которой объявляются две переменные: x — типа float и m — типа int. Для ввода значений этих переменных используется вызов функции scanf с форматной строкой "%6f%d". После этого значения обеих переменных выводятся на экран, причем каждое с новой строки.

2. Объяснить результаты работы программы при вводе следующих последовательностей символов:

а) 987.654

б) -987.654

в) 987.6 54 (между 6 и 5 имеется пробел)

г) -987.65A4

Дополнение (игнорирование полей)

Символ * после знака % подавляет запоминание вводимого поля. Т.е. поле считывается в соответствии с форматом, но преобразованная величина никуда не записывается. При использовании этой спецификации соответствующий ей аргумент в списке не ищется.

Если число аргументов превышает число спецификаций формата, то лишние аргументы игнорируются.

Если спецификаторов формата (не считая спецификации с символом *) больше, чем аргументов в списке, то результат непредсказуем.

Задание

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

ЗАДАНИЕ 6 (применение полученных знаний)

Написать программу, вычисляющую длину катета прямоугольного треугольника по заданным гипотенузе и другому катету. В программе предусмотрены следующие действия.

1. Так как для решения задачи потребуется вычислять с помощью функции sqrt значение квадратного корня, то необходимо подключить заголовочный файл математических функций math.h. Прототип функции:

double sqrt (double x);

2.Пользователю предлагается ввести два числа — стороны треугольника:

3. Гипотенуза — большее из этих чисел, поэтому создаются две вспомогательные переменные hyp и cat, в которые с помощью условной операции ?: выбираются соответственно большее и меньшее из введенных чисел.

4. После этого вычисляется и на экран выводится искомая длина второго катета (показывать две цифры после запятой):

Контрольные вопросы к лабораторной работе

1. Почему для получения вводимых значений в функции scanf нужно указывать не переменные, а их адреса?

2. Что может входить в форматную строку функции scanf (3 типа элементов)?

3. Символы преобразования, используемые в форматной строке функции scanf.

4. Понятие поля ввода. Как во входном потоке определяется граница поля ввода?

5. Когда scanf прекращает работу (три случая)?

6. Роль указателя ширины поля в форматной строке функции scanf.

Справочная информация

Символ

преобразования

Тип вводимого значения

d,u

десятичное целое, десятичное беззнаковое

i

целое, которое может быть восьмеричным (с ведущим нулем) или шестнадцатеричным (с ведущими 0x или 0X)

o,x

восьмеричное, шестнадцатеричное

с

символ (любой, включая пробельные);

s

строка (непробельных) символов

e,f,g

число с плавающей точкой

p

адрес (указатель)

n

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

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