Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование основы языка С++. Учебное пособие
.pdf
константное значение:
a. const type variable := value;
b. const variable = value;
c. const type variable = value;
8. Какая из следующих записей – правильный комментарий в С++?
a. /* комментарий */
b. {комментарий}
c. ** Комментарий **
d. */ Комментарии */
9. Программа, переводящая входную программу на исходном языке
в эквивалентную ей выходную программу на результирующем языке,
называется:
a. компилятор
b. транслятор
c. сканер
d. интерпретатор
10. Какую функцию должны содержать все программы на С++?
a. program()
b. main()
c. start()
d. system()
11. Чтобы подключить заголовочный файл в программу на С++,
например iostream необходимо написать:
a. #include <> с iostream внутри скобок
b. include #iostream,h;
c. #include <>; с iostream.h внутри скобок
d. include (iostreamh)
12. Какое ключевое слово указывает, что целая переменная не может
принимать отрицательные значения?
a. нет такого зарезервированного слова
b. positive
c. другое
d. long
e. unsigned
13. Укажите правильное приведение типа данных:
a. char:a;
b. a(char);
c. to(char, a);
61

d. (char)a;
14. Какое из следующих значений эквивалентно зарезервированному
слову true?
a. все варианты ответов
b. 1
c. -1
d. 66
e. 0.1
15. Преобразование целочисленной переменной value в ASCII эк-
вивалент:
a. (char) value
b. cout << value
c. char (value)
d. atoi(value)
16. В каком случае лучше всего использовать приведение типов дан-
ных?
a. во всех выше указанных случаях
b. чтобы изменить тип возвращаемого значения функции
c. при делении двух целых чисел, для того, чтобы вернуть результат
с плавающей точкой
d. чтобы разрешить программе использовать только целые числа
17. Почему приведение типов данных может быть не безопасно:
a. нет никаких опасностей.
b. некоторые преобразования не определены компилятором, такие
как – преобразование символа в целое.
c. вы можете временно потерять часть данных – таких, как отсече-
ние десятичной части чисел с плавающей точкой.
d. вы можете навсегда изменить значение переменной.
18. Какие преобразования типов данных не возможны без потери
данных:
a. все перечисленные преобразования не возможны
b. int to float
c. char to float
d. float to int
19. Это значение 5.9875e17 может быть сохранено в переменной,
типа:
a. short
b. float
62

c. long
d. int
e. bool
4.11 Задачи для самостоятельного решения
Задача 1. Дано расстояние L в сантиметрах. Используя операцию де-
ления нацело, найти количество полных метров в нем (1 метр = 100 см).
Задача 2. Дана масса M в килограммах. Используя операцию деле-
ния нацело, найти количество полных тонн в ней (1 тонна = 1000 кг).
Задача 3. Дан размер файла в байтах. Используя операцию деления
нацело, найти количество полных килобайтов, которые занимает данный файл (1 килобайт = 1024 байта).
Задача 4. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков
длины B (без наложений). Используя операцию деления нацело, найти
количество отрезков B, размещенных на отрезке A.
Задача 5. Даны целые положительные числа A и B (A > B). На отрезке
длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию взятия остатка от деления
нацело, найти длину незанятой части отрезка A.
Задача 6. Дано двузначное число. Вывести вначале его левую цифру (десятки), а затем – его правую цифру (единицы). Для нахождения
десятков использовать операцию деления нацело, для нахождения единиц – операцию взятия остатка от деления.
Задача 7. Дано двузначное число. Найти сумму и произведение его
цифр.
Задача 8. Дано двузначное число. Вывести число, полученное при
перестановке цифр исходного числа.
Задача 9. Дано трехзначное число. Используя одну операцию деления нацело, вывести первую цифру данного числа (сотни).
Задача 10. Дано трехзначное число. Вывести вначале его последнюю
цифру (единицы), а затем – его среднюю цифру (десятки).
Задача 11. Дано трехзначное число. Найти сумму и произведение
его цифр.
Задача 12. Дано трехзначное число. Вывести число, полученное при
прочтении исходного числа справа налево.
Задача 13. Дано трехзначное число. В нем зачеркнули первую слева
цифру и приписали ее справа. Вывести полученное число.
63

