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

Содержание

Функция scanf() представляет собой процедуру ввода общего назначения, которая читает поток stdin и сохраняет информацию в переменных, перечисленных в списке аргументов. Она может читать все встроенные типы данных и автоматически преобразовывать их в соответствующий внутренний формат.

В версии C99 к параметру format применен квалификатор restrict .

Спецификации формата начинаются знаком % и сообщают функции scanf() тип данного, которое будет прочитано. Спецификации формата приведены в таблице 13.3. Например, по спецификации %s будет прочитана строка, а по спецификации %d — целое значение. Строка форматирования читается слева направо, и спецификации формата сопоставляются аргументам в порядке их перечисления в списке аргументов.

Таблица 13.3. Спецификации формата функции scanf()
Код Назначение
%a Читает значение с плавающей точкой (только C99)
%A Аналогично коду %a (только C99)
%c Читает один символ
%d Читает десятичное целое
%i Читает целое в любом формате (десятичное, восьмеричное или шестнадцатеричное)
%e Читает число с плавающей точкой
%E Аналогично коду %e
%f Читает число с плавающей точкой
%F Аналогично коду %f (только С99)
%g Читает число с плавающей точкой
%G Аналогично коду %g
%o Читает восьмеричное число
%s Читает строку
%x Читает шестнадцатеричное число
%X Аналогично коду %x
%p Читает указатель
%n Принимает целое значение, равное количеству прочитанных до сих пор символов
%u Читает десятичное целое без знака
%[] Просматривает набор символов
%% Читает знак процента

Язык Си Урок 5. Функция scanf() и ввод с клавиатуры — StudioProWeb


По умолчанию спецификации a , f , e и g заставляют функцию scanf() присваивать данные переменным типа float . Если перед одной из этих спецификаций поставить модификатор l , функция scanf() присвоит прочитанные данные переменной типа double . Использование же модификатора L означает, что полученное значение присвоится переменной типа long double .

Современные компиляторы, поддерживающие добавленные в 1995 году средства работы с двухбайтовыми символами, позволяют к спецификации c применить модификатор l ; тогда будет считаться, что соответствующий указатель указывает на двухбайтовый символ (т.е. на данное типа whcar_t ). Модификатор l также можно использовать с кодом формата s ; тогда будет считаться, что соответствующий указатель указывает на строку двухбайтовых символов. Кроме того, модификатор l можно использовать для того, чтобы указать, что набор сканируемых символов состоит из двухбайтовых символов.

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

#9. Функция scanf() для форматированного ввода | Язык C для начинающих

Если в строке форматирования встретился символ, отличный от разделителя, то функция scanf() прочитает и отбросит его. Например, если в строке форматирования встретится %d , %d , то функция scanf() сначала прочитает целое значение, затем прочитает и отбросит запятую и, наконец, прочитает еще одно целое. Если заданный символ не найден, функция scanf() завершает работу.

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

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

scanf(«%d%d», c);

примет значения, введенные как 10 20 , но откажется от последовательности символов 10, 20 .

Символ * , стоящий после знака % и перед кодом формата, прочитает данные заданного типа, но запретит их присваивание. Следовательно, оператор

scanf(«%d%*c%d», y);

при вводе данных в виде 10/20 поместит значение 10 в переменную x , отбросит знак деления и присвоит значение 20 переменной у .

Команды форматирования могут содержать модификатор максимальной длины поля. Он представляет собой целое число, располагаемое между знаком % и кодом формата, которое ограничивает количество читаемых для всех полей символов. Например, если в переменную address нужно прочитать не более 20 символов, используется следующий оператор.

scanf(«%20s», address);

Если входной поток содержит более 20 символов, то при последующем обращении к операции ввода чтение начнется с того места, в котором «остановился» предыдущий вызов функции scanf() . Если разделитель встретится раньше, чем достигнута максимальная длина поля, ввод данных завершится. В этом случае функция scanf() переходит к чтению следующего поля.

Читайте также:
Какая программа открывает файлы sig на Андроид

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

scanf(«%c%c%c», b,

поместит символ x в переменную а , пробел — в переменную b , а символ у — в переменную с .

Помните, что любые символы управляющей строки (включая пробелы, символы табуляции и новой строки), не являющиеся спецификациями формата, используются для установки соответствия и отбрасывания символов из входного потока. Любой соответствующий им символ отбрасывается. Например, если поток ввода выглядит, как 10t20 , оператор

scanf(«%dt%d», y);

присвоит переменной x значение 10, а переменной у — значение 20. Символ t отбрасывается, так как он присутствует в управляющей строке.

Функция scanf() поддерживает спецификатор формата общего назначения, называемый набором сканируемых символов (scanset) . В этом случае определяется набор символов, которые могут быть прочитаны функцией scanf() и присвоены соответствующему массиву символов. Для определения такого набора символы, подлежащие сканированию, необходимо заключить в квадратные скобки. Открывающая квадратная скобка должна следовать сразу за знаком процента. Например, следующий набор сканируемых символов указывает на то, что необходимо читать только символы A , B и C .

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

Если первый символ в наборе является знаком ^ , то получаем обратный эффект: входное поле читается до тех пор, пока не встретится символ из заданного набора сканируемых символов, т.е. знак ^ заставляет функцию scanf() читать только те символы, которые отсутствуют в наборе сканируемых символов.

Во многих реализациях допускается задавать диапазон с помощью дефиса. Например, функция scanf (), встречая набор сканируемых символов в виде %[A-z] , будет читать символы, попадающие в диапазон от А до Z.

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

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

Модификаторы формата, добавленные к функции scanf() Стандартом C99

В версии C99 для использования в функции scanf() добавлены модификаторы формата hh , ll , j , z и t . Модификатор hh можно применять к спецификациям d , i , о , u , x и n . Он означает, что соответствующий аргумент является указателем на значение типа signed char или unsigned char . Модификатор ll также можно применять к спецификациям d , i , о , u , x и n . Он означает, что соответствующий аргумент является указателем на значение типа signed long long int или unsigned long long int .

Moдификaтop фopмaтa j , кoтopый пpимeняeтcя к cпeцификaциям d , i , о , u , х и n означает, что соответствующий аргумент является указателем на значение типа intmax_t или uintmax_t . Эти типы объявлены в заголовке и служат для хранения целых максимально возможной разрядности.

Модификатор формата z , который применяется к спецификациям d , i , о , u , х и n означает, что соответствующий аргумент является указателем на объект типа size_t . Этот тип объявлен в заголовке и служит для хранения результата операции sizeof .

Модификатор формата t , который применяется к спецификациям d , i , о , u , х и n означает, что соответствующий аргумент является указателем на объект типа ptrdiff_t . Этот тип объявлен в заголовке и служит для хранения значения разности между двумя указателями.

Пример

Действие данных операторов scanf() объясняется в комментариях.

#include int main(void) < char str[80], str2[80]; int i; /* читается строка и целое значение */ scanf(«%s%d», str, /* в переменную str считывается не более 79 символов */ scanf(«%79s», str); /* целое, расположенное между двумя строками, пропускается */ scanf(«%s%*d%s», str, str2); return 0; >

Источник: t-r-o-n.ru

Программирование на языке C++(вопросы). Ответы сиергия программирование на языке с Информация(строго к прочтению. )

Единственный в мире Музей Смайликов

Самая яркая достопримечательность Крыма

Скачать 32.18 Kb.

ОТВЕТЫ СИЕРГИЯ: ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++

Информация(СТРОГО К ПРОЧТЕНИЮ. )

— В данном тесте собрано 118 вопросов по данной дисциплине, при сдаче есть возможность допустить ошибку в + 1 вопросе, при допущенной ошибке в оригинальном итоговом тесте СИНЕРГИЯ!

— При ответах на вопросах с картинками будьте внимательны ответы данны в печатном ввиде

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

— Желаю удачи в сдачи дисциплины, ваш исполнитель BLACKHAWK (не торопитесь при сдаче, там достаточно времени

Перечень вопросов

1) Константы могут содержать в себе:

2) Ограничение доступа к составляющим объект компонентам(методам и переменным) — это:

3) Неверно, что алгоритм может быть записан:

4) Понятие парадигма программирования включает в себя:

Читайте также:
Что такое ezvid программа

5) Полиморфизм — это средство, позволяющее:

6) Модульное программирование — это:

7) К основным принципам объектно-ориентированного программирования можно отнести:

8) Наследование — это:

9) Поименнования часть программы, содержащая определенный набор операций, называется:

10) Полиморфизм реализован через механизмы:

11) Функция — это некоторая часть программы:

12) . алгоритм — это алгоритм, решающий задачу путем решения одного или нескольких более узких вариантов той же задачи

13) Параметр(переменная), указываемый при объявлении или определении, — это . параметр:

14) Прототипом функции называется:

15) Говоря о передаче параметра по ссылке, можно утверждать что:

16) Функциями называют подпрограммы:

17) . — это такой способ определения функции, при котором результат возврата из функции для данного значения аргумента определяется на основе результата возврата из той же функции для предыдущего (меньшего или большего) значения аргумента

18) Под областью видимости функции следует понимать:

19) При составлении подпрограмм с параметрами надо соблюдать определенные правила, в частности

20) Специализированный метод класса, предназначенный для уничтожения существующего экземпляра, – это:

21) Возможность и способ обращения производного класса к элементам базового определяются … класса:

22) Модель процесса разработки программного обеспечения, жизненный цикл которой выглядит как поток, последовательно проходящий фазы анализа требований, проектирования, называется …:

23) Логическое выражение может возвращать результат типа:

24 ) Под объектами следует понимать:

25) Тело цикла … всегда будет выполнено хотя бы один раз, независимо от истинности условия

26) Конструктором называется метод, имя которого

27) Такой режим работы с потоком, как создание нового файла для записи и чтения, обозначается в языке С (С++) как …

28 ) Говоря о конструкторах, можно утверждать, что …

30) Говоря о конструкторах, можно утверждать, что:

31) Изменение состояния объекта в ответ на какое-либо действие называется:

32) Размер массива M после выполнения кода char M[ ]=»nGoodlive»:

33) Если дан массив int L[3][3] = < < 2, 3, 4 >, < 3, 4, 8 >, < 1, 0, 9 >>;. то значение элемента этого массива L[1][2] будет равно:

34) Сложный тип данных, состоящий из множества одинаковых элементов, – это …:

35) Массивом называют:

36) Класс с методами и переменными для организации работы со строками в языке программирования C++ называется:

37 ) Тип данных «…» – это класс, входящий в стандартную библиотеку языка и инкапсулирующий строку как массив символов:

38 ) Символьные массивы в С++ используются для :

39) Алгоритмы … используются для того, чтобы упорядочить элементы массива по убыванию или возрастанию:

40) Если размер массива 21, то порядковый номер последнего элемента массива – …:

41) Говоря про определение максимальной длины строки, можно утверждать, что:

42) В языке С++ встроенный тип данных int предназначен для хранения:

43) Полиморфизм в объектно-ориентированном программировании реализуется …:

44) Если после выражения стоит точка с запятой, то:

45) Перегрузке поддаются … операции:

46) Две формы использования перегруженных операторов:

47) Ключевое слово … языка С++ используется для описания структурированного типа данных, все элементы которого в памяти начинаются с одного байта

48 ) Тип int для 32-разрядных вычислительных систем имеет диапазон значений от:

49 ) Перегрузка операторов происходит с помощью операторных:

50) Согласно общим правилам выбора перегружаемого оператора:

51) Оператор return в теле функции необходимо использовать:

52) Оператор namespace предназначен для:

53) Перегрузка операторов языка С++ необходима для:

54) Для доступа к элементам объекта при обращении через имя объекта используют …

55) Для определения указателя необходимо использовать запись: …:

56 ) При открытии файла выполняется следующее действие: …

57) Указатель – это указатель, значение которого не может быть изменено после инициализации

58) Целое, которое может быть присвоено указателю, является …

59) Объявление char *buf; соответствует созданию …:

60) В языке С++ в функцию в качестве параметров …

61) Указателем называется …

62) Переменная вещественного типа float имеет размер в байтах, равный .

63) Для инициализации указателя можно использовать …:

64) Выбор функции-члена зависит от …:

65) Правильный вариант выделения динамической памяти под переменную X типа float: …:

66 ) Для объявления дружественной функции используется ключевое слово … :

67 ) Отличие виртуальной функции от обычной заключается в том, что для …

68) Дружественная функция – это функция, …

69) Функция …, описанная в заголовочном файле, читает строку символов из файла

70) Если в арифметическом выражении участвуют целый и вещественный операнды, то …

71) Потеря точности произойдет в выражении …

72) Для объявления виртуальной функции используется ключевое слово …

73) Виртуальными называются функции … :

74) Правильное объявление производного класса: …

75) Если элементы класса объявлены как …

76) В переменной типа unsigned char можно хранить число …

77) Класс, используемый для работы с входными потоками, – …

79) Поток ввода используется для …

80) Если определена операция вычитания для двух объектов класса A, а операция преобразования к int не определена, то при …: A a1,a2,a3=5; a3=a1-a2;

81 ) Для работы с выходными потоками используется …

82) В переменной типа unsigned char можно хранить число …

83) Числовое значение выражения e/2*a-abs(e)*1e0 (при e = 4, a = 2) будет равно …

Читайте также:
Определение слова программа в информатике

84) В интегрированную среду программирования может входить такой компонент, как …

85) Стандартный поток …

86) Класс iostream используется для обработки …

88) Правильно записанный набор перечисляемых значений: …

89) Отсчитать новую позицию с начала файла можно с помощью …

90 ) Производить установку текущей позиции в нужную, указываемую числом, можно с помощью метода …

91 ) Результатом вычисления выражения int d=5; bool b = true, c; c = (!b||(d>3)): будет …

92) Значение выражения (a ! b || c), где a, b и с – величины типа bool, имеющие значения false, true и true соответственно, равно …

93) Не содержит синтаксических ошибок выражение …

94) Говоря о различии в использовании выражений #include и #include «…», можно утверждать, что …

95) Не содержит синтаксических ошибок выражение …

96) Отсчитать новую позицию с конца файла можно с помощью …

97) Коллекция классов и функций, написанных на базовом языке, – это …

98) Перескочить на n байт начиная от текущей позиции в файле (по умолчанию) можно с помощью …

99) В ряду причин использования многофайловых программ:

100) Шаблоны функций могут принимать …:

101) Структура данных, которая работает по принципу FILO, – это …

102) При использовании в программе функции scanf требуется разделять числовые значения величин при вводе при помощи …

103) При использовании в программе функции scanf требуется разделять числовые значения величин при вводе при помощи …

104) Переопределение операций имеет вид: имя_класса, …

105) Обобщенное описание поведения функций, которые могут вызываться для объектов разных типов, – это … функций

106) Шаблон функици — это.

107) Существуют … виды исключений

108) Не содержит синтаксических ошибок выражение …

109) Шаблоны классов – это …

110) Числовое значение выражения sqrt(4)+142/20*2 равно …

111) Деструктором называют :

112) Функция вычисляет произведение двух чисел. Исходные данные вводятся с клавиатуры. Какие проверки целесообразно ввести в программе?

113) Чтобы задать многострочный комментарий в языке С++, нужно набрать …

114) Массив — это именнованный набор. в одной области памяти

115) Объект — это

117) Динамическое выделение памяти – это когда память под объект (переменную) …

Источник: topuch.com

Тест на тему: «C++»

Перед вами вопросы теста, правильный ответ только 1. Время на прохождение теста не ограничено, правильные ответы будут отображаться после нажатия на кнопку результатов (внизу).

ИнформатикаПрочее 23.12.2021 0 549

Share your score!

Tweet your score!

#1. Какой из компонентов может входить в интегрированную среду программирования

A. наладчик
A. наладчик
B. доводчик
B. доводчик
C. отладчик

C. отладчик

#2. Отметьте истинное высказывание

A. переменная инициализируется, потом объявляется
A. переменная инициализируется, потом объявляется
B. переменная объявляется, потом инициализируется и изменяется
B. переменная объявляется, потом инициализируется и изменяется
C. переменная объявляется, потом изменяется

C. переменная объявляется, потом изменяется

#3. Чему равно значение выражения (a ! b || c), где a, b и с -величины типа bool, имеющие значения false, true и true соответственно

#4. В переменной типа unsigned char можно хранить число

#5. Функция вычисляет произведение двух чисел. Исходные данные вводятся с клавиатуры. Какие проверки целесообразно ввести в программе

A. проверка, что исходные данные являются числами
A. проверка, что исходные данные являются числами
B. проверки не нужны, все возможные ошибки отловит компилятор
B. проверки не нужны, все возможные ошибки отловит компилятор
C. проверка исходных данных на равенство нулю

C. проверка исходных данных на равенство нулю

#6. Чему будет равен результат вычисления выражения int d=5; bool b = true, c; c = (!b||(d>3))

A. Ошибка компилятора
A. Ошибка компилятора

#7. Какой из наборов перечисляемых значений записан правильно

#8. Выберите правильное утверждение

A. целой переменной можно присвоить вещественную константу
A. целой переменной можно присвоить вещественную константу
B. целой константе можно присвоить целую переменную
B. целой константе можно присвоить целую переменную
C. целой константе можно присвоить вещественную переменную

C. целой константе можно присвоить вещественную переменную

#9. Чему равно числовое значение выражения sqrt(4)+142/20*2

#10. Какой из компонентов может входить в интегрированную среду программирования

A. текстовый редактор
A. текстовый редактор
B. текстовый директор
B. текстовый директор
C. текстовый модератор

C. текстовый модератор

#11. В чем различие использования следующих выражений #include и #include «…»

A. различие заключается в методе поиска препроцессором включаемого файла
A. различие заключается в методе поиска препроцессором включаемого файла
B. в различии использования заголовочных и исходных файлов
B. в различии использования заголовочных и исходных файлов
C. нет различий

C. нет различий

#12. Что из себя представляет динамическое выделение памяти

A. память под объект (переменную) может выделяться не сразу, а в процессе работы программы, освобождение памяти производится вручную

A. память под объект (переменную) может выделяться не сразу, а в процессе работы программы, освобождение памяти производится вручную

B. память под объект (переменную) может выделяться не сразу, а в процессе работы программы, освобождение памяти производится автоматически после завершения программы

B. память под объект (переменную) может выделяться не сразу, а в процессе работы программы, освобождение памяти производится автоматически после завершения программы

Источник: nauchniestati.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru