Разное

Задачи по программированию c для начинающих: Решение задач на языке C

Содержание

Задачи по программированию c проверкой

Cложность

Легко Средне Тяжело

Теги

Можно выбрать несколько тегов (зажмите клавишу ctrl).

Понравился CodeChick? Друзьям тоже понравится!

Поделиться в FacebookПоделиться в VK

«Привет, Мир!» Как работает CodeChick

Это вводное задание, благодаря которому вы поймете, как работает CodeChick.

Легко Основы языкаСтроки

Вернуть сумму двух чисел

Создайте функцию, которая принимает два числа в качестве параметров и возвращает их сумму.

Легко АлгебраМатематикаОсновы языкаЧисла

Вернуть число, увеличенное на единицу

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

Легко МатематикаЧисла

Переведите минуты в секунды

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

Легко МатематикаОсновы языкаЧисла

Площадь треугольника

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

Легко ГеометрияМатематикаЧисла

Переведите часы в секунды

Напишите функцию, которая переведет часы в секунды.

Легко МатематикаОсновы языкаЧисла

Переведите возраст в дни

Напишите функцию, которая принимает возраст (количество лет) и преобразует это значение в количество дней.

Легко МатематикаЧисла

Остаток от деления двух чисел

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

Легко МатематикаЧисла

Сконвертируйте строку в целое число

Напишите функция, которая преобразует целочисленную строку в целое число.

Легко Основы языкаСтрокиЧисла

Калькулятор мощности цепи

Создайте функцию, которая принимает напряжение и ток и возвращает рассчитанную мощность.

Легко МатематикаФизикаЧисла

Найти периметр прямоугольника

Напишите функцию, которая позволит найти периметр прямоугольника, зная его ширину и длину.

Легко ГеометрияМатематикаОсновы языкаЧисла

Вернуть первый элемент массива

Напишите функцию, которая принимает массив и возвращает первый элемент этого массива.

Легко МассивыОсновы языка

Сколько ног на ферме

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

Легко АлгоритмыМатематика

Переведите часы и минуты в секунды

Напишите функцию, которая принимает целочисленные значения часов и минут, конвертирует эти значения в секунды, а затем суммирует их и возвращает в качестве результата.

Легко МатематикаОсновы языка

Футбольные очки

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

Легко АлгебраЧисла

Равны ли числа?

Создайте функцию, которая в качестве параметров принимает два числа и возвращает True, если эти числа равны, и False, если не равны.

Легко ВалидацияОсновы языкаУсловияЧисла

Найдите самое маленькое числа в списке

Напишите функцию, которая принимает на вход список чисел, и возвращает самое маленькое число из этого списка.

Легко МассивыСортировкаЦиклыЧисла

Меньше 100?

Функция получает на вход два числа. Она должна вернуть True, если сумма этих чисел меньше 100 и False в противном случае.

Легко ВалидацияМатематикаОсновы языка

Максимальная разность

Дан массив с целыми числами. Функция должна вернуть разность самого большого и самого маленького числа.

Легко МассивыМатематикаЧисла

Найти сумму всех элементов списка

Напишите функцию, которая принимает список на вход, и возвращает сумму всех элементов этого списка.

Легко МассивыМатематикаОсновы языкаЧисла

Где практиковаться в программировании: 20 ресурсов

Содержание

  1. Проект Эйлера
  2. w3resource
  3. Codewars
  4. Сборник задач CppStudio
  5. CheckIO
  6. LeetCode
  7. HackerRank
  8. Codecombat
  9. CodeAbbey
  10. Ruby Quiz
  11. Rosalind
  12. CodingBat
  13. UVa Online Judge
  14. Школа программиста
  15. Codechef
  16. Codingame
  17. Exercism
  18. InterviewBit
  19. SQL EX
  20. Питонтьютор

После освоения основ любого языка программирования необходимо как можно больше практиковаться. Это поможет закрепить полученные знания и запомнить конструкции языка. Один из способов — решение задач. Такой подход заставляет использовать все возможности изученной технологии и думать над оптимальным алгоритмом решения.

Проект Эйлера — сайт с математическими задачами по программированию, основанный в 2001 году. Задачи разделяются по уровню сложности, всего их более 800 штук. Для решения начинающим разработчикам необходимо вспомнить школьную математику, а в некоторых случаях — даже университетскую программу. Решать задачи можно на любом удобном языке программирования.

W3resource предлагает пользователям подробные обучающие материалы и задачи по технологиям веб-разработки. В сервисе есть встроенный редактор кода, чтобы решать задачи в браузере. Можно отточить знания JavaScript, Python, HTML, CSS, SQL, PHP и Java.

Профессия Fullstack-разработчик на Python Получите навыки программирования, освойте backend на Python и frontend на JavaScript, чтобы стать востребованным специалистом в IT. 

Подробнее

Сервис с задачами на 45+ языках программирования. Пользователям доступны практические задания на закрепление основ, паттернов и алгоритмов. В Codewars есть внутренняя система рангов, которая помогает выбирать задачи подходящего уровня. Ранг повышается при каждом правильном решении. Доступен как общий уровень пользователя, так и уровень владения каждым языком программирования.

Онлайн-сборник задач на языке C++. На сайте доступны задачи 5 уровней сложности на знание основ программирования и умение пользоваться алгоритмами. Условия задач не подстроены под особенности С++, поэтому решение можно реализовать на любом удобном языке.

Браузерная игра, мотивирующая решать задачи с помощью инструментов геймификации. Проходить испытания можно с помощью Python или TypeScript. Сложность возрастает по мере приближения к последним уровням, а если пройти регистрацию, то можно сохранить прогресс и вернуться к решению задач позже. Спонсор и партнер проекта — компания JetBrains.

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

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

HackerRank проводит для разработчиков онлайн-соревнования, которые спонсируют мировые IT-компании. Если хорошо зарекомендовать себя и показать свои навыки, то можно получить приглашение на стажировку. Также призовые места в соревнованиях HackerRank могут стать хорошим достижением для резюме.

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

Сервис с более чем 300 задачами. Часть из них доступна на русском языке, а за решение 125 задач можно получить сертификат. Также на сайте есть форум с активными участниками сообщества, которые могут помочь с решением.

Сборник головоломок на языке Ruby. Решения задач описаны с учетом особенностей Ruby, но условия позволяют использовать любой язык программирования.

В Rosalind собраны задачи для разработчиков в области биоинформатики. Сервис подойдет далеко не всем, так как охватывает узкую область знаний. Разработчики Rosalind рекомендуют использовать головоломки из списка для закрепления изученных ранее тем.

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

Профессия
Java-разработчик
Через 7 месяцев обучения на курсе вы станете junior-разработчиком: будете писать код на Java, использовать принципы объектно-ориентированного программирования, освоите базы данных и SQL-запросы, изучите с нуля алгоритмы и структуры данных, поработаете с Git.

Подробнее

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

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

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

Браузерный квест, который можно пройти с помощью решения задач. Управлять игровым процессом можно с помощью написания кода, а на выбор доступно более 20 языков программирования. Также на сайте есть геймифицированный сервис для проверки навыков во время собеседований.

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

Сервис для подготовки к собеседованиям в мировые IT-компании. На сайте есть сложные задачи на знание алгоритмов и особенностей синтаксиса, теоретические вопросы и советы для подготовки. Сервис содержит более 800 задач по различным направлениям разработки.

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

Сайт для практики языка программирования Python на русском языке. В сервис встроен редактор кода, поэтому можно решать задачи в браузере. Для каждой задачи есть альтернативные способы решения, которые помогут найти наиболее лаконичный способ.

Профессия Python-разработчик Освойте Python с нуля и начните новую карьеру с позиции junior-разработчика уже через 3 месяца обучения. Подготовим к трудоустройству: дадим много практики, реальные проекты для портфолио, поможем с резюме и познакомим с будущими работодателями.

Подробнее

250+ примеров программирования на C, упражнения с решениями

Темы

Язык C был создан в 1972 году в Bell Laboratories Деннисом Ритчи. Это язык программирования общего назначения. C — старый язык программирования, и до сих пор он довольно известен среди разработчиков и ученых. Поскольку C был разработан с операционной системой UNIX, он тесно связан с UNIX.

Зачем вам изучать язык C?

Язык C является неотъемлемой частью обучения в школах и колледжах, что делает его одним из самых популярных языков. Потому что, если этот язык программирования C также является первым языком программирования, который большинство разработчиков изучают в своей карьере. Изучение C Langauge позволяет легко продвигаться вперед в пути разработчика. Это первый шаг, и вы можете без каких-либо хлопот изучать другие языки, такие как C++, C# (обычно называемый C Sharp) и Java, поскольку все эти языки имеют схожий синтаксис. По сравнению с Java и Python язык C работает быстрее. Другая причина для изучения языка C заключается в том, что это универсальный язык, который можно использовать как в приложениях, так и в технологиях.

Особенности языка C
  • Универсальный и портативный
  • Низкоуровневый доступ к памяти
  • Быстрая скорость
  • Чистый синтаксис
Примеры программирования на C, упражнения и решения для начинающих

Язык C был первоначально разработан американским ученым-компьютерщиком Деннисом Ритчи в период с 1969 по 1973 год в Bell Labs, а также использовался для повторной реализации ОС Unix. Язык C теперь стал одним из наиболее часто используемых языков программирования всех времен

Вот упражнения по программированию Top C Basic с подробными решениями и выходными данными для улучшения ваших навыков программирования. Все следующие программы языка C на этой веб-странице протестированы и должны работать на всех компиляторах программирования C.

Все следующие программы на языке C на этой веб-странице протестированы и должны работать на всех компиляторах программирования C

МЫ НАСТОЯТЕЛЬНО РЕКОМЕНДУЕМ  НАЧИНАЮЩИМ ПРОЧИТАТЬ ЭТУ КНИГУ ПО КОДИРОВАНИЮ:

6 лучших книг по программированию для начинающих, которые вы должны прочитать в 2023 году

Начало работы с программированием на C | Программы языка C для начинающих | Tech Study

Список примеров программирования на C

Вот список программ на языке C и их примеры.

  1. Программа C для печати «Hello, World!»
  2. Программа C для сложения двух целых чисел.
  3. Программа C для замены значений двух переменных.
  4. Программа C для умножения двух чисел с плавающей запятой
  5. Программа C для выполнения всех арифметических операций
  6. Программа C для преобразования футов в метры
  7. Программа C для преобразования градусов Цельсия в фаренгейты
  8. Программа C для преобразования фаренгейтов в градусы Цельсия
  9. Программа C для определения размера типов данных
  10. Программа C для печати значения ASCII
  11. Программа C для вычисления площади круга
  12. Программа C для вычисления площади квадрата
  13. Программа C для вычисления площади прямоугольника
  14. Программа C для преобразования дней в годы, недели и дни

Список строковых программ на языке C

Если вы хотите выучить строки на языке C, вы можете щелкнуть одну из статей из списка ниже. В этих статьях вы узнаете о различных примерах программирования c , о том, как объявлять и инициализировать их, а также научитесь использовать эти программы для различных операций ввода-вывода.

  1. Программа на C для объединения двух строк
  2. Программа C для определения длины строки
  3. Программа C для преобразования строки в нижний регистр
  4. Программа C для преобразования строки в верхний регистр
  5. Программа C для преобразования строки в верхний регистр без strupr
  6. Программа C для преобразования строки в нижний регистр без strlwr
  7. Программа C для обращения строки, введенной пользователем
  8. Программа C для подсчета количества букв, цифр и специальных символов в строке
  9. Программа C для сравнения двух строк с использованием strcmp
  10. Программа C для подсчета количества строчных и прописных букв

Список всех условных программ на языке c

  1. C Программа для проверки того, является ли введенное пользователем целое число четным или нечетным
  2. C Программа для нахождения наибольшего числа среди трех чисел.
  3. Программа C для нахождения наибольшего числа с использованием условного оператора.
  4. Программа C для поиска наибольшей из трех переменных с использованием вложенных условий if.
  5. Программа C для проверки високосного года с использованием условного оператора.
  6. Программа на C для проверки алфавитов с помощью условного оператора.
  7. Программа C для проверки положительного, отрицательного или нулевого числа.
  8. Программа на C для проверки прописных и строчных букв.
  9. Программа на C для проверки гласных и согласных введенных символов.
  10. Программа на языке C для проверки того, является ли символ буквой, цифрой или специальным символом.
  11. Программа C для печати названия дня недели.
  12. Программа на языке C, принимающая два целых числа и проверяющая, равны они или нет.
  13. Программа
  14. C для определения возраста кандидата имеет право участвовать в голосовании или нет.
  15. Программа
  16. C для определения права на поступление на инженерный курс на основе критериев.
  17. C программа для расчета общей оценки, процента и деления студента.
  18. Программа на C для ввода номера месяца и печати количества дней в месяце.
  19. Программа C для подсчета общего количества банкнот в введенной сумме.
  20. Программа на языке C для проверки того, можно ли составить треугольник с заданным значением углов.