Задача 14. Дано трехзначное число. В нем зачеркнули первую справа
цифру и приписали ее слева. Вывести полученное число.
Задача 15. Дано трехзначное число. Вывести число, полученное
при перестановке цифр сотен и десятков исходного числа (например,
123 перейдет в 213).
Задача 16. Дано трехзначное число. Вывести число, полученное при
перестановке цифр десятков и единиц исходного числа (например, 123
перейдет в 132).
Задача 17. Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти
цифру, соответствующую разряду сотен в записи этого числа.
Задача 18. Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти
цифру, соответствующую разряду тысяч в записи этого числа.
Задача 19. С начала суток прошло N секунд (N – целое). Найти
количество полных минут, прошедших с начала суток.
Задача 20. С начала суток прошло N секунд (N – целое). Найти
количество полных часов, прошедших с начала суток.
Задача 21. С начала суток прошло N секунд (N – целое). Найти
количество секунд, прошедших с начала последней минуты.
Задача 22. С начала суток прошло N секунд (N – целое). Найти
количество секунд, прошедших с начала последнего часа.
Задача 23. С начала суток прошло N секунд (N – целое). Найти
количество полных минут, прошедших с начала последнего часа.
Задача 24. Дни недели пронумерованы следующим образом: 0 – воскресенье,1 – понедельник, 2 – вторник, . . . , 6 – суббота. Дано целое
число K, лежащее в диапазоне 1–365. Определить номер дня недели
для K-го дня года, если известно, что в этом году 1 января было понедельником.
Задача 25. Дни недели пронумерованы следующим образом: 0 – воскресенье, 1 – понедельник, 2 – вторник, . . . , 6 – суббота. Дано целое
число K, лежащее в диапазоне 1–365. Определить номер дня недели для
K-го дня года, если известно, что в этом году 1 января было четвергом.
Задача 26. Дни недели пронумерованы следующим образом: 1 –
понедельник, 2 – вторник, . . . , 6 – суббота, 7 – воскресенье. Дано
целое число K, лежащее в диапазоне 1–365. Определить номер дня
недели для K-го дня года, если известно, что в этом году 1 января
было вторником.
64

Задача 27. Дни недели пронумерованы следующим образом: 1 – понедельник, 2 – вторник, . . . , 6 – суббота, 7 – воскресенье. Дано целое
число K, лежащее в диапазоне 1–365. Определить номер дня недели для
K-го дня года, если известно, что в этом году 1 января было субботой.
Задача 28. Дни недели пронумерованы следующим образом: 1 –
понедельник, 2 – вторник, . . . , 6 – суббота, 7 – воскресенье. Дано
целое число K, лежащее в диапазоне 1–365, и целое число N, лежащее
в диапазоне 1–7. Определить номер дня недели для K-го дня года, если
известно, что в этом году 1 января было днем недели с номером N.
Задача 29. Даны целые положительные числа A, B, C. На прямоугольнике размера A × B размещено максимально возможное количество
квадратов со стороной C (без наложений). Найти количество квадратов,
размещенных на прямоугольнике, а также площадь незанятой части
прямоугольника.
Задача 30. Дан номер некоторого года (целое положительное число). Определить соответствующий ему номер столетия, учитывая, что,
к примеру, началом 20 столетия был 1901 год.
Задача 31. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».
Задача 32. Дано целое число A. Проверить истинность высказывания: «Число A является нечетным».
Задача 33. Дано целое число A. Проверить истинность высказывания: «Число A является четным».
Задача 34. Даны два целых числа: A, B. Проверить истинность высказывания: «Справедливы неравенства A > 2 и B ≤ 3».
Задача 35. Даны два целых числа: A, B. Проверить истинность высказывания: «Справедливы неравенства A ≥ 0 или B < −2».
Задача 36. Даны три целых числа: A, B, C. Проверить истинность
высказывания: «Справедливо двойное неравенство A < B < C».
Задача 37. Даны три целых числа: A, B, C. Проверить истинность
высказывания: «Число B находится между числами A и C».
Задача 38. Даны два целых числа: A, B. Проверить истинность высказывания: «Каждое из чисел A и B нечетное».
Задача 39. Даны два целых числа: A, B. Проверить истинность высказывания: «Хотя бы одно из чисел A и B нечетное».
Задача 40. Даны два целых числа: A, B. Проверить истинность высказывания: «Ровно одно из чисел A и B нечетное».
65

Задача 41. Даны два целых числа: A, B. Проверить истинность вы-
сказывания: «Числа A и B имеют одинаковую четность».
Задача 42. Даны три целых числа: A, B, C. Проверить истинность
высказывания: «Каждое из чисел A, B, C положительное».
Задача 43. Даны три целых числа: A, B, C. Проверить истинность
высказывания: «Хотя бы одно из чисел A, B, C положительное».
Задача 44. Даны три целых числа: A, B, C. Проверить истинность
высказывания: «Ровно одно из чисел A, B, C положительное».
Задача 45. Даны три целых числа: A, B, C. Проверить истинность
высказывания: «Ровно два из чисел A, B, C являются положительными».
Задача 46. Дано целое положительное число. Проверить истинность
высказывания: «Данное число является четным двузначным».
Задача 47. Дано целое положительное число. Проверить истинность
высказывания: «Данное число является нечетным трехзначным».
Задача 48. Проверить истинность высказывания: «Среди трех дан-
ных целых чисел есть хотя бы одна пара совпадающих».
Задача 49. Проверить истинность высказывания: «Среди трех дан-
ных целых чисел есть хотя бы одна пара взаимно противоположных».
Задача 50. Дано трехзначное число. Проверить истинность выска-
зывания: «Все цифры данного числа различны».
66

РАЗДЕЛ 5
ОРГАНИЗАЦИЯ ПОТОКОВОГО ВВОДА-ВЫВОДА В С++
5.1. Форматированный ввод-вывод в C++
Для управления вводом-выводом в C++ используются:
флаги форматного ввода-вывода;
•
манипуляторы форматирования.
•
5.1.1. Использование флагов форматного ввода-вывода
Флаги позволяют включить или выключить один из параметров
вывода на экран. Для установки флага вывода используется следующая
конструкция языка C++:
std::cout.setf(ios::flag)
Для снятия флага используется конструкция:
// flag – имя конкретного флага
std::cout.unsetf(std::ios::flag)
Если при выводе необходимо установить несколько флагов, то необходимо воспользоваться логической операцией «OR» (|). В этом случае
конструкция будет иметь следующий синтаксис:
// flag1, flag2, flag3 – имена устанавливаемых флагов вывода
std::cout.setf(std::ios::flag1|std::ios::flag2| std::ios::flag3)
Основные флаги форматирования с примерами приведены в таблице 5.1.
Таблица 5.1 – Флаги форматирования в С++
Флаг Назначение Пример
boolalpha Вывод логических ве-
личин в текстовом виде
(true, false)
std::cout.setf(std::ios::boolalpha);
bool log_false = 0, log_true = 1;
std::cout << log_false << std::endl <<
log_true << std::endl;;
//Результат
false
true
67

oct Ввод/вывод величин в
восьмеричной системе
счисления (сначала снимаем флаг dec, затем устанавливаем флаг oct)
dec Ввод/вывод величин в де-
сятичной системе счисления (флаг установлен
по умолчанию)
hex Ввод/вывод величин в
шестнадцатеричной системе счисления (сначала
снимаем флаг dec, затем
устанавливаем флаг hex)
showbase Выводить индикатор ос-
нования системы счисления
uppercase В шестнадцатеричной
системе счисления использовать буквы верхнего
регистра (по умолчанию
установлены буквы нижнего регистра)
std::cout.unsetf(std::ios::dec);
std::cout.setf(std::ios::oct);
int value;
std::cin >> value;
std::cout << value << std::endl;
//Результат
ввод:99
вывод:143
10
8
std::cout.setf(std::ios::dec);
int value = 148;
std::cout << value << std::endl;
//Результат
148
std::cout.unsetf(std::ios::dec);
std::cout.setf(std::ios::hex);
int value;
std::cin >> value;
std::cout << value << std::endl;
//Результат
ввод:99
вывод:63
10
16
std::cout.unsetf(std::ios::dec);
std::cout.setf(std::ios::oct |
std::ios::showbase);
int value;
std::cin >> value;
std::cout << value << std::endl;
//Результат
ввод:99
вывод:0143
10
8
std::cout.unsetf(std::ios::dec);
std::cout.setf(std::ios::hex |
std::ios::uppercase);
int value;
std::cin >> value;
std::cout << value << std::endl;
//Результат
ввод:255
вывод:FF
10
16
68

showpos Вывод знака плюс + для
положительных чисел
std::cout.setf(std::ios::showpos);
int value = 15;
std::cout << value << std::endl;
//Результат
+15
scientific Вывод чисел с плавающей
точкой в экспоненциальной форме
fixed Вывод чисел с плавающей
точкой в фиксированной
форме(по умолчанию)
right Выравнивание по правой
границе (по умолчанию).
Сначала необходимо
установить ширину
поля(ширина поля должна
быть заведомо большей
чем, длина выводимой
строки).
left Выравнивание по левой
границе. Сначала необходимо установить ширину
поля(ширина поля должна
быть заведомо большей
чем, длина выводимой
строки).
std::cout.setf(std::ios::scientific);
double value = 1024.165;
std::cout << value << std::endl;
//Результат
1.024165e+003
double value = 1024.165;
std::cout << value << std::endl;
//Результат
1024.165
std::cout.width(40);
std::cout << "intel.com" << std::endl;
//Результат
__intel.com
std::cout.setf(std::ios::left);
std::cout.width(40);
std::cout << "intel.com" << std::endl;
//Результат
intel.com__
5.1.2. Форматирование с помощью манипуляторов
Манипулятор – объект особого типа, который управляет потоками
ввода/вывода, для форматирования передаваемой в потоки информации. В таблице 5.2 показаны основные манипуляторы форматирования
С++.
69

Таблица 5.2 – Манипуляторы форматирования в С++
Манипулятор Назначение Пример
endl Переход на новую строку
при выводе
boolalpha Вывод логических ве-
личин в текстовом виде
(true, false)
noboolalpha Вывод логических ве-
личин в числовом виде
(true, false)
oct Вывод величин в восьме-
ричной системе счисления
dec Вывод величин в десятич-
ной системе счисления
(по умолчанию)
hex Вывод величин в шест-
надцатеричной системе
счисления
showbase Выводить индикатор
основания системы
счисления
std::cout << "website:"<< std::endl <<
"intel.com";
//Результат
website:
intel.com
bool log_true = 1;
std::cout << std::boolalpha << log_
true << std::endl;
//Результат
true
bool log_true = true;
std::cout << std::noboolalpha <<
log_true << std::endl;
//Результат
1
int value = 64;
std::cout << std::oct << value <<
std::endl;
//Результат
100
8
int value = 64;
std::cout << std::dec << value <<
std::endl;
//Результат
64
10
int value = 64;
std::cout << std::hex << value <<
std::endl;
//Результат
40
8
int value = 64;
std::cout << std::showbase << std::hex
<<value << std::endl;
//Результат
0x40
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
