Т.В. Руденко - Сборник задач и упражнений по языку Си (1114664), страница 3
Текст из файла (страница 3)
Если уравнение имеет комплексные корни, то распечатать их в виде v ± iw.3.18. Подсчитать количество натуральных чисел n ( 111 ≤ n ≤ 999 ), взаписи которых есть две одинаковые цифры.3.19. Подсчитать количество натуральных чисел n ( 102 ≤ n ≤ 987 ), вкоторых все три цифры различны.3.20. Подсчитать количество натуральных чисел n ( 11 ≤ n ≤ 999 ), являющихся палиндромами, и распечатать их.113.21. Подсчитать количество цифр в десятичной записи целого неотрицательного числа n.3.22.
Определить, верно ли, что куб суммы цифр натурального числа nравен n2.3.23. Определить, является ли натуральное число n степенью числа 3.3.24. Для данного вещественного числа a среди чисел 1, 1 + (1/2), 1 +(1/2) + (1/3), ... найти первое, большее a.3.25. Для данного вещественного положительного числа a найти наименьшее целое положительное n такое, что 1 + 1/2 +1/3+ ... + 1/n > a.3.26. Даны натуральное число n и вещественное число x.
Среди чиселexp(cos(x2k))sin(x3k) ( k = 1, 2, ..., n ) найти ближайшее к какому-нибудь целому.3.27. Дано натуральное число n. Найти значение числа, полученногоследующим образом: из записи числа n выбросить цифры 0 и 5, оставив прежним порядок остальных цифр.3.28. Дано натуральное число n. Получить все такие натуральные q, чтоn делится на q2 и не делится на q3.3.29.
Дано натуральное число n. Получить все его натуральные делители.3.30. Дано целое число m > 1.Получить наибольшее целое k, при котором 4k < m.3.31. Дано натуральное число n. Получить наименьшее число вида 2r,превосходящее n.3.32. Распечатать первые n простых чисел ( p - простое число, еслиp >= 2 и делится только на 1 и на себя).3.33. Даны вещественные числа x и y ( x > 0, y > 1).
Получить целоечисло k (положительное, отрицательное или равное нулю), удовлетворяющееусловию yk-1 ≤ x < yk.3.34. Распечатать первые n чисел Фибоначчи ( f0 = 1; f1 = 1; fk+1 = fk-1+ fk;k = 1, 2, 3,...)3.35. Вычислить с точностью eps > 0 значение «золотого сечения» 0.5∗(1+√5) - предел последовательности { qi }при i → ∞qi = fi / fi-1, i = 2, 3,...где fi - числа Фибоначчи (см. предыдущую задачу).Считать, что требуемая точность достигнута, если | qi-qi+1| < eps.3.36. Распечатать числа Фибоначчи (см. задачу 3.34), являющиеся простыми числами со значениями меньше n.123.37. Вычислить с точностью eps > 0 значение числа e - предел последовательности { xi }при i → ∞xi = (1+1/i)i, i = 1, 2, ...Считать, что требуемая точность достигнута, если | xi-xi+1| < eps.3.38.
Вычислить значение ∑ i ! для i, изменяющихся от 1 до n. Воспользоваться соотношением ∑ i ! = 1 + 1∗2 + 1∗2∗3 +...+ 1∗2∗3∗...∗n = 1+2∗(1+3∗(1++n∗(1)...)).3.39. Пусть a0 и b0 - положительные вещественные числа. Соотношениями an+1 = √(anbn) ; bn+1 = ( an+bn ) / 2 при n = 0, 1, 2, ... задаются две бесконечные числовые последовательности {an}и {bn}, которые сходятся к общему пределу M(a0,b0), называемому арифметико-геометрическим средним чисел a0 и b0.Найти приближенное значение M(a0,b0) с точностью eps > 0. Поскольку приa0 < b0 ai < bi и, более того, a0 < a1 < ...
< ai < ... bi < ... < b1 < b0 , то в качествеподходящего критерия прекращения вычислений можно использовать соотношение | ai - bi | < eps.3.40. Вычислить квадратные корни вещественных чисел x = 2.0, 3.0, ... ,100.0. Распечатать значения x, √x, количество итераций, необходимых для вычисления корня с точностью eps > 0.Для a > 0 величина √a вычисляется следующим образом:a0 = 1; ai+1 = 0.5∗( ai+a/ai ) i = 0, 1, 2,...Считать, что требуемая точность достигнута, если | ai-ai+1| < eps.3.41. Найти приближенное значение числа π с точностью eps > 0.
Дляэтого можно использовать представление числа 2/π в виде произведения корней√(1/2) *√(1/2+1/2√(1/2))*√(1/2+ 1/2√(1/2+1/2√(1/2)))*... . Вычисления прекращаются, когда два следующих друг за другом приближения для числа π будут отличаться меньше, чем на eps.3.42. Для данного вещественного числа x и натурального n вычислить:a) sin x + sin2x + ... + sinnxb) sin x + sinx2 + ...
+ sinxnc) sin x + sin(sin x ) + ... + sin ( sin (... sin(sin x) ... ))3.43. Алгоритм Евклида нахождения наибольшего общего делителя(НОД) неотрицательных целых чисел основан на следующих свойствах этой величины: пусть m и n - одновременно не равные нулю целые неотрицательныечисла и m ≥ n. Тогда, если n = 0, то НОД(n, m) = m, а если n ≠ 0, то для чисел m,n, и r, где r - остаток от деления m на n, выполняется равенство НОД(m, n) =НОД(n, r). Используя алгоритм Евклида, определить наибольший общий делитель неотрицательных целых чисел a и b.3.44. Вычислить 1 - 1/2 + 1/3 - 1/4 + ...+1/9999 - 1/10000 следующимиспособами:a).
последовательно слева направо;b). последовательно справа налево;13c). последовательно слева направо вычисляются 1 +1/3 + 1/5 + ... +1/9999 и 1/2 + 1/4 + ... + 1/10000, затем второе значение вычитается из первого;d). последовательно справа налево вычисляются 1 +1/3 + 1/5 + ... +1/9999 и 1/2 + 1/4 + ... + 1/10000, затем второе значение вычитается из первого.Сравнить и объяснить полученные результаты.3.45. Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением самого себя.
Дано натуральное число n. Получить все совершенные числа, меньшие n.3.46. Определить, является ли число простых чисел, меньших 10000,простым числом.3.47. Если p и q - простые числа и q = p+2, то они называются простымисдвоенными числами или “близнецами” (twin primes).
Например, 3 и 5 - такиепростые числа. Распечатать все простые сдвоенные числа, меньшие N.3.3Обработка символьных данныхЗамечание: при решении некоторых задач этого раздела необходимыминимальные знания о «стандартном» вводе и выводе литер.3.48. Пусть во входном потоке находится последовательность литер, заканчивающаяся точкой (кодировка ASCII):a) определить, сколько раз в этой последовательности встречается символ ‘a’;b) определить, сколько символов ‘e’ предшествует первому вхождениюсимвола ‘u’ ( либо сколько всего символов ‘e’ в этой последовательности, еслиона не содержит символа ‘u’ );c) выяснить, есть ли в данной последовательности хотя бы одна парасимволов-соседей ‘n’ и ‘o’, т.е.
образующих сочетание ‘n’ ‘o’ либо ‘o’ ‘n’;d) выяснить, чередуются ли в данной последовательности символы ‘+’ и‘-‘, и сколько раз каждый из этих символов входит в эту последовательность;e) выяснить, сколько раз в данную последовательность входит группаподряд идущих символов, образующих слово С++;f) выяснить, есть ли среди символов этой последовательности символы,образующие слово char;g) выяснить, есть ли в данной последовательности фрагмент из подрядидущих литер, образующий начало латинского алфавита (строчные буквы), икакова его длина. Если таких фрагментов несколько, найти длину наибольшегоиз них. Если такого фрагмента нет, то считать длину равной нулю;h) выяснить, есть ли в данной последовательности фрагменты из подрядидущих цифр, изображающие целые числа без знака.
Найти значение наибольшего из этих чисел. Если в этой последовательности нет ни одной цифры, тосчитать, что это значение равно нулю;i) определить, имеет ли данная последовательность символов структуру, которая может быть описана с помощью следующих правил:последовательность ::= слагаемое + последовательность | слагаемое14слагаемое ::= идентификатор | целоеидентификатор ::= буква | идентификатор буква | идентификатор цифрабуква ::= A | B | C | D | E | F | G | H | I | J | Kцифра ::= 0 | 1 | 2 | 3 | 4 | 5целое ::= цифра | целое цифра3.49. Пусть во входном потоке находится последовательность литер, заканчивающаяся точкой (кодировка ASCII). Вывести в выходной поток последовательность литер, измененную следующим образом:a) заменить все символы ‘?’ на’!’;b) удалить все символы ‘-‘ и удвоить все символы ‘&’;c) удалить все символы, не являющиеся строчными латинскими буквами;d) заменить все прописные латинские буквы строчными (другие символы копировать в выходной поток без изменения);e) заменить все строчные латинские буквы прописными (другие символы копировать в выходной поток без изменения);f) каждую группу рядом стоящих символов ‘+’ заменить одним такимсимволом;g) каждую группу из n рядом стоящих символов ‘∗’ заменить группойиз n/2 рядом стоящих символов ‘+’ ( n >= 2 ); одиночные ‘∗’ копировать в выходной поток без изменения;h) удалить из каждой группы подряд идущих цифр все начальные незначащие нули (если группа состоит только из нулей, то заменить эту группуодним нулем);i) удалить все комбинации символов the;j) оставить только те группы цифр, которые составлены из подряд идущих цифр с возрастающими значениями; все остальные цифры и группы цифрудалить ( другие символы копировать в выходной поток без изменения);k) заменить все комбинации символов child комбинациями символовchildren;l) удалить группы символов, расположенные между фигурными скобками { и }.
Скобки тоже должны быть удалены. Предполагается, что скобки сбалансированы, и внутри каждой пары скобок других фигурных скобок нет.3.50. Пусть во входном потоке находится последовательность литер, заканчивающаяся маркером конца $ (кодировка ASCII). Вывести в выходной поток последовательность литер, измененную следующим образом:a) удалить из каждой группы подряд идущих цифр, в которой болеедвух цифр и которой предшествует точка, все цифры, начиная с третьей (например, a+12.3456-b-0.456789+1.3-45678 преобразуется в a+12.34-b-0.45+1.345678);b) удалить из каждой группы цифр, которой не предшествует точка, всеначальные нули (кроме последнего, если за ним идет точка либо в этой группенет других цифр, кроме нулей ; например, a-000123+bc+0000.0008-0000+0001.07преобразуется в a-123+bc+0.0008-0+1.07).154.
ФУНКЦИИ И СТРУКТУРА ПРОГРАММЫ4.1. Перечислите все существенные изменения, внесенные стандартомANSI в правила объявления и описания функций. Какова цель этих изменений?4.2. Перечислить все случаи, когда в Си используется тип void. Дать определение этого типа.4.3. Перечислить классы памяти, определенные в Си.