Студопедия Главная Случайная страница Задать вопрос

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Форматный ввод





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

Общий вид записи оператора ввода

scanf(" форматная строка ", cпиcoк адресов переменных);

форматы ввода адреса вводимых переменных

Форматы ввода - это строка в кавычках, в которой перечислены один или несколько форматов (спецификаторов) ввода данных (% - признак спецификатора):

%d - ввод целого числа ( для переменной типа int)

%f - ввод вещественного числа ( для переменной типа float)

%с - ввод одного символа ( для переменной типа char)

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

a - значение переменной a

&a - адрес переменной a

Например:

#include "stdafx.h"

int main(){ int p; float k; double m;.......... scanf("%d %f %lf",&p,&k,&m);..........}

Для обеспечения форматного ввода к программе следует подключить заголовочный файл stdio.h. Строка вводимых данных поступает со стандартного устройства ввода (stdin), которым по умолчанию считается клавиатура. Завершение набора строки ввода - нажатие клавиши Enter.

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

В приведенном примере переменной p (в списке ввода указан ее адрес - &p), объявленной с помощью спецификатора типа int, соответствует спецификатор %d. Это означает, что первым числовым значением, набранным на клавиатуре, может быть только целое десятичное число со знаком (d - от decimal, десятичный). Вещественной переменной k типа float в форматной строке соответствует формат %f. Это означает, что второе числовое значение в строке ввода должно принадлежать диапазону, предусмотренному для коротких вещественных данных. Для переменной m типа double использован формат %lf (l (это буква эль)- от long).

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

Кроме того, тип переменных должен совпадать с указанным форматом: например, если a и b - целые переменные, то следующие вызовы функций ошибочны

scanf ( "%d %d", &a );

неясно, куда записывать второе введенное число;

scanf ( "%d %d", &a, &b, &c );

переменная c не будет введена, так как для нее не задан спецификатор;

scanf ( "%f %f", &a, &b );

нельзя вводить целые переменные по вещественному формату.

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

Пример ввода:

Пусть в задаче определены следующие исходные данные:

а = 4; х = 3,8; у =1,2*104; к=5; т = 74

Оператор ввода:

scanf("%d %f %f %d %d", &a, &х, &у, &k, &m);

вызывает чтение данных с клавиатуры, набранных следующим образом:

4 3.8 1.2Е4 5 74 [Enter]

%d %f %f %d %d - такой список форматов будет соответствовать следующему описанию переменных в программе:

main()

{ int a,k,m;

float x,y;






Дата добавления: 2014-11-12; просмотров: 314. Нарушение авторских прав

Studopedia.info - Студопедия - 2014-2017 год . (0.012 сек.) русская версия | украинская версия