Задания для подготовки к работе
1. Изучить базовые типы данных в языке Си и сравнить их с основными типами данных языка Паскаль.
2. Изучить арифметические операции и операции присваивания в Си.
3. Ознакомиться с операторами в Си.
4. Изучить возможности стандартного ввода и вывода, в том числе форматного.
5. Разработать алгоритм и составить программу, по крайней мере, из двух функций для решения задачи соответствующего варианта. Результаты должны быть выведены в наиболее естественном виде. Например, если требуется многочлен x2+3x-4 разложить на множители, то результат выводится следующим образом:
x^2+3x-4=(x-1)(x+4).
6. Подобрать тестовые данные.
Варианты заданий
1. Найти остаток от деления многочлена Pn(x) на многочлен Qm(x).
2. Натуральные числа a и b называются дружественными, если каждое из них равно сумме делителей другого, исключая само это другое число. Найти все пары дружественных чисел, не превышающих данного n. Результат представить в виде
a=d1+d2+…+dk;
b=g1+g2+…+gp,
где di(i=1,2,…,k)–делители b;gi(i=1,2,…,p) – делители a.
3. Получить выражение, равное
где а –данное число; Pn(x) – данный многочлен.
4. Найти n первых натуральных чисел, равных сумме факториалов своих цифр. Например, 145=1!+4!+5!.
5. Проверить, является ли данное целое число а корнем данного многочлена Pn(x) с целыми коэффициентами и, если да, представить Pn(x) в виде Qn-1(x) (x-a).
6. Натуральное n-значное число называется числом Армстронга, если оно равно сумме n-х степеней своих цифр. Найти все n-значные числа Армстронга для данного n<9, каждое такое число вывести с новой строки. Например, 153=13+53+33.
7. Дана неправильная дробь Pn(x)/Qm(x).Выделить целую часть.
8. Простые числа вида 2р-1, где р - простое число, называются числами Мерсена. Найти все числа Мерсена, не превышающие данного n. Результат представить в виде m=2p-1. Например, 7=2^3-1.
9. Дан многочлен Pn(x) и число а. Получить многочлен Qn(x)=Pn(x+а) в стандартном виде.
10. Необходимо посчитать количество "счастливых" билетов с заданной суммой цифр, среди тех, номер которых состоит из 2n разрядов. "Счастливым" является билет, у которого сумма первых n цифр равна сумме n последних цифр.
11. Даны корни многочлена n-й степени x1,x2,…,xn. Получить многочлен Pn(x) в стандартном виде.
12. Автоморфными числами называются числа, запись которых совпадает с последними цифрами записи их квадратов. Найти все автоморфные числа из заданного промежутка [m, n]. Результат (например число 25) представить в следующем виде: 25^2=6*10^2+25
13. Представить произведение двух данных многочленов Pn(x) и Qm(x) в стандартном виде.
14. Число называется совершенным, если оно равно сумме своих делителей, меньших самого числа. Найти совершенные числа из данного промежутка [m,n]. Результат представить в виде
a=d1+d2+…+dk,
гдеdi(i= )- делители а.
15. Дан многочлен Pn(x). Получить (Pn(x))2в стандартном виде.
16. Из цифр двух натуральных чисел составить наибольшее возможное число, сохраняя первоначальную последовательность цифр.
17. Дано натуральное число n. Сколько различных цифр встречается в его десятичной записи?
18. Дана вещественная последовательность a1, a2, ¼ , an. Определить максимальное количество идущих подряд положительных членов последовательности. Вывести найденный фрагмент.
19. Найти величину максимального угла n-угольника, заданного координатами вершин.
20. Найти минимальное число слагаемых, при котором сумма ряда
1×1 + 1×2×2 + 1×2×3×3 + 1×2×3×4×4 +¼ станет больше данного числа n.
21. Даны оценки каждого из n студентов по k предметам. Не используя массивы, определить число студентов, не получивших:
1) ни одной "пятерки";
2) ни одной оценки выше "тройки".
22. Вводятся результаты опроса граждан: "y" ("да") или "n" ("нет"). Признак конца ввода – точка. Определить, сколько из последних опрошенных высказало одинаковое мнение и какое именно. Массивы не использовать.
23. Даны две неубывающие целочисленные последовательности. Вывести убывающую последовательность, составленную из членов данных последовательностей. Для выводимой последовательности массив не использовать.
24. Вывести все правильные дроби, знаменатели которых не превышают заданного n, и найти их сумму в виде смешанного числа
25. Вводится текст. Признак конца ввода – точка. Определить количество вхождений каждой латинской буквы.
26. Вводятся натуральные числа. Признак конца ввода – ноль. Определить их сумму и цифру, которая встречалась в записи этих чисел максимальное число раз.
27. Определить, содержится ли в данной последовательности целых чисел хотя бы одно число Фибоначчи.
28. Получить строку, содержащую последовательность из k натуральных чисел в пятеричной системе счисления, первым членом которой является данное n.
29. Определить, сколько чисел встречается в данной целочисленной последовательности по одному разу.
30. Определить, есть ли в данной целочисленной последовательности число, равное сумме двух каких-либо других членов этой последовательности.
Контрольные вопросы
1. Охарактеризуйте каждый из целочисленных типов Си.
2. Охарактеризуйте вещественные типы Си.
3. Перечислите арифметические операции Си и сравните их с соответствующими существующими операциями в Паскале.
4. В каком порядке выполняются операции при вычислении значений арифметических выражений в Турбо Си?
5. Чем отличается использование символа ";" в языках Паскаль и Си?
6. Какие значения будут присвоены переменным после обращения к функции ввода:
int j;
float r;
char s[10];
scanf("%4f %2d %s",&r,&j ,s);,
если на входе набрана строка
"157.123 код ошибки"?
7. Что будет выведено после выполнения следующего фрагмента программы:
int i = 851;
float f = -0.151E-1;
char s[] ="первый курс";
printf("i = %+5i,f=%-5.2g=%1.2f \n%10.6s\n",i,f,f,s);?
8. Вычислить значения переменных b и i после каждого из следующих операторов:
int i = 2,b = i++;
b*=++i; i /= - -b;.
ЛАБОРАТОРНАЯ РАБОТА №12
Побитовые операции в Си и в Турбо Паскале
Цель работы: получить навыки работы с отдельными разрядами целочисленных объектов.
Задание для подготовки к работе
1. Изучить побитовые операции в языках Си и Турбо Паскаль.
2. Разработать алгоритм и составить программы на языках Си и Паскаль для решения задачи соответствующего варианта. Bo всех случаях, где возможно, использовать побитовые операции.
3. Подобрать тестовые данные.
Варианты заданий
1. Выполнить циклический сдвиг в двоичном представлении данного натурального числа на k битов влево.
2. Определить, является ли восьмеричное представление данного натурального числа палиндромом.
3. Преобразовать целое число, переставив цифры двоичного представления данного натурального числа в обратном порядке.
4. Вывести в десятичном виде поле длины k двоичного представления данного натурального числа слева от n-го разряда.
5. Выполнить циклический сдвиг в двоичном представлении данного натурального числа на n разрядов вправо.
6. Преобразовать число, поменяв местами цифры каждой пары соседних цифр в двоичной записи данного натурального числа. Обмен начинается с младших разрядов. Непарная старшая цифра остается без изменения.
7. Определить, является ли двоичное представление данного натурального числа палиндромом.
8. Преобразовать число, переставив в обратном порядке цифры в шестнадцатеричном представлении данного натурального числа.
9. Преобразовать число, поменяв местами цифры каждой пары соседних разрядов в восьмеричной записи данного натурального числа. Непарная старшая цифра остается без изменения.
10. Выполнить циклический сдвиг на k цифр влево в восьмеричном представлении данного натурального числа.
11. Определить, является ли шестнадцатеричное представление данного натурального числа палиндромом.
12. Определить минимальную цифру в восьмеричной записи данного неотрицательного длинного целого.
13. Дано целое неотрицательное число n<216. Получить длинное целое число, нечетные биты которого равны нулю, а последовательность четных битов представляет собой данное число n.
14. Даны два символа ch1 и ch2. Получить целое число, последовательность нечетных битов которого представляет собой код ch1, а последовательность четных – код ch2.
15. Дано длинное целое неотрицательное число k. Получить целое число, отбросив нечетные биты данного числа k.
16. Дано целое неотрицательное число n. Получить два однобайтовых целых числа, одно из которых представляется последовательностью четных битов данного n, а другое – последовательностью нечетных битов.
17. Дано длинное целое неотрицательное число. Получить число, инвертируя его нечетные биты.
18. Дано целое неотрицательное число <216. Получить число перестановкой битов каждого байта данного числа в обратном порядке.
19. Определить максимальную длину последовательности подряд идущих битов, равных единице в двоичном представлении данного целого числа.
20. Определить максимальную цифру в восьмеричной записи данного неотрицательного длинного целого.
21. Просматривая биты данного длинного целого от старших к младшим, заменить каждое вхождение 101 на 000.
22. Удалить цифру А в записи данного шестнадцатеричного числа.
23. Дано длинное целое неотрицательное число. Получить число, инвертируя его четные биты.
24. Дано длинное целое неотрицательное число. Получить число, удалив в двоичной записи данного числа нули.
25. Дано длинное целое неотрицательное число. Заменить каждую цифру 7 в восьмеричной записи этого числа нулем.
26. Дано длинное целое неотрицательное число. Получить число, удалив каждую вторую цифру в двоичной записи данного числа, начиная со старших цифр.
27. Просматривая последовательность битов данного длинного целого от младших к старшим, удалить каждое вхождение подпоследова-тельности 101, сдвигая все биты слева от удаляемых на 3 вправо. Освобождающиеся биты справа заполнить нулями.
28. Удалить в шестнадцатеричной записи данного целого числа четные цифры.
29. Просматривая биты данного длинного целого от младших к старшим, заменить каждое вхождение 110 на 000.
30. Удалить цифру 1 в записи данного восьмеричного числа.
Контрольные вопросы
1. Перечислите побитовые операции, реализованные в языках Си и Турбо Паскаль.
2. Сравните приоритеты побитовых операций в языках Си и Турбо Паскаль.
3. Какие типы операндов допустимы в побитовых операциях?
4. Вычислите значения следующих выражений:
а) 5>>2 и –5>>2;
б) 5&3 и 5 && 3;
в) –5 | 2 и –5 || 2;
г) –5^2;
д) ~5 и !5.
5. Считаем, что длинное целое неотрицательное число m определяет множество А следующим образом: если k-й бит m равен 1, то kÎA. Напишите выражения для:
a) проверки принадлежности элемента kмножеству А;
б) включения элемента kв множество А;
в) исключения элемента kиз множества А;
г) объединения двух множеств;
д) пересечения двух множеств.
ЛАБОРАТОРНАЯ РАБОТА № 13
Преобразование типов
Цель работы: получение навыков преобразования последователь-ности символов в числовое значение и наоборот.