Сергей Талипов - Лекции по C++ для начинающих
- Название:Лекции по C++ для начинающих
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:2021
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Сергей Талипов - Лекции по C++ для начинающих краткое содержание
Лекции по C++ для начинающих - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Есть дополнительные операторы присваивания: +=, -=, *= и %=.
Вместо n = n + 2 можно использовать n += 2. += это аддитивная операция, в результате выполнения которой величина, стоящая справа, прибавляется к значению переменной, стоящей слева.
Аналогично:
n -= 2 это n = n – 2;
n *= 2 это n = n * 2;
n /= 2 это n = n / 2;
n %= 2 это n = n % 2.
Эти операции имеют тот же приоритет, что и операция присваивания =, то есть ниже, чем приоритет арифметических операций.
6) ОПЕРАТОР ВЫВОДА
Вначале рассмотрим функцию, определяющую форматный вывод:
printf("управляющая строка", аргумент1, аргумент2, …);
Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и команды формата, определяющие, как выводить аргументы. Команда формата начинается с символа %, за которым следует код формата.
ОСНОВНЫЕ КОДЫ КОМАНДЫ ФОРМАТА:
1. d – значением аргумента является десятичное целое число;
2. с – значением аргумента является символ;
3. s – значением аргумента является строка символов:
4. f – значением аргумента является вещественное число с плавающей точкой;
5. р – значением аргумента является указатель (адрес).
Функция printf использует управляющую строку, чтобы определить, сколько всего аргументов и каковы их типы. Например, в результате работы программы получена переменная i, имеющая значение 100, и переменная j, имеющая значение 25. Обе переменные целого типа. Для вывода этих переменных на экран в виде
int i = 100;
int j = 25;
необходимо применить функцию
printf("i = %d j = %d", i , j);
Как было описано выше, в кавычках задается формат вывода, перед знаком % записываются символы, которые будут непосредственно выданы на экран. После знака % применена спецификация d, т.к. переменные i и j имеют целый тип. Сами i и j приведены через запятую в списке аргументов.
Если после знака % стоит цифра, то она задает поле, в котором будет выполнен вывод числа. Приведем несколько функций printf, которые будут обеспечивать вывод одной и той же переменной S целого типа, имеющей значение 336.
Вызов функции printf("%2d", S);
Вывод: 336
В этом примере ширина поля (она равна двум) меньше, чем число цифр в числе 336, поэтому поле автоматически расширяется до необходимого размера.
Вызов функции printf("%6d", S)
Вывод: _ _ _336 (6 позиций)
То есть, в результате работы функции число сдвинуто к правому краю поля, а лишние позиции перед числом заполнены пробелами.
Вызов функции printf("%-6d", S);
Вывод: 336_ _ _ (6 позиций)
Знак «минус» перед спецификацией приводит к сдвигу числа к левому краю поля.
Рассмотрим вывод вещественных чисел. Если перед спецификацией f ничего не указано, то выводится число с шестью знаками после запятой, при печати числа с плавающей точкой перед спецификацией f тоже могут находиться цифры.
%6f – печать числа с плавающей точкой в поле из шести позиции;
%.2f – печать числа с плавающей точкой с двумя цифрами после десятичной точки;
%6.2f- печать числа с плавающей точкой в поле из шести позиций и двумя цифрами после десятичной точки.
Примеры:
float а = 3,687;
float b = 10,17;
Вызов функции printf("%7f %8f", a, b);
Вывод: _ _3.687_ _ _ _ 10.17
Как видно из примера, лишние позиции заполняются пробелами.
Вызов функции printf("%.2f %.2f", а, b);
Вывод: 3.69 10.17
В первом числе третья цифра после десятичной точки отброшена с округлением, т.к. указан формат числа с двумя цифрами после десятичной точки.
Вызов функции printf("%7.2f %e", a, b);
Вывод: _ _ _3.68 1.017000е+01
Поскольку для вывода значения переменной b применена спецификация е, то результат выдан в экспоненциальной форме. Следует отметить, что, если ширина поля меньше, чем число цифр в числе, то поле автоматически расширяется до необходимого размера.
Как было отмечено выше, в управляющей строке могут содержаться управляющие символьные константы. Среди управляющих символьных констант наиболее часто используются следующие:
\b – для перевода курсора влево на одну позицию;
\n – для перехода на новую строку;
\t – для горизонтальной табуляции;
Предположим, в результате работы программы переменная i получила значение 50.
Вызов функции printf("\t ЭBM\n%d\n", i);
Сначала выполнится горизонтальная табуляция (\t), т.е. курсор сместится от края экрана на 8 позиций, затем на экран будет выведено слово «ЭВМ» после этого курсор переместится в начало следующей строки (\n) затем будет выведено целое значение i по формату d, и окончательно курсор перейдет в начало новой строки (\n). Таким образом, результат работы этой функции на экране будет иметь вид:
_ _ _ _ _ _ _ _ ЭВМ
50
7) ОПЕРАТОРЫ ВВОДА
Для форматного ввода данных используется функция:
scanf("управляющая строка", аргумент1, аргумент2, …);
Если в качестве аргумента используется переменная, то перед ее именем записывается символ &. Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов, спецификации для определения типов аргументов такие же, как и для функции printf.
Если нам надо ввести значения для переменных i (целого типа) и а (вещественного типа). Эту задачу сможет выполнить функция: scanf("%d%f", &i, &a).
В управляющей строке спецификации трех типов могут быть отделены друг от друга различными знаками, в том числе и пробелом. Следовательно, при занесении значений переменных необходимо использовать указанный разделитель. Если функции не отделены одна от другой никакими значениями, то значения переменных заносятся через пробел.
/*
* Пример решения квадратного уравнения
*/
#include
#include
using namespace std;
int main() {
double a, b, c, x1, x2;
cout << "Введите значение a: "; cin >> a;
cout << "Введите значение b: "; cin >> b;
cout << "Введите значение c: "; cin >> c;
if ((b * b – 4 * a * c) >= 0) {
x1 = (-b + sqrt(b * b – 4 * a * c)) / (2 * a);
x2 = (-b – sqrt(b * b – 4 * a * c)) / (2 * a);
cout << "Первый корень = " << x1 << endl;
cout << "Второй корень = " << x2 << endl;
} else {
cout << "Нет решения: дискриминант меньше 0";
}
}
ПРИМЕР ЗАДАЧИ (EX2). Чему равна площадь трапеции, если основания равны, а = 6.5, b = 3.9, а высота h = 4.7?
#include
int main() {
float a, b, h, s;
printf("Введите значения – a, b, h \n");
scanf("\n%f %f %f", &a, &b, &h);
s = (a + b) * h / 2;
printf("Площадь трапеции");
printf("\ns = %f", s);
}
ПРИМЕР ЗАДАЧИ (EX3). Решить пример.
#include
#include
int main() {
float x, y, a;
printf("Введите исходное значение X \n");
scanf("%f", &x);
a = x + 0.25;
y = a + sin(exp(a)) + sqrt(a / 2.5);
printf("x = %f y = %-f", x, y);
}
ПРИМЕР ЗАДАЧИ. Вычислить значения функций.
Интервал:
Закладка: