Язык си примеры решения задач + видео обзор

Язык си примеры решения задач

Написать программу, которая создает одномерный массив из N целых чисел. Количество чисел в массиве и сами числа вводятся с клавиатуры. Вывести содержимое массива на экран.

Задача 2

Написать программу, которая выводит таблицу перевода расстояний в дюймах в сантиметры для значений от n до m дюймов (1 дюйм = 2,54 см)

Задача 3

Начав тренировки, спортсмен в первый день пробежал М км. Каждый день он увеличивал дневную норму на Р% нормы предыдущего дня. В какой день впервые спортсмен пробежит более K км?

Задача 4

Написать программу, которая создает одномерный массив из N целых чисел. Количество чисел в массиве и сами числа вводятся с клавиатуры. Вывести содержимое массива на экран. Вывести на экран среднее арифметическое элементов массива.

Задача 5

Написать программу, которая выводит таблицу умножения числа N в интервале от L до K. Ввод N, L,K выполнять с клавиатуры.

Задача 6

Написать программу, которая создает одномерный массив из N целых чисел. Количество чисел в массиве и сами числа вводятся с клавиатуры. Вывести содержимое массива на экран. Вывести на экран все элементы массива большее заданного числа К.

Задача 7

Написать программу, которая создает одномерный массив из N целых чисел. Количество чисел в массиве и сами числа вводятся с клавиатуры. Вывести содержимое массива на экран. найти и вывести на экран сумму всех четных элементов массива.

Задача 8

Клиент оформил вклад на m тысяч рублей в банке под k% годовых. Через сколько лет сумма вклада превысит s тысяч рублей, если за это время клиент не будет брать деньги со счета.

Задача 9

Написать программу, которая создает одномерный массив из N целых чисел. Количество чисел в массиве и сами числа вводятся с клавиатуры. Вывести содержимое массива на экран. Найти наибольший элемент массива.

Задача 10

Написать программу, которая создает одномерный массив из N целых чисел. Количество чисел в массиве и сами числа вводятся с клавиатуры. Ввести число L. Все элементы массива больше L заменить на число 5. Вывести на экран элементы введенного массива и полученного.

Задача 11
Задача 12

Написать программу, которая создает одномерный массив из N целых чисел. Количество чисел в массиве и сами числа вводятся с клавиатуры. Вывести содержимое массива на экран. Найти сумму элементов массива кратных 3.

Источник

Задачи для языка программирования си

Представлен материал, который имеет отношение к основам программирования на алгоритмическом языке СИ (алфавит, операции, операторы, комментарии и другие элементы). Приводятся примеры программ, иллюстрирующие применение основных операторов СИ.

Просмотр содержимого документа
«Задачи для языка программирования си»

Язык си примеры решения задач

ЯЗЫК ПРОГРАММИРОВАНИЯ СИ

Представлен материал, который имеет отношение к основам программирования на алгоритмическом языке СИ (алфавит, операции, операторы, комментарии и другие элементы). Приводятся примеры программ, иллюстрирующие применение основных операторов СИ.

Примеры использования операторов языка СИ

Рассмотрим применение операторов языка СИ на конкретных примерах решения различных задач.

Алгоритм ее решения имеет линейную структуру и соответствующая блок-схема имеет вид:

Язык си примеры решения задач

Рис. 1. Блок-схема алгоритма

Язык си примеры решения задач

float m1, m2, m3, m, x1, x2, x3, x, y1, y2, y3, y;

printf («Введите m1, m2, m3: «);

printf («Введите x1,y1,x2,y2,x3,y3: «);

Язык си примеры решения задач

Задача 2. Определить, попадает ли точка с координатами (x0, y0) в круг

точка попадает внутрь круга; точка не попадает внутрь круга.

Из анализа алгоритма решения поставленной задачи следует, что вопрос о

выводе того или иного сообщения зависит от значения логического выражения:

Блок-схема алгоритма решения сформулированной ранее задачи приведена на

Язык си примеры решения задач

Рис. 2. Блок-схема алгоритма

Язык си примеры решения задач

printf («Введите x0,y0,r: «);

printf («Точка попадает внутрь круга»);

printf («Точка не попадает внутрь круга»);

Язык си примеры решения задач

Задача 3. Округлить действительное положительное число x, меньшее 5, до

ближайшего целого числа:

Анализ алгоритма решения задачи показывает, что необходимо использовать

вложенные операторы условия. Блок-схема алгоритма представлена на

Источник

Примерные задачи с решениями на языке Си к экзамену «ЯЗЫКИ И СИСТЕМЫ ПРОГРАММИРОВАНИЯ»

Выбранный для просмотра документ Примерные задачи к экзамену по Си.doc

ПРИМЕРНЫЕ ПРАКТИЧЕСКИЕ ЗАДАНИЯ

Написать программу на языке Си, которая сравнивает два введенных с клавиатуры числа. Программа должна указать, какое число больше, или, если числа равны, вывести соответствующее сообщение.

Написать программу на языке Си вычисления площади кольца. Программа должна проверять правильность исходных данных.

Написать программу на языке Си, которая переводит время из минут и секунд в секунды. Программа должна проверять правильность введенных пользователем данных и в случае, если данные неверные, выводить соответствующее сообщение.

Написать программу на языке Си вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется, если сумма покупки больше 500 руб., в 5% – если сумма больше 1000 руб.

Напишите программу на языке Си проверки знания истории информатики. Программа должна вывести вопрос и три варианта ответа. Пользователь должен выбрать правильный ответ и ввести его номер.

Написать программу на языке Си, которая выводит пример на умножение двух однозначных чисел, запрашивает ответ пользователя, проверяет его и выводит сообщение «Правильно!» или «Вы ошиблись» и правильный результат.

От города А до города В расстояние равно 20 км. Велосипедист выехал из А и в первый день проехал 10 км. В последующие дни он проезжал со скоростью, на 0,5 раз большей, чем в предыдущий день. Напишите программу на языке Си, определяющую за сколько дней велосипедист доберется до города В.

Напишите программу на языке Си для определения количества цифр во введенном числе.

Напишите программу на языке Си , которая реализует алгоритм разложения числа на простые множители.

Напишите программу на языке Си, которая выводит на экран заполненный символом * треугольник, высота которого равна N.

Напишите программу на языке Си , которая позволяет ввести предложение с клавиатуры и подсчитать при этом, сколько раз вы нажали на клавиши клавиатуры, до тех пор, пока не нажали на клавишу (соответствует специальному символу конца строки – ‘\n’). Затем программа сообщит Вам, сколько символов (символ ‘\n’ не подсчитывается) введено.

Составить и отладить программу на языке Си вычисления значения выражения согласно приведенной ниже формуле:

Язык си примеры решения задач

Составить и отладить программу на языке Си вычисления значения выражения согласно приведенной ниже формуле:

Язык си примеры решения задач

Составить и отладить программу на языке Си вычисления значения выражения согласно приведенной ниже формуле:

Язык си примеры решения задач

Составить программу на языке Си для вычисления значений указанной ниже функции y. Проверить правильность работы программы для конкретных значений ее аргументов.

Язык си примеры решения задач

Составить программу на языке Си для вычисления значений указанной ниже функции y. Проверить правильность работы программы для конкретных значений ее аргументов.

Язык си примеры решения задач

Составить программу на языке Си вычисления суммы. Проверить правильность работы программы.

Язык си примеры решения задач

Составить программу на языке Си вычисления суммы. Проверить правильность работы программы.

Язык си примеры решения задач

Составить программу на языке Си вычисления суммы. Проверить правильность работы программы.

Язык си примеры решения задач

Составить программу на языке Си вычисления суммы. Проверить правильность работы программы.

Язык си примеры решения задач

Составить программу на языке Си вычисления суммы. Проверить правильность работы программы.

Источник

Лекция 1. Введение в язык Си

1. Чемпионат мира по программированию под эгидой ACM.

1.1. Соревнования в интернете. Правила участия.

1.2. Задача, решение, тест. Правила оформления.

1.3. Командный и индивидуальный принципы соревнования на олимпиадах.

2. Введение в язык Си.

2.1. Создание консольного приложения в MICROSOFT VISUAL C++ 6.0.

2.2. Создание консольного приложения в MICROSOFT VISUAL STUDIO 2005.

2.3. Программа HELLO WORLD!

2.4. Переменные и их объявления

2.5. Вычисление суммы двух чисел. Формат ввода-вывода.

2.6. Биты. Байты. Слова.

2.7. Оператор присваивания.

2.8. Условный оператор и операции сравнения.

3. Задачи.

1. ЧЕМПИОНАТ МИРА ПО ПРОГРАММИРОВАНИЮ ПОД ЭГИДОЙ ACM

Ежегодно в мире проходит огромное количество олимпиад по информатике и программированию разного уровня. Самым серьезным и престижным соревнованием является Первенство Чемпионата Мира по программированию среди студентов высших учебных заведений, которое ежегодно проводит ассоциация компьютерных машин (www.acm.org). Официальная страница соревнований находится на acm.baylor.edu. Студенческие соревнования стимулируют научную деятельность Вуза, помогают одаренной молодежи реализовать свои возможности, имеют огромное значение при определении развития компьютерных наук в Вузе.

Первенство мира проходит в несколько этапов: национальные олимпиады, региональные олимпиады, которые проходят за географическим принципом в более чем 30 регионах (icpc.baylor.edu/past) и финал первенства мира, в котором берут участие более 70 команд – победителей и призеров региональных олимпиад.

Популярность этих соревнований, определяющих уровень страны в области информационных технологий, очень велика. Например, в 2002/2003 учебном году только в региональных олимпиадах взяло участие 3850 команд из 1329 университетов из 65 стран, а общее число команд-участников национальных первенств приблизительно оценивалась в 24-25 тысяч. В полуфиналах 2004/2005 года взяло участие около 4100 студенческих команд, а общее число команд в четвертьфинальных соревнованиях 2005/2006 года оценивается в 60 тысяч команд, или около 200 тысяч участников.

Европейские страны начали брать участие в соревнованиях с 1991 года, а Восточно-Европейские с 1995. Чемпионами Восточной Европы становились Чехия (1998), Польша (2003, 2007). Шесть раз чемпионами мира и соответственно обладателями кубка становились команды из России (icpc.baylor.edu/past/default.htm): Санкт-Петербургский государственный университет (2000, 2001), Санкт-Петербургский институт механики и оптики (2004, 2008, 2009), Саратовский государственный университет (2006). В 2002, 2005 и 2010 годах чемпионом мира становился Шанхайский университет (Китай).

Чемпионат мира под эгидой АСМ является командным соревнованием. Трем участникам необходимо решить от 8 до 10 задач за 5 часов, используя только один компьютер. Среди основных разделов компьютерных дисциплин, знаниями которых должен обладать студент для удачного выступления на международной арене, являются чисто математические дисциплины (математический анализ, алгебра), дискретная математика, методы оптимизации, вычислительная геометрия, теория чисел, и конечно же построение и анализ алгоритмов. Кроме теоретических занятий при подготовке к соревнованиям следует тренироваться решать сложные задачи и писать оптимальный код программ. В мире существует множество WEB страниц, которые помогают молодежи в этом процессе:

На них собрано большое количество задач, которые предлагались на предыдущих соревнованиях. На них работает система Online judge. На этих страницах часто проходят дистанционные соревнования в реальном времени, участие в которых дает возможность молодежи оценить свои знания и возможности. Например, страничка www.topcoder.com предлагает не только денежные призы за победу в конкурсах, но и обеспечивает их работой.

Следующие страницы также посвящены олимпиадному программированию:

2. ВВЕДЕНИЕ В ЯЗЫК СИ

2.1. СОЗДАНИЕ КОНСОЛЬНОГО ПРИЛОЖЕНИЯ В MICROSOFT VISUAL C++ 6.0

1. Создаем новый пустой проект.

File → New → Win32 Console Application, в окне Project Name вводим имя проекта, в окне Location выбираем место расположения проекта.

В следующем окне выбираем тип консольного приложения: An empty project.. Далее нажимаем Finish, ok.

File → New → (закладка Files) → C++ Source File, вводим имя файла в окне File Name. В открывшийся файл вводим текст программы.

2.2. СОЗДАНИЕ КОНСОЛЬНОГО ПРИЛОЖЕНИЯ В MICROSOFT VISUAL STUDIO 2005

1. Создаем новый пустой проект.

File → New → Project → Win32 (в окне project types), Win32 Console Application (в окне templates) в строке Name вводим имя проекта, в строке Location выбираем место расположения проекта.

В следующем окне наживаем на кнопку «Next».

Откроется окно «Application Settings». Выбираем следующие опции: Application Type: Console application, Additional options: Empty project. Далее нажимаем Finish, ok.

В окне Solution Eplorer правой кнопкой мыши выбираем папку Source Files, далее Add → New Item. В категории «Visual C++» выбираем «Code», в списке «Templates» выбираем C++ File (.cpp), вводим имя файла в строке Name. Нажимаем кнопку «Add». В открывшийся файл вводим текст программы.

2.3. ПРОГРАММА HELLO WORLD!

Программа печати сообщения “Hello World!” имеет вид:

printf( «Hello World!\n» );

Для использования функций ввода-вывода следует подключить библиотеку стандартного ввода-вывода (STanDart Input-Output). Библиотека подключается ключевым словом include, перед которым ставится символ #.

Строки в языке Си выделяются двойными кавычками (в Паскале – одинарными). Символ перевода курсора на новую строку имеет вид ‘\n’. При помощи функции printf в программе выводится строка «Hello World!», после чего производится перевод курсора на новую строку.

После компиляции программы на языке Си операционная система вызывает функцию main. Слово main являет ключевым – оно является именем функции, которая вызывается операционной системой при старте программы. Функция main обязана присутствовать в любой программе Си, так как она является точкой входа в программу.

Внимание! Для запуска проекта в среде разработки MICROSOFT VISUAL STUDIO 2005 следует воспользоваться сочетанием клавиш CTRL + F5 (Start Without Debugging).

Язык си примеры решения задач

2.4. ПЕРЕМЕННЫЕ И ИХ ОБЪЯВЛЕНИЯ

Переменные представляют собой область памяти для хранения данных. Имя переменных называют идентификатором.

Имя переменной может содержать от одного до 32 символов. Разрешается использовать строчные и прописные буквы, цифры и символ подчёркивания, который в Си считается буквой. Первым символом обязательно должна быть буква. Имя переменной не может совпадать с зарезервированными словами.

Объявление переменных происходит в операторе описания, состоящем из спецификации типа и списка имён переменных, разделённых запятой. В конце оператора должна стоять точка с запятой. Простейший формат объявления переменной имеет вид:

Например, объявить две целочисленные переменные x, y и одну символьную c можно следующим образом:

2.5. ФОРМАТ ВВОДА-ВЫВОДА. ВЫЧИСЛЕНИЕ СУММЫ ДВУХ ЧИСЕЛ

Для форматированного ввода-вывода данных пользуются функциями scanf и printf. Первый аргумент функций содержит формат ввода-вывода. Далее следуют вводимые (выводимые) переменные. Следующая таблица представляет формат ввода-вывода элементарных типов данных в Си:

Источник

Сборник задач и упражнений по языку Си.

Руденко Т.В.

Сборник задач и упражнений по языку Си.

( учебное пособие для студентов II курса )

Представлены задачи и упражнения по языку Си и программированию на нем. Рассматриваемая версия Си соответствует международному и ANSI-стандарту этого языка.

Сборник составлен как дополнение к учебнику Б. Кернигана, Д. Ритчи «Язык программирования Си» (М., «Финансы и статистика», 1992) и с учетом опыта преподавания программирования на факультете вычислительной математики и кибернетики МГУ.

Для студентов факультета ВМК в поддержку основного лекционного курса “Системное программное обеспечение” и для преподавателей, ведущих практические занятия по этому курсу.

Автор выражает благодарность сотрудникам кафедры алгоритмических языков за помощь и поддержку при создании этого сборника.

Руденко Т.В. “Сборник задач и упражнений по языку Си (учебное пособие для студентов II курса)”.

Издательский отдел факультета ВМиК МГУ

(лицензия ЛР №040777 от 23.07.96), 1999.-80 с.

Печатается по решению Редакционно-издательского Совета факультета вычислительной математики и кибернетики МГУ им. М.В. Ломоносова

ISBN 5-89407-048-1

Ó Издательский отдел факультета вычислительной математики и кибернетики МГУ им. М.В.Ломоносова, 1999

ПРЕДИСЛОВИЕ

Кроме того, в сборнике приведено краткое описание заданий практикума, которые рекомендуется выполнить для закрепления пройденного материала и получения навыков в написании законченных программ.

Значительную часть сборника составляют приложения, где описана библиотека стандартных функций языка Си, некоторые системные функции ОС UNIX и фрагменты стандарта языка Си, связанные с правилами приведения типов и адресной арифметикой.

ТИПЫ, ОПЕРАЦИИ, ВЫРАЖЕНИЯ

2.1. Верно ли записаны константы, представляющие целочисленные значения? Для верно записанных констант определить их значение, тип.

‘0’ 058 ‘\x7’ 0X-1AD ‘\122’

‘a’U 0731UL ‘\n’ +0xaf 0X0

2.2. Верно ли записаны константы с плавающей точкой? Для верно записанных констант определить их значение, тип.

5.E+2 0e0 0x1A1.5 05.5 0

0X1E6 0F 1234.56789L 1.0E-10D 3.1415U

2.4. Верно ли решена задача: «значение целочисленной переменной с увеличить на 1; целочисленной переменной а присвоить значение, равное удвоенному значению переменной с ».

a). c ++ ; b). a = 2 * c++ ; c). c += 1; d). a = c++ + c;

e). ++c; f). a = ++ c + c; g). a = c += 1 + c; h). a = (c+=1)+c;

2.5. Верно ли решена задача: «значение целочисленной переменной с уменьшить на 1; целочисленной переменной а присвоить значение, равное частному от деления переменной с на 2».

2.6. Эквивалентны ли выражения?

a) E1 op= E2 и E1 = E1 op E2

b) E1 op= E2 и E1 = E1 op (E2)

printf(«%d %d %d\n», x, y, z); printf(«%d%d%d%d\n», x,y,z,i);

2.14. Что будет напечатано в результате выполнения следующего фрагмента программы?

double d; float f; long lng; int i; short s;

s = i = lng = f = d = 100/3;

printf(«s = %hd i = %d lng = %ld f = %f d = %f\n», s, i, lng, f, d);

d = f = lng = i = s =100/3;

printf(«s = %hd i = %d lng = %ld f = %f d = %f\n», s, i, lng, f, d);

s = i = lng = f = d = 1000000/3;

printf(«s = %hd i = %d lng = %ld f = %f d = %f\n», s, i, lng, f, d);

d = f = lng = i = s =1000000/3;

printf(«s = %hd i = %d lng = %ld f = %f d = %f\n», s, i, lng, f, d);

lng = s = f = i = d =100/3;

printf(«s = %hd i = %d lng = %ld f = %f d = %f\n», s, i, lng, f, d);

f = s = d = lng = i = (double)100/3;

printf(«s = %hd i = %d lng = %ld f = %f d = %f\n», s, i, lng, f, d);

s = i = lng = f = d = 100/(double)3;

printf(«s = %hd i = %d lng = %ld f = %f d = %f\n», s, i, lng, f, d);

f = s = d = lng = i = (double)100/3;

printf(«s = %hd i = %d lng = %ld f = %f d = %f\n», s, i, lng, f, d);

i = s = lng = d = f = (double)(100/3);

printf(«s = %hd i = %d lng = %ld f = %f d = %f\n», s, i, lng, f, d);

2.15. Что будет напечатано в результате выполнения следующего фрагмента программы?

double d = 3.2, x; int i = 2, y;

x = ( y = d / i ) * 2; printf («x = %f ;y = %d\n», x, y);

x = ( y = d / i ) * 2; printf («x = %d ;y = %f\n», x, y);

y = ( x = d / i ) * 2; printf («x = %f ;y = %d\n», x, y);

y = d * ( x = 2.5 / d); printf («x = %f; y = %d\n», x, y);

x = d * ( y = ( (int)2.9 + 1.1) / d; printf («x = %d y = %f\n», x, y);

Разрешается использовать не более четырех умножений и четырех сложений и вычитаний.

2.17. Целой переменной k присвоить значение, равное третьей от конца цифре в записи целого положительного числа x.

2.18. Целой переменной k присвоить значение, равное сумме цифр в записи целого положительного трехзначного числа x.

2.19. Целой переменной k присвоить значение, равное первой цифре дробной части в записи вещественного положительного числа x.

2.20. Определить число, полученное выписыванием в обратном порядке цифр заданного целого трехзначного числа.

2.21. Идет n-ая секунда суток. Определить, сколько полных часов и полных минут прошло к этому моменту.

a) x 21 за шесть операций

b) x 3 и x 10 за четыре операции

c) x 5 и x 13 за пять операций

2.24. Почему в Си не допускается, чтобы один и тот же литерал-перечислитель входил в два различных перечислимых типа? Могут ли совпадать имена литералов-перечислителей и имена обычных переменных в одной области видимости? Могут ли разные литералы-перечислители иметь одинаковые значения?

2.25. «Упаковать» четыре символа в беззнаковое целое. Длина беззнакового целого равна 4.

2.26. «Распаковать» беззнаковое целое число в четыре символа. Длина беззнакового целого равна 4.

2.27. Заменить в целочисленной переменной x n бит, начиная с позиции p, n старшими инвертированными битами целочисленной переменной y.

2.28. Циклически сдвинуть значение целочисленной величины на n позиций вправо.

2.29. Циклически сдвинуть значение целочисленной величины на n позиций влево.

2.30. Выясните некоторые свойства и особенности поведения доступного Вам транслятора Си:

a) выяснить, сколько байт отведено для хранения данных типа short, int, long, float, double и long double;

b) выяснить способ представления типа char ( signed- или unsigned- вариант );

c) проконтролировать, все ли способы записи констант допустимы:

· целых ( обычная форма записи, u/U, l/L, их комбинации; запись констант в восьмеричной и шестнадцатиричной системах счисления )

· вещественных ( обычная форма записи, в экспоненциальном виде, f/F, l/L, e/E )

· символьных ( обычная форма записи, с помощью эскейп-последовательности ) и строковых ( в частности, происходит ли конкатенация рядом расположенных строковых констант )

e) проконтролировать, происходит ли инициализация переменных по умолчанию;

f) проверить, реагирует ли транслятор на попытку изменить константу;

g) исследовать особенности выполнения операции % с отрицательными операндами;

i) проверьте, действительно ли выполняется правило «ленивых вычислений» выражений в Си, т.е. прекращается ли вычисление выражений с логическими операциями, если возможно «досрочно» установить значение результата;

j) проверьте, все ли виды операнда операции sizeof (X), определяемые стандартом для арифметических типов, допускаются компилятором; действительно ли выражение X не вычисляется.

УПРАВЛЕНИЕ

Обработка числовых данных

Замечание:при решении некоторых задач этого раздела необходимы минимальные знания о «стандартном» вводе и выводе целых и вещественных чисел.

3.17. Для данных чисел a, b и c определить, сколько корней имеет уравнение ax 2 +bx+c = 0, и распечатать их. Если уравнение имеет комплексные корни, то распечатать их в виде v ± iw.

3.18. Подсчитать количество натуральных чисел n ( 111 £ n £ 999 ), в записи которых есть две одинаковые цифры.

3.19. Подсчитать количество натуральных чисел n ( 102 £ n £ 987 ), в которых все три цифры различны.

3.20. Подсчитать количество натуральных чисел n ( 11 £ n £ 999 ), являющихся палиндромами, и распечатать их.

3.21. Подсчитать количество цифр в десятичной записи целого неотрицательного числа n.

3.23. Определить, является ли натуральное число n степенью числа 3.

3.27. Дано натуральное число n. Найти значение числа, полученного следующим образом: из записи числа n выбросить цифры 0 и 5, оставив прежним порядок остальных цифр.

3.29. Дано натуральное число n. Получить все его натуральные делители.

Считать, что требуемая точность достигнута, если | xi-xi+1| 0. Поскольку при
a0 0.

Для a > 0 величина Öa вычисляется следующим образом:

3.42. Для данного вещественного числа x и натурального n вычислить:

a). последовательно слева направо;

b). последовательно справа налево;

Сравнить и объяснить полученные результаты.

3.45. Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением самого себя. Дано натуральное чис-
ло n. Получить все совершенные числа, меньшие n.

3.46. Определить, является ли число простых чисел, меньших 10000, простым числом.

Обработка символьных данных

Замечание:при решении некоторых задач этого раздела необходимы минимальные знания о «стандартном» вводе и выводе литер.

3.48. Пусть во входном потоке находится последовательность литер, заканчивающаяся точкой (кодировка ASCII):

a) определить, сколько раз в этой последовательности встречается символ ‘a’;

b) определить, сколько символов ‘e’ предшествует первому вхождению символа ‘u’ ( либо сколько всего символов ‘e’ в этой последовательности, если она не содержит символа ‘u’ );

c) выяснить, есть ли в данной последовательности хотя бы одна пара символов-соседей ‘n’ и ‘o’, т.е. образующих сочетание ‘n’ ‘o’ либо ‘o’ ‘n’;

d) выяснить, чередуются ли в данной последовательности символы ‘+’ и ‘-‘, и сколько раз каждый из этих символов входит в эту последовательность;

e) выяснить, сколько раз в данную последовательность входит группа подряд идущих символов, образующих слово С++;

f) выяснить, есть ли среди символов этой последовательности символы, образующие слово char;

g) выяснить, есть ли в данной последовательности фрагмент из подряд идущих литер, образующий начало латинского алфавита (строчные буквы), и какова его длина. Если таких фрагментов несколько, найти длину наибольшего из них. Если такого фрагмента нет, то считать длину равной нулю;

h) выяснить, есть ли в данной последовательности фрагменты из подряд идущих цифр, изображающие целые числа без знака. Найти значение наибольшего из этих чисел. Если в этой последовательности нет ни одной цифры, то считать, что это значение равно нулю;

i) определить, имеет ли данная последовательность символов структуру, которая может быть описана с помощью следующих правил:

последовательность ::= слагаемое + последовательность | слагаемое

слагаемое ::= идентификатор | целое

идентификатор ::= буква | идентификатор буква | идентификатор цифра

буква ::= 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) удалить группы символов, расположенные между фигурными скобками < и >. Скобки тоже должны быть удалены. Предполагается, что скобки сбалансированы, и внутри каждой пары скобок других фигурных скобок нет.

a) удалить из каждой группы подряд идущих цифр, в которой более двух цифр и которой предшествует точка, все цифры, начиная с третьей (например, a+12.3456-b-0.456789+1.3-45678 преобразуется в a+12.34-b-0.45+1.3-45678);

b) удалить из каждой группы цифр, которой не предшествует точка, все начальные нули (кроме последнего, если за ним идет точка либо в этой группе нет других цифр, кроме нулей ; например, a-000123+bc+0000.0008-0000+0001.07 преобразуется в a-123+bc+0.0008-0+1.07).

УКАЗАТЕЛИ И МАССИВЫ

j = *p = 1; q = p-1; *p += 1;

printf(«i=%d, j=%d, *p=%d, *q=%d \n», i, j, *p, *q);

int x = 1, y; char c = ‘a’;

pi = &x; *pi = 3; y = *pi; *pi = c; qi = pi;

x = (int)pi; pi=(int*)pc; pi=(int*)x; x = 1+ *pi; pc=(char*)pi;

c = *pc; pc = &y; x = qi – pi; qi = 0; qi+=pi;

y = π y = (int)π pi = pi +5; *(pi+1)=0; pi=&(x+0);

a) int i = 2; const int j = 5;

const int * const cpci;

pi = &i; pci = &j; cpi = &i; cpci = &j; pci = &i;

pi = (int*)&j; i = *pci + *pi; *pci = 3;

b) int f(const int i, int j)

b = f(c,a); printf(«a=%d, b=%d, c=%d \n», a, b, c);

b = f(c,c); printf(«a=%d, b=%d, c=%d \n», a, b, c);

b = f(a,a); printf(«a=%d, b=%d, c=%d \n», a, b, c);

b = f(a,c); printf(«a=%d, b=%d, c=%d \n», a, b, c);

5.4. Пусть целочисленный массив a соддержит 100 элементов. Верно ли решена задача: «написать фрагмент программы, выполняющий суммирование всех элементов массива a».

char str[ ] = «SSSWILTECH1\1\11W\1WALLMP1»;

case ‘a’: putchar(‘i’); continue;

case ‘E’: case ‘L’: continue;

default: putchar(c); continue; >

5.8. Что напечатает следующая программа?

for ( i = 0; i = a; p— ) printf(«*p=%d «, *p ); printf(«\n»);

5.9. Что напечатает следующая программа?

printf(«pp-p=%d *pp-a=%d **pp=%d\n», pp-p, *pp-a, **pp );

printf(«pp-p=%d *pp-a=%d **pp=%d\n», pp-p, *pp-a, **pp );

printf(«pp-p=%d *pp-a=%d **pp=%d\n», pp-p, *pp-a, **pp );

5.10. Что напечатает следующая программа?

5.12. Какие соглашения о конце строки существуют в Си и Паскале? Укажите все «за» и «против» явного указания концов строк с помощью null-литеры ‘\0’.

5.13. В чем заключается проблема «висящей» ссылки? Приведите примеры.

5.14. Нужна ли в Си «сборка мусора»? Почему возникает такая проблема и как она решается в Си?

5.15. Прочитайте следующие описания и определения:

int *ip, f( ), *fip( ), (*pfi)( ); char *str[10]; char * (*cp)[5];

int (*r) ( ); double (*k)(double,int*);

float * (* (*x) [6] )( ); double (* (* ( y( ) )[ ] )( );

int * (*const *name[9])(void); char * const p;

5.16. Определите переменную x как массив указателей на функцию, имеющую два параметра типа int и возвращающую результат типа указатель на double.

5.17. Определите переменную y как указатель на массив указателей на функцию без параметров, возвращающую результат типа указатель на функцию с одним параметром типа int и результатом типа float.

5.18. Что будет напечатано? Объяснить, почему результат будет таким.

a) #include b) #include

j = try_to_change_it(i); compare(i, &j);

printf(«i=%d, j=%d\n», i, j); printf(«i=%d, j=%d\n», i, j);

int try_to_change_it(int k) void compare (int k, int *m)

printf(«k2=%d\n», k); printf(«k2=%d,*m2=%d\n», k, *m);

5.19. Верно ли решена задача: « Описать функцию, меняющую местами значения двух переменных символьного типа. Использовать эту функцию для изменения значений символьных переменных a и b.»

a) void swap ( char x, char y) b) void swap ( char *x, char *y)

c) void swap ( char *x, char *y) d) void swap ( char *x, char *y)

e) void swap ( char x, char y) f) void swap ( char &x, char &y)

int ques ( char *s1, char *s2)

void ques ( char *s1, char *s2, int n)

5.22. Описать функцию, определяющую упорядочены ли строго по возрастанию элементы целочисленного массива из n элементов.

5.23. Описать функцию, определяющую индекс первого элемента целочисленного массива из n элементов, значение которого равно заданному числу x. Если такого элемента в массиве нет, то считать номер равным –1.

5.27. Описать функцию, вычисляющую значение x0*y0+x1*y1+ …+ xk*yk, где xi – отрицательные элементы вещественного массива a из n элементов, взятые в порядке их следования; yi – положительные элементы этого массива, взятые в обратном порядке; k = min(p,q), где p – количество положительных элементов массива a, q – количество отрицательных элементов этого массива.

5.28. Описать функцию, которая упорядочивает элементы целочисленного массива по неубыванию, используя следующий алгоритм сортировки:

a) сортировка выбором: находится максимальный элемент массива и переносится в его конец; затем этот метод применяется ко всем элементам массива, кроме последнего (т.к. он уже находится на своем месте), и т.д.

c) сортировка вставками: пусть первые k элементов массива (от 0 до
k-1) уже упорядочены по неубыванию; тогда берется xk и рaзмещается среди первых k элементов так, чтобы упорядоченными оказались уже k+1 первых элементов; этот метод повторяется при k от 1 до n-1.

5.29. Описать функцию, определяющую индекс первого элемента целочисленного массива из n элементов, значение которого равно заданному числу x. Если такого элемента в массиве нет, то считать номер равным –1. Элементы массива упорядочены по возрастанию; использовать метод двоичного (бинарного) поиска.

5.32. Программа. Описать функцию f (s, n, x), определяющую, какой символ чаще других встречается в строке s и сколько раз он в нее входит. Если таких символов несколько, то взять первый из них по алфавиту. С помощью этой функции провести анализ строки str.

5.33. Программа. Описать функцию f(s, n, x), определяющую, какой символ реже других ( но не нуль раз ) встречается в строке s и сколько раз он в нее входит. Если таких символов несколько, то взять первый из них по алфавиту. С помощью этой функции провести анализ строки str.

5.35. Программа. Для вещественного массива а, содержащего n элементов, описать функцию G, определяющую значения максимального и минимального элементов этого массива. С помощью этой функции для вещественных массивов x[25] и y[40] вычислить соответствующие значения.

5.36. Описать функцию, которая изменяет заданную строку следующим образом: сначала записывает все элементы с четными индексами, а затем все элементы с нечетными индексами ( с сохранением их относительного порядка в каждой группе).

Например, abcdefgh => acegbdfh, vwxyz => vxzwy.

5.37. Описать функцию, которая в заданной строке меняет местами ее первую и вторую половины.

Например, abcdefgh => efghabcd, vwxyz => yzxvw.

5.38. Описать функцию, осуществляющую циклический сдвиг на n позиций вправо элементов целочисленного массива, содержащего m элементов (n

Источник

Видео

Язык си с нуля | #16 Рекурсия в си(примеры решения задач).Скачать

Язык си с нуля | #16 Рекурсия в си(примеры решения задач).

Задачи №25 ЕГЭ по информатике на СиСкачать

Задачи №25 ЕГЭ по информатике на Си

Решение задач на массивы в языке c++ | Практика на c++ урок 1.Скачать

Решение задач на массивы в языке c++ | Практика на c++ урок 1.

Уроки C++ с нуля🔥Решение математических задач на языке С++🔥Переменные в языке С++🔥Скачать

Уроки C++ с нуля🔥Решение математических задач на языке С++🔥Переменные в языке С++🔥

Решение задачи, на языке программирования СиСкачать

Решение задачи, на языке программирования Си

Решение задач на циклы в языке c++ | Практика на c++ урок 2.Скачать

Решение задач на циклы в языке c++ | Практика на c++ урок 2.

Примеры рекурсивных алгоритмовСкачать

Примеры рекурсивных алгоритмов

Миллион задач по C#, Java, C++ БесплатноСкачать

Миллион задач по C#, Java, C++ Бесплатно

Язык Си/С++. Урок 1. Домашнее задание - решение задачи №1Скачать

Язык Си/С++. Урок 1. Домашнее задание - решение задачи №1

Язык Си для начинающих / #6 - Функции в СиСкачать

Язык Си для начинающих / #6 - Функции в Си
Поделиться или сохранить к себе:
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.