Тут знаходиться колекція рішень задач і приклади маленьких програм на мові C.
Друга половина завдань - це відповіді на деякі завдання до курсу "Особливості мови C".
В останньому прикладі "Покажчики та масиви" демонструються особливості покажчиків.
Рішення задач на мові програмування C
Рішення задач на мові програмування C
Говориться про те, що в стандартній бібліотеки існує функція для вимірювання довжини рядка, а також наводиться її власна версія. Робочий варіант коду програми повністю відсутня.
У прикладі нижче рядок, що вводиться користувачем, записується в масив символів. Потім її довжина вимірюється за допомогою вбудованої функції strlen (), після чого за допомогою користувальницької функції strlen2 ().
Рішення задач на мові програмування C
Наводиться приклад функції squeeze. яка видаляє всі символи c з рядка s.
Нижче представлений повний код програми з використанням цієї функції. А також відповідь до вправи 2.4, де пропонується написати функцію, що видаляє з рядка s1 все символи, що зустрічаються в рядку s2.
Алгоритм видалення символу з рядка можна описати так:
- Поки не буде досягнутий кінець рядка,
- якщо черговий символ рядки не дорівнює символу для видалення,
- записати черговий символ за місцем індексу j. після цього останній збільшити на одиницю.
Іншими словами, алгоритм зводиться до того, що символ за індексом i затирається наступним символом, якщо він збігся з символом для видалення; т.к запис йде за лічильником j. а він збільшується лише тоді, коли символи з рядка і для видалення не збігаються.
Алгоритм видалення тих символів рядка, які зустрічаються в іншому рядку, відрізняється від попереднього тим, що потрібно по черзі витягати символи з другого рядка і видаляти їх з першої. Тобто Наведений вище алгоритм слід вкласти в цикл перебору символів другого рядка.
Видалення всіх символів c з рядка
Видалення всіх символів, що зустрічаються в рядку s2. з рядка s1
Примітка. У другій програмі запис символів в рядок виділена в окрему функцію, тому що треба записати два рядки. Інакше довелося б дублювати код.
Рішення задач на мові програмування C
У книзі описана функції пошуку елемента в упорядкованому масиві за допомогою алгоритму двійкового пошуку (дихотомії).
Приклад робочої програми з використанням цієї функції:
Рішення задач на мові програмування C
Відповідь до вправи 3.2.
Заміна керуючих послідовностей звичайними символами
Примітка. Використовується Постфіксний форма инкремента (k ++). В цьому випадку k спочатку використовується і тільки потім збільшується на одиницю.
При виведенні зміненої рядки з'являються дивні "артефакти" в кінці.
Заміна пар символів "\ n" і "\ t" керуючими послідовностями
Рішення задач на мові програмування C
Відповідь до вправи 3.3. Спрощена версія.
Програма розгортає рядок, подібний до a-z в рядок abc. xyz. Якщо перший рядок некоректно записана (наприклад, z-a або oiy), то другий рядок містить тільки символ кінця рядка.
Рішення задач на мові програмування C
Рішення задач на мові програмування C
Програма вважає кількість введених користувачем символів, рядків і слів.
Рішення задач на мові програмування C
Напишіть програму, в якій крім функції main () були б ще дві функції: в одній обчислювався факторіал переданого числа, в іншій - перебував n-ий елемент ряду Фібоначчі (n - параметр функції). Викличте ці функції з різними аргументами.
Рішення задач на мові програмування C
Напишіть програму, яка запитує у користувача дві дати в форматі дд.мм.рррр. Дні, місяці і роки слід привласнити цілочисельним змінним. Програма повинна виводити на екран інформацію про те, яка дата раніша, а яка пізніша.
Рішення задач на мові програмування C
Оголосіть в програмі три масиву символів. Дані для двох з них отримаєте за допомогою викликів функції gets # 40; # 41 ;. Третій масив повинен містити результат конкатенації (з'єднання) двох введених рядків. Напишіть функцію, яка виконує конкатенацію рядків.
Рішення задач на мові програмування C
Напишіть програму, яка визначає в процентному співвідношенні кількість голосних і приголосних букв в текстовому файлі. Файл передається в програму через командний рядок.
Рішення задач на мові програмування C
Напишіть функцію, яка приймає покажчики на два масиви. Функція повинна заповнювати один масив 25-ю випадковими парними числами, а інший - 25 непарними. Продемонструйте її роботу.
Рішення задач на мові програмування C
Рішення задач на мові програмування C
Коли змінна-вказівник оголошується (наприклад, int * q), перед її ім'ям також ставиться знак *. Однак в даному контексті він просто повідомляє, що дана змінна - це покажчик, і знак * не має відношення до вилучення значення.