Лекция: Ввод десятичных чисел с клавиатуры

 

В C для форматированного ввода данных с клавиатуры используется стандартная функция scanf. Эта функция позволяет вводить данные различных типов (числовых, символьных, строковых), однако сейчас ограничимся рассмотрением ввода только целых и вещественны десятичных чисел.

 

Первым параметром функции scanf является управляющая строка, а следующи-ми — указатели на вводимые переменные, то есть имена переменных с предшествующим знаком &. В управляющей строке указываются форматы ввода одной или парой букв по-сле знака %:

 

%d – для целых со знаком, %u – для целых без знака,

 

«Практикум по программированию на языке C в среде VS C++»


 

%f – для вещественных типа float, %lf – для вещественных типа double.

 

Например, если в программе есть переменные int k;

 

unsigned int j; float x;

double y;

 

и требуется ввести их значения, то можно использовать оператор scanf("%d %u %f %lf",&k,&j,&x,&y);

 

Вводимые числа можно разделять пробелами или знаками табуляции, вводить од-ной строкой или несколькими строками (нажимая для перехода на очередную строку клавишу Enter), например, так

-25 5.71 1e-5
или так  
-25  
5.71    
1e-5    

 

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

-25 77 5.71 1e-5

 

можно ввести несколькими, например двумя вызовами функции scanf, даже если они разделены другими операторами

 

scanf("%d %u",&k,&j);

 

…………

 

scanf("%f %lf",&x,&y);

 

В случае ошибки в наборе вводимых данных (появлении во входном потоке при вводе по числовым форматам не чисел и недопустимых разделителей между числами) работа программы не будет прервана. Это может оказаться причиной неверного резуль-тата работы программы, так как переменные из списка ввода функции scanf, не полу-чившие значений из входного потока, сохранят свои старые значения. Для обработки по-добных ошибок можно использовать различные приёмы, например,

 

1. вывод введённых чисел для визуального контроля:

 

 

«Практикум по программированию на языке C в среде VS C++»


 

scanf("%d %u %f %lf",&k,&j,&x,&y); printf("%d \t%u \t%g \t%g",k,j,x,y);

 

2. сравнение в программе с помощью операторов if или while (см. далее раздел «Программы разветвляющейся структуры» и «Программы циклической структуры») ко-личества переменных в списке ввода функции scanf, с количеством фактически прочи-танных из входного потока чисел, возвращаемым функцией (если оно 0, значит ошибка возникла до ввода первого числа, если 1, значит было прочитано только одно число и т.д.) и при несовпадении указанных количеств организовать либо повторный ввод, либо вывод соответствующего сообщения и выход из программы, либо какую-то другую об-работку.

 

еще рефераты
Еще работы по информатике