Список циклических программ языка C с примерами

  1. Написать программу C для печати алфавитов от a до z
  2. Напишите программу на C для печати значений ASCII всех символов
  3. Напишите программу на C для печати таблицы умножения заданного числа
  4. Напишите программу на C для вывода всех натуральных чисел в обратном порядке
  5. Напишите программу на C для вывода суммы цифр, введенных пользователем
  6. Напишите программу на C для нахождения суммы четных чисел от 1 до n
  7. Напишите программу на C для нахождения суммы нечетных чисел от 1 до n
  8. Напишите программу на C для замены первой и последней цифры числа
  9. Напишите программу на C, чтобы найти сумму первой и последней цифры любого числа
  10. Напишите программу на C, чтобы найти первую и последнюю цифру любого числа
  11. Напишите программу на C для вычисления произведения цифр числа
  12. Напишите программу C, чтобы изменить число с помощью цикла while и for
  13. Напишите программу на C для расчета мощности с использованием цикла while и for
  14. Напишите программу на C для нахождения факториала любого числа
  15. Напишите программу на C, чтобы проверить, является ли число числом Армстронга или нет
  16. Напишите программу на C для поиска чисел Армстронга от 1 до n
  17. Напишите программу на C для расчета сложных процентов
  18. Напишите программу на C, чтобы проверить, является ли введенное число простым или не используется цикл while и for
  19. Напишите программу на C, чтобы проверить, является ли число палиндромом или нет
  20. Напишите программу на C для печати числа словами
  21. Напишите программу на C, чтобы найти HCF двух чисел
  22. Напишите программу на C для нахождения НОК двух чисел

Список программ Switch case с примерами

  1. Напишите программу C для вывода количества дней в месяце, используя регистр переключения
  2. .
  3. Напишите программу C для печати названия дня недели с использованием регистра переключателей
  4. . Напишите программу на C для создания калькулятора с помощью оператора switch. Оператор
  5. .
  6. Напишите программу на C для проверки четного или нечетного числа с помощью переключателя
  7. Напишите программу на языке C для проверки гласных и согласных с использованием переключателя регистра
  8. Напишите программу C для печати программы пола (мужской/женский) в соответствии с заданным M/F.
  9. Напишите программу на C, чтобы найти максимальное число, используя регистр переключения.

Список функций языка C и упражнения по рекурсивному программированию

  1. Написать программу C для проверки четности или нечетности с использованием функций
  2. Напишите C для проверки простых чисел и чисел Армстронга, используя функцию
  3. Напишите программу на C для нахождения куба числа с помощью функции
  4. Напишите программу на C для преобразования двоичного числа в десятичное
  5. Напишите программу C для преобразования десятичного числа в двоичное с помощью функции
  6. Напишите программу C для определения длины строки, передав строку/символ
  7. Напишите программу на C для вывода всех сильных чисел между двумя числами
  8. Напишите программу на C для поиска простых чисел в заданном диапазоне с помощью функций
  9. Напишите программу на C для определения диаметра, длины окружности и площади круга с помощью функции
  10. Напишите программу на C для вывода идеальных чисел между заданным интервалом, используя функцию
  11. Напишите программу на C для нахождения степени числа с помощью рекурсии
  12. Напишите программу на C для нахождения суммы натуральных чисел в заданном диапазоне с помощью рекурсии
  13. Напишите программу на C для вывода четных или нечетных чисел в заданном диапазоне с использованием рекурсии
  14. Напишите программу на C для поиска реверсивного числа с помощью рекурсии
  15. Напишите программу на C для нахождения НОК двух чисел с помощью рекурсии
  16. Напишите программу на C, чтобы найти HCF двух чисел, используя рекурсию
  17. Напишите программу C для печати элементов массива с использованием рекурсии
  18. Напишите программу C для нахождения суммы элементов массива с использованием рекурсии
  19. Напишите программу на C для генерации n-го члена Фибоначчи с использованием рекурсии
  20. Напишите программу на C для нахождения факториала числа с помощью рекурсии
  21. Напишите программу на C для проверки номера палиндрома с помощью рекурсии
  22. Напишите программу на C для поиска максимального и минимального элементов в массиве с использованием рекурсии

Список упражнений указателя языка C

  1. Напишите программу C для замены двух чисел с помощью указателей
  2. Напишите программу на C для сложения двух чисел с помощью указателей
  3. Запись ввода программы C и печать элементов массива с помощью указателя
  4. Напишите программу на C для изменения значения постоянной целочисленной с помощью указателей
  5. Напишите программу C для определения длины строки с помощью указателя
  6. Напишите программу на C для копирования одной строки в другую с помощью указателя
  7. Напишите программу на C для объединения двух строк с помощью указателя
  8. Напишите программу на C для чтения элементов массива и печати значения с адресами

Список программ для работы с массивами на языке C с примерами

  1. Напишите программу на C для вывода всех отрицательных элементов массива
  2. Напишите программу на C для подсчета общего количества отрицательных элементов в массиве
  3. Напишите программу на C для чтения и печати элементов массива
  4. Напишите программу на C для нахождения суммы всех элементов массива
  5. Напишите программу на C для подсчета четных и нечетных элементов в массиве
  6. Напишите программу на C, чтобы найти максимальный и минимальный элемент в массиве
  7. Напишите программу на C для вставки элемента в массив
  8. Напишите программу на C для печати всех уникальных элементов массива
  9. Напишите программу на C для сортировки массива в порядке возрастания
  10. Напишите программу на C для копирования всех элементов одного массива в другой
  11. Напишите программу на C для подсчета количества каждого элемента в массиве
  12. Напишите программу на C для удаления всех повторяющихся элементов из массива
  13. Программа записи C подсчитывает общее количество повторяющихся элементов в массиве
  14. Напишите программу на C для объединения двух отсортированных массивов
  15. Напишите программу на C, чтобы поместить четные и нечетные элементы массива в два отдельных массива
  16. Напишите программу на C для поиска реверса массива
  17. Написать программу C для поворота массива влево
  18. Написать программу C для поворота массива вправо

Список матричных программ на языке C с примерами

  1. Написать программу на C для добавления двух матриц
  2. Написать программу на C для умножения двух матриц
  3. Напишите программу на C для проверки равенства двух матриц
  4. Напишите программу на C для нахождения транспонирования заданной матрицы
  5. Напишите программу на C для нахождения суммы каждой строки и столбца матрицы
  6. Напишите программу на C для нахождения частот четных и нечетных чисел в заданной матрице
  7. Запись программы C Программа C для замены диагоналей матрицы

Все программы структурирования с примерами

  1. Написать программу C для хранения информации в структуре и ее отображения
  2. Напишите программу на C для добавления двух расстояний в системе дюймов-футов с использованием структуры
  3. Напишите программу на C для вычисления разницы между двумя периодами времени
  4. Напишите программу на C, чтобы продемонстрировать пример вложенной структуры
  5. Напишите программу на C, чтобы продемонстрировать пример указателя структуры
  6. Напишите программу на языке C для расчета процента учащихся, используя структуру
  7. Напишите программу C для создания сведений о книге, используя структуру

Программы числовых шаблонов на языке c

  1. Все числовые шаблоны на языке программирования C++

Шаблон звезды на языке программирования c

  1. Шаблон звезды на языке программирования C

Все программы алфавита с примерами

  1. Программы шаблонов алфавита в c

Простые задачи программирования

Простые задачи программирования

Всякий раз, когда я являюсь ассистентом вводного класса CS, на котором студенты изучают какой-либо язык программирования, мне трудно придумывать хорошие упражнения. Задачи из Project Euler и им подобных обычно слишком сложны для начинающих, особенно если у них нет серьезного математического образования.

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

Я полагаю, что они также полезны, хотя и намного проще, когда опытный человек хочет выучить новый язык.

Это руководство было переведено на китайский язык компанией yifeitao Простые задачи программирования на китайском языке

Прежде чем начать

Научиться программировать означает научиться решать проблемы с помощью кода. Концептуально не очень сложно написать программу, решающую проблему, которую вы можете решить самостоятельно. Навык, который вам необходимо приобрести, заключается в том, чтобы очень точно думать о том, как вы решаете проблему, и разбивать ее на этапы, которые настолько просты, что их может выполнить компьютер. Я призываю вас сначала решить несколько примеров проблемы вручную и подумать о том, что вы сделали, чтобы найти решение. Например, если задача состоит в сортировке списков, отсортируйте короткие списки самостоятельно. Разумным методом было бы найти наименьший элемент, записать его и вычеркнуть из исходного списка и повторять этот процесс, пока не отсортируете весь список. Затем вы должны научить компьютер 1) как найти наименьший элемент, 2) как его записать, 3) как его вычеркнуть и завернуть в цикл. Затем продолжайте этот процесс разбивки задач, пока не будете уверены, что знаете, как написать необходимую программу.

Чтобы добиться хороших результатов в программировании, вам необходимо как можно раньше и тщательнее протестировать свою работу. Все делают ошибки при программировании, и поиск ошибок в программах занимает очень большую часть рабочего дня программиста. Найти проблему в маленьком и легком фрагменте кода намного проще, чем пытаться обнаружить ее в большой программе. Вот почему вы должны попытаться протестировать каждую подзадачу, которую вы определили во время разбивки задач, отдельно. Только после того, как вы убедитесь, что каждая часть работает так, как вы ожидаете, вы можете попытаться соединить их вместе. Убедитесь, что вы также протестировали всю программу, так как при взаимодействии различных частей могут возникать ошибки. Вы должны попытаться автоматизировать свои тесты. Чем проще тестировать вашу программу, тем свободнее вы экспериментируете с изменениями.

Последний важный момент — это то, как вы выражаете свои мысли в виде кода. Точно так же, как вы можете по-разному выразить один и тот же аргумент в обычном эссе на английском языке, вы можете по-разному выразить один и тот же метод решения проблемы в коде. Попробуйте для краткости. Строки, которые вы не пишете, — это строки, в которых вы можете быть уверены, что в них нет ошибок. Не бойтесь поискать в Google идиоматические способы делать то, что вы хотели бы делать (после того, как вы попробовали сделать это сами!). Помните, что вы не пишете программу для компьютера, вы пишете ее для других людей (возможно, для вас в будущем!). Выбирайте имена, которые объясняют вещи, добавляйте комментарии там, где этих имен недостаточно. Никогда не комментируйте что делает код, пишите только комментарии, объясняющие почему .

Это плохой пример:

// Эта функция проверяет, является ли число четным
защита f(x):
  // вычисляем x по модулю 2 и проверяем, равен ли он нулю
  если по модулю (х, 2) == 0:
    // число четное
    вернуть Истина
  еще:
    // число нечетное
    вернуть ложь
 

Ту же самую идею гораздо легче понять, если написать так:

def is_divisible (число, делитель):
  вернуть по модулю (число, делитель) == 0
защита is_even (число):
  вернуть is_divisible (число, 2)
 

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

Элементарный

  1. Напишите программу, выводящую на экран «Hello World».
  2. Напишите программу, которая запрашивает имя пользователя и приветствует его своим именем.
  3. Измените предыдущую программу так, чтобы только пользователи Алиса и Боб приветствовали их имена.
  4. Напишите программу, которая запрашивает у пользователя число n и печатает сумму чисел от 1 до n
  5. Измените предыдущую программу таким образом, чтобы в сумме учитывались только числа, кратные трем или пяти, например. 3, 5, 6, 9, 10, 12, 15 для n =17
  6. Напишите программу, которая запрашивает у пользователя число n и дает ему возможность выбирать между вычислением суммы и вычислением произведения 1,…, n .
  7. Напишите программу, выводящую таблицу умножения чисел до 12.
  8. Напишите программу, которая выводит всех простых чисел. (Примечание: если ваш язык программирования не поддерживает числа произвольного размера, вывод всех простых чисел до наибольшего числа, которое вы можете легко представить, тоже подойдет.)
  9. Напишите игру-угадайку, в которой пользователь должен угадать секретное число. После каждого предположения программа сообщает пользователю, было ли их число слишком большим или слишком маленьким. В конце должно быть напечатано необходимое количество попыток. Это считается только одной попыткой, если они вводят одно и то же число несколько раз подряд. 9{k+1}}{2k-1} = 4\cdot(1-1/3+1/5-1/7+1/9-1/11\ldots).

    Списки, строки

    Если в выбранном вами языке нет встроенного списка и/или строкового типа (например, вы используете C), эти упражнения также должны быть решены для массивов. Однако некоторые решения для списка на основе массива (например, vector в C++) и списка на основе указателя (например, list в C++) сильно различаются, по крайней мере, если вы заботитесь об эффективности своего кода. Поэтому вы можете либо найти библиотеку, либо выяснить, как реализовать собственный связанный список, если в вашем языке его нет.

    1. Напишите функцию, которая возвращает самый большой элемент в списке.
    2. Напишите функцию, которая переворачивает список, желательно на месте.
    3. Напишите функцию, которая проверяет, встречается ли элемент в списке.
    4. Напишите функцию, которая возвращает элементы в нечетных позициях в списке.
    5. Напишите функцию, которая вычисляет промежуточную сумму списка.
    6. Напишите функцию, которая проверяет, является ли строка палиндромом.
    7. Напишите три функции, вычисляющие сумму чисел в списке: используя for — цикл, while — цикл и рекурсия. (При наличии этих конструкций на выбранном вами языке.)
    8. Напишите функцию on_all , которая применяет функцию к каждому элементу списка. Используйте его, чтобы напечатать первые двадцать идеальных квадратов. Совершенные квадраты можно найти, умножив каждое натуральное число на себя. Первые несколько полных квадратов: 1*1= 1 , 2*2=4 , 3*3=9 , 4*4=16 . Двенадцать, например, не является идеальным квадратом, потому что натурального числа 9 не существует.0430 м , так что м*м=12 . (Этот вопрос сложен, если ваш язык программирования затрудняет передачу функций в качестве аргументов.)
    9. Напишите функцию, которая объединяет два списка. [а,б,в] , [1,2,3] [а,б,в,1,2,3]
    10. Напишите функцию, которая объединяет два списка, поочередно беря элементы, например. [а,б,в] , [1,2,3] [а,1,б,2,в,3] .
    11. Напишите функцию, которая объединяет два отсортированных списка в новый отсортированный список. [1,4,6] , [2,3,5] [1,2,3,4,5,6] . Вы можете сделать это быстрее, чем объединить их с последующей сортировкой.
    12. Напишите функцию, которая вращает список на тыс. элементов. Например, [1,2,3,4,5,6] , повернутый на два, становится [3,4,5,6,1,2] . Попробуйте решить эту проблему, не создавая копию списка. Сколько операций подкачки или перемещения вам нужно?
    13. Напишите функцию, которая вычисляет список первых 100 чисел Фибоначчи. Первые два числа Фибоначчи — 1 и 1. n+1 -е число Фибоначчи можно вычислить, сложив n -е и n-1 -е числа Фибоначчи. Таким образом, первые несколько равны 1, 1, 1+1=2, 1+2=3, 2+3=5, 3+5=8.
    14. Напишите функцию, которая принимает число и возвращает список его цифр. Таким образом, для 2342 он должен вернуть [2,3,4,2] .
    15. Напишите функции, которые складывают, вычитают и умножают два числа в их представлении в виде списка цифр (и возвращают новый список цифр). Если вы амбициозны, вы можете реализовать умножение Карацубы. Пробуйте разные базы. Что является лучшей базой, если вы заботитесь о скорости? Если вы не смогли полностью решить приведенное выше упражнение с простыми числами из-за отсутствия больших чисел в вашем языке, теперь вы можете использовать для этой задачи свою собственную библиотеку.
    16. Напишите функцию, которая берет список чисел, начальное основание b1 и целевое основание b2 , интерпретирует список как число по основанию b1 и преобразует его в число по основанию b2 (в в виде списка цифр). Так, например, [2,1,0] по основанию 3 преобразуется в основание 10 как [2,1] .
    17. Реализовать следующие алгоритмы сортировки: сортировка выбором, сортировка вставками, сортировка слиянием, быстрая сортировка, сортировка марионеток. Проверьте описание в Википедии.
    18. Реализовать бинарный поиск.
    19. Напишите функцию, которая берет список строк и печатает их по одной на строку в прямоугольной рамке. Например, список ["Hello", "World", "in", "a", "frame"] печатается как:

       **********
      * Привет *
      * Мир *
      * в    *
      * а *
      * рамка *
      ********** 
    20. Напишите функцию, которая переводит текст на поросячью латынь и обратно. Английский переводится на свиную латынь путем переноса первой буквы каждого слова в конец слова и добавления «ау». «Быстрая коричневая лисица» становится «Hetay uickqay rownbay oxfay».

    Промежуточный

    1. Напишите программу, которая выводит все возможности поставить + или - или ничего между числами 1,2,…,9 (в этом порядке) так, чтобы результатом было 100. Например, 1 + 2 + 3 — 4 + 5 + 6 + 78 + 9 = 100.
    2. Напишите программу, которая принимает в качестве входных данных продолжительность года (в дробных частях) для воображаемой планеты и выводит правило високосного года, которое минимизирует разницу с солнечным годом планеты.
    3. Реализовать структуру данных для графиков, допускающую модификацию (вставку, удаление). Должна быть возможность хранить значения на ребрах и узлах. Для этого может быть проще всего использовать словарь (node, edgelist).
    4. Напишите функцию, которая генерирует представление графика в виде точки.
    5. Напишите программу, которая автоматически генерирует для вас эссе.
      1. Используя образец текста, создайте ориентированный (мульти-)граф, в котором слова текста являются узлами, а между 9 точками есть направленное ребро.0430 u и v , если за u следует v в вашем образце текста. Несколько вхождений приводят к множеству ребер.
      2. Выполните случайный обход этого графа: начиная с произвольного узла, выберите случайного преемника. Если преемник не существует, выберите другой случайный узел.
    6. Напишите программу, которая автоматически преобразует английский текст в азбуку Морзе и наоборот.
    7. Напишите программу, которая находит самую длинную палиндромную подстроку заданной строки. Постарайтесь быть максимально эффективным!
    8. Придумайте хороший интерфейс для списка. Какие операции вам обычно нужны? Возможно, вы захотите изучить интерфейс списка на своем языке и на некоторых других популярных языках для вдохновения.
    9. Реализуйте свой интерфейс списка, используя фиксированный кусок памяти, скажем, массив размером 100. Если пользователь хочет добавить в ваш список больше материала, чем помещается в вашей памяти, вы должны создать какую-то ошибку, например, вы можете выдать исключение если ваш язык поддерживает это.
    10. Улучшите свою предыдущую реализацию, чтобы в вашем списке можно было хранить произвольное количество элементов. Например, вы можете выделять все большие и большие блоки памяти по мере роста вашего списка, копировать старые элементы и освобождать старое хранилище. Вероятно, вам также следует освободить эту память в конце концов, если ваш список сократится настолько, что он больше не понадобится. Подумайте, насколько больше должен быть новый кусок памяти, чтобы ваша производительность не упала из-за выделений. Например, увеличение размера на 1 элемент — плохая идея.
    11. Если вы правильно выбрали прирост в предыдущей задаче, вы, как правило, не будете распределять слишком часто. Однако добавление к большому списку иногда требует значительного времени. Это может быть проблематично в некоторых приложениях. Вместо этого попробуйте выделить новые участки памяти для новых элементов. Поэтому, когда ваш список заполнен и пользователь хочет что-то добавить, выделите новый фрагмент из 100 элементов вместо того, чтобы копировать все элементы в новый большой фрагмент. Подумайте, где вести учет того, какие куски у вас есть. Различные стратегии ведения бухгалтерского учета могут существенно изменить характеристики вашего списка.
    12. Реализовать двоичную кучу. Один раз с использованием списка в качестве базовой структуры данных и один раз путем реализации двоичного дерева, связанного с указателем. Используйте его для реализации кучевой сортировки.
    13. Реализовать несбалансированное бинарное дерево поиска.
    14. Реализуйте сбалансированное двоичное дерево поиска по вашему выбору. Мне больше всего нравятся (a,b)-деревья.
    15. Сравните производительность вставки, удаления и поиска в несбалансированном дереве поиска со сбалансированным деревом поиска и отсортированным списком. Подумайте о хороших входных последовательностях. Если вы реализовали (a,b)-дерево, подумайте о хороших значениях a и b.

    Расширенный

    1. Имея две строки, напишите программу, которая эффективно находит самую длинную общую подпоследовательность.
    2. Для заданного массива чисел напишите программу, эффективно отвечающую на запросы вида: «Какое ближайшее большее значение числа на позиции и ?», где расстояние — это разница индексов массива. Например, в массиве [1,4,3,2,5,7] ближайшее большее значение для 4 равно 5. После предварительной обработки с линейным временем вы сможете отвечать на запросы за постоянное время.
    3. Имея две строки, напишите программу, которая выводит кратчайшую последовательность вставок и удалений символов, превращающих одну строку в другую.
    4. Напишите функцию, которая умножает две матрицы. Сделайте его максимально эффективным и сравните производительность с безупречной библиотекой линейной алгебры для вашего языка. Возможно, вы захотите прочитать об алгоритме Штрассена и влиянии кешей ЦП. Попробуйте разные макеты матриц и посмотрите, что получится.
    5. Реализовать дерево ван Эмде Боаса. Сравните его с вашими предыдущими реализациями дерева поиска.
    6. Для заданного набора d-мерных прямоугольных ящиков напишите программу, которая вычисляет объем их объединения. Начните с 2D и двигайтесь дальше.

    ГИП

    • Напишите программу, отображающую прыгающий мяч.
    • Напиши игру памяти.
    • Написать клон тетриса

    Открытый

    1. Напишите программу, которая воспроизводит Виселицу как можно лучше. Например, вы можете использовать такой большой словарь и выбрать букву, которая исключает большинство слов, которые все еще являются возможными решениями. Постарайтесь сделать программу максимально эффективной, т.е. не просматривайте весь словарь на каждом шагу.
    2. Напишите программу, которая играет в игру «Камень, ножницы, бумага» лучше, чем случайно, против человека.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *