1. Изучить, в каких случаях и по каким правилам преобразования типов выполняются автоматически в языках Си и Турбо Паскаль.
2. Изучить возможности для явного преобразования типов в языках Си и Турбо Паскаль.
3. Разработать алгоритм и составить программы на языках Си и Турбо Паскаль для решения задачи соответствующего варианта. Необходимые преобразования описать подпрограммами.
4. Подобрать наборы тестовых данных.
Варианты заданий
1. В строке записано вещественное число r в форме с фиксированной точкой. Дописать в строку значение целой части r 2.
2. В строке записано вещественное число в форме с плавающей точкой. Вывести целую часть этого числа.
3. В строке записаны вещественные числа, которые разделены пробелами. Найти сумму этих чисел.
4. С клавиатуры вводятся целые числа и вещественные в форме с фиксированной точкой. Признак конца ввода – точка. Определить максимальное из целых и минимальное из вещественных чисел.
5. С клавиатуры вводятся целые числа. Признак конца ввода – ноль. Записать в строку эти числа как вещественные в форме с плавающей точкой, разделив пробелами.
6. Дано вещественное число r и целые неотрицательные m и n. Записать число r в строку в формате: m: n по правилам форматного вывода ТР.
7. Дано вещественное число r и целое неотрицательное m. Записать число r в строку в формате: m по правилам форматного вывода ТР.
8. В строке записано арифметическое выражение, содержащее целые числа в восьмеричной, десятичной и шестнадцатеричной системах счисления, соединенные знаками операций: +, -. Вычислить значение этого выражения. Признаком восьмеричного числа служит префикс 0 (ноль), шестнадцатеричного - $.
9. Дана последовательность пар целых неотрицательных чисел (pi, ni), 1< pi £16, i £20. Вывести каждое число ni в системе счисления с основанием pi.
10. В строке записаны целые неотрицательные числа, разделенные пробелами. Извлечь из каждого числа квадратный корень и вывести эти значения в форме с фиксированной точкой, сохранив не более двух десятичных знаков (незначащие нули не выводить).
11. В строке записано вещественное число r в форме с плавающей точкой. Определить, является ли это число целым. Если да, то присвоить это значение целой переменной n.
12. В строке записано вещественное число r в форме с плавающей точкой. Если это число не является целым, то найти такое минимальное целое k, чтобы n = r× 10 k было целым. Число n вывести.
13. В строке записано вещественное число в форме с плавающей точкой. Присвоить это значение вещественной переменной r, округлив его до тысячных.
14. С клавиатуры вводится последовательность вещественных чисел в форме с плавающей точкой, числа разделены запятыми. Записать введенную последовательность в строку в форме с фиксированной точкой.
15. С клавиатуры вводится последовательность целых чисел, разделенных запятыми. Записать каждое число в форме с плавающей точкой в нормализованном виде в строку, разделив числа пробелами.
16. В строке записано вещественное число в форме с фиксированной точкой. Преобразовать строку, записав в нее округленное до целых значение данного числа.
17. Строку, представляющую собой запись натурального числа в шестнадцатеричной системе счисления преобразовать в строку, представляющую собой запись того же числа в десятичной системе счисления.
18. Строку, представляющую собой запись вещественного числа в форме с фиксированной точкой, преобразовать в строку, представляющую собой запись того же числа в форме с плавающей точкой в нормализованном виде.
19. В строке записано число p – основание системы счисления, а затем целое неотрицательное число n в p -ичной системе счисления. Целочисленной переменной присвоить значение n.
20. В строке записано число в форме с плавающей точкой. Записать в строку целую часть этого числа в четверичной системе счисления.
21. Вещественной переменной присвоить значение, записанное в строке.
22. Дано вещественное число. Записать в строку целую часть данного числа в восьмеричной системе счисления.
23. В строке записано число в форме с плавающей точкой. Вещественной переменной присвоить дробную часть этого числа.
24. В строке записано число в форме с плавающей точкой. Целочисленной переменной присвоить целую часть этого числа.
25. Преобразовать вещественное число в строку, сохранив значащих n цифр (n £10).
26. В строке записано вещественное число в форме с плавающей точкой. Преобразовать эту запись к форме с фиксированной точкой.
27. Целую часть данного вещественного числа записать в строку в шестнадцатеричной системе счисления.
28. В строке записано выражение вида m / n, где m и n – натуральные числа. Дописать в строку значение этого выражения, округлив его до сотых.
29. Создать функцию для ввода целого числа с терминала. Причем вводимое число может быть десятичным, если оно не начинается нулем, восьмеричным, если лидирующая цифра – ноль, шестнадцатеричным, если оно содержит префикс 0 x или 0 X. С помощью этой функции ввести три целых числа, затем вывести их сумму.
30. Описать функцию для ввода с терминала вещественного числа в форме с фиксированной точкой. С помощью этой функции ввести n чисел, затем вывести наибольшее из введенных чисел.
Контрольные вопросы
1. Какие преобразования типов и по каким правилам выполняются автоматически при вычислении значений выражений в языках Си и Турбо Паскаль?
2. Какие преобразования типов выполняются подпрограммами ввода и вывода?
3. Опишите последовательность типов в порядке повышения типа в языке Си.
4. Как выполняется явное преобразование типов в языках Турбо Паскаль и Си?
5. Пусть символьной переменной ch присвоено значение строчной латинской буквы. Напишите на языках Турбо Паскаль и Си выражения, значениями которых являются:
а) порядковый, номер этой буквы а алфавите;
b) соответствующая прописная буква.
6. Что будет выведено в результате выполнения оператора:
a) printf ("% c % i \ n ", '1'+1, '1'+1);
b) printf ("% с \ n ", 0 x 1 a З0);?
ЛАБОРАТОРНАЯ РАБОТА №14
Одномерные массивы
Цель работы: освоение работы с одномерными массивами в языке Си, в том числе и символьными строками.