- •Лексемы
- •Идентификаторы
- •Константы
- •Операции
- •Знаки пунктуации
- •Основные типы данных.
- •Описание переменных
- •Оператор присваивания
- •Примеры программ
- •Форматированный ввод, вывод
- •Особенности ввода, вывода символов
- •Функции gets, puts, atoi, atol и atof
- •Занятие 2. Операторы выбора.
- •Выражения, операции
- •Логические операции
- •Условная операция
- •Условный оператор
- •Оператор перехода goto
- •Оператор выбора switch
- •Оператор цикла с предусловием (while)
- •Оператор цикла с постусловием (do - while)
- •Оператор цикла for
- •Примеры использования операторо цикла
- •Занятие 3. Указатели. Ссылки. Массивы. Работа со строками.
- •Указатели
- •Операции разыменования и взятия адреса
- •Инициализация указателей
- •Арифметические операции с указателями
- •Присваивание указателей
- •Сравнение указателей
- •Операция new
- •Операция delete
- •Примеры использования указателей
- •Одномерные массивы
- •Инициализация одномерных массивов
- •Примеры работы с одномерными массивами
- •Многомерные массивы
- •Занятие 4. Указатели и массивы.
- •Указатели и одномерные массивы
- •Размещение одномерных массивов в динамической памяти.
- •Массивы указателей
- •Занятие 5. Указатели и многомерные массивы.
- •Двухмерный массив и вспомогательный массив указателей
- •Список рекомендуемой литературы.
Форматированный ввод, вывод
В языке С++ функции ввода – вывода данных содержатся в нескольких библиотеках. Функции ввода с клавиатуры scanf() и вывода на экран дисплея printf() содержатся в библиотеке stdio - STandarD Input Output library – стандартной библиотеке ввода – вывода. С ее подключением мы уже сталкивались на первом занятии:
include <stdio.h> // Подключение библиотеки ввода-вывода
Функция вывода printf()
Общий вид:
printf(“управляющая строка”, аргумент1, аргумент2,…);
где управляющая строка содержит форматные спецификации, показывающие, как должны быть напечатаны аргументы из списка вывода;
аргумент1, аргумент2,…- это список выводимых на экран параметров (переменных, констант или выражений).
Каждому аргументу из списка, следующему за управляющей строкой, должна соответствовать своя форматная спецификация, например:
printf(“количество нулевых элементов =%d\n”,kol);
/* Переменная kol целая, выводится в соответствии со спецификацией для целых переменных -%d*/
Таблица основных форматных спецификаций.
-
Формат
Тип выводимой информации
%d
десятичное целое число
%c
один символ
%s
строка символов
%f
число с плавающей точкой в десятичной записи
%e
число с плавающей точкой в экспоненциальной записи
%p
адрес переменной, объекта.
Между знаком % и символом, определяющим спецификацию формата, можно указать модификатор формата - строку цифр, определяющую ширину поля для выводимого целого числа или точность для вещественного.
Например, в результате выполнения следующей строки printf("%f\n", 1.0/3.0); на экран будет выведено 0.333333. Если мы хотим ограничиться выводом двух цифр после запятой, то между знаком % и f, необходимо указать: 3.2. Первая цифра указывает общее количество позиций отводимое на экране для вывода числа, а вторая – означает число позиций, после запятой. Если для вывода числа потребуется большее число позиций, то компилятор, сам увеличит это значение.
printf("%3.2f\n", 1.0/3.0);
В результате на экран будет выведено:
0.33
Следует обратить внимание на вычисление значения, которое выводится на экран: 1.0/3.0. Так как мы выводим вещественное число (%f), то необходимо компилятору указать, что и при вычислении мы используем вещественные числа (3.0, а не 3; 1.0, а не 1). Иначе он будет пытаться преобразовать результат к целочисленному значению, что в лучшем случае приведет к округлению результата до 0, а в худшем – вызовет ошибку компилятора.
Пример 1. Вывести на экран данные целого и вещественного типов, используя различные модификаторы для форматных спецификаций.
#include <stdio.h>
int main( ) // Печать
{ int n=345; float a=54.123;
printf(“n=%d \n”,n);
printf(“n=%2d \n”,n); /* %2d указывает, что ширина поля должна равняться 2, но так как число состоит из 3 цифр, поле автоматически расширяется до трех */
printf(“n=%10d \n”,n); /* ширина поля вывода числа равна 10,
printf(“a=%f \n”,a); по умолчанию после запятой выдается 6 цифр, а ширина поля вывода берется такой, чтобы число поместилось в поле вывода */printf(“a=%1.3f \n”,a); /* после запятой 3 цифры, ширина поля автоматически расширяется так, чтобы число поместилось в поле вывода */
printf(“a=%5.1f \n”,a); /* после запятой 1 цифра, лишние позиции в целой части числа заполняются пробелами */
printf(“a=%10.5f \n”,a); /* после запятой 5 цифр, недостающие цифры после запятой заполняются нулям, а лишние позиции в целой части числа заполняются пробелами */
return 0;
}
Пример 2. Используя функцию printf(), вывести на экран текстовую строку, константы целого и вещественного типа.
#include <stdio.h>
int main( ) // Печать чепухи
{int number=5, num1=800, cost=3100;
float col=18.5;
printf(“%2d человек вместе могут поднять %5d арбузов по %5.1f кг каждый.\n”,
number,num1,col);
printf(“Я хотел бы иметь %8d %c ежемесячного дохода”,cost,’$’);
return 0;
}
Функция ввода scanf()
Общий вид:
scanf(“управляющая строка”, аргумент1, аргумент2,…);
где управляющая строка содержит те же форматные спецификации, что и функция printf(). Основное различие между функциями printf() и scanf() заключается в особенностях списка аргументов. Функция printf() использует имена переменных, константы или выражения, а функция scanf() только указатели на переменные. В применении функции scanf() это эквивалентно выполнению двух простых правил:
чтобы ввести некоторое значение и присвоить его переменной одного из основных типов, перед именем переменной требуется писать символ &;
чтобы ввести значение строковой переменной, использовать символ & не нужно.
При вводе с помощью с помощью scanf () сами вводимые значения можно отделять одним или нескольким пробелами или размещать на разных строках, например, ввод целых переменных x=4 и y=5 можно осуществить следующими способами:
4 5 <Enter> - 1 способ;
или
4 <Enter>
5 <Enter> - 2 способ.
Пример. Используя функцию scanf(), ввести с клавиатуры текстовую строку, константы целого и вещественного типа.
#include <stdio.h>
int main( ) // Пример использования функции scanf()
{int age;
float assets;
char pet[30]; // Объявление строковой переменной из 30 символов
printf
(“Укажите Ваш возраст, стоимость последней покупки и Ваше любимое животное. \n”);
scanf(“%d %f”, &age, &assets);
scanf(“%s”, pet); // Символ & отсутствует при указании строки символов
printf(
“Мой возраст %d \nстоимость последней покупки %f$\nмое любимое животное %s\n”,
age, assets, pet);
return 0;
}