С клавиатуры вводится строка символов. Вывести на экран все согласные символы, встречающиеся в строке - C (СИ)
Формулировка задачи:
С клавиатуры вводится строка символов. Вывести на экран все согласные символы, встречающиеся в строке.на СИ
Решение задачи: «С клавиатуры вводится строка символов. Вывести на экран все согласные символы, встречающиеся в строке»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> #define CONSONANTS "bcdfghjklmnpqrstvwxyz" int main(void) { char buf[BUFSIZ], * ptr; while ( printf("\nString: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' && printf("Consonants: ") ) for ( ptr = buf; *ptr; ++ ptr ) if ( strchr(CONSONANTS, tolower(*ptr)) ) printf("%c", *ptr); return 0; }
Объяснение кода листинга программы
В этом коде:
- Синтаксический анализ:
- Используется препроцессорный директива
#include
для импорта необходимых библиотек:stdio.h
для ввода-вывода,string.h
для работы со строками иctype.h
для работы с типами символов. - Определяется макрос
CONSONANTS
, который содержит все согласные буквы в нижнем регистре. - Функция
main
описывает точку входа в программу. - Объявлены переменные
buf
иptr
. Переменнаяbuf
является буфером для ввода строки из консоли, а переменнаяptr
используется как указатель на текущий символ в буфере. - Организован цикл
while
, который будет выполняться до тех пор, пока пользователь не введет пустую строку. - Внутри цикла происходит вывод приглашения для ввода строки и самого ввода строки в буфер.
- Далее происходит проверка на окончание строки (перевод строки
\n
) и переход к следующему символу в буфере. - Для каждого символа в буфере проверяется, является ли он согласным. Если да, то он выводится на экран.
- В конце цикла возвращается 0, что означает успешное завершение программы.
- Используется препроцессорный директива
- Логика работы программы:
- Программа запрашивает у пользователя ввод строки.
- Если пользователь вводит пустую строку, цикл завершается.
- Для каждого символа в строке проверяется, является ли он согласным. Если да, то он выводится на экран.
- В конце программы выводится 0, что означает успешное завершение.
- Ошибки и улучшения:
- Код не обрабатывает исключения или ошибки ввода-вывода. Например, если пользователь введет больше символов, чем есть в буфере, код не будет обрабатывать переполнение буфера.
- Код не обрабатывает неконсольные символы. Если пользователь введет символ, который не может быть преобразован в управляющий символ, код не будет знать, как с ним работать.
- Код можно улучшить, добавив обработку исключений и ошибок ввода-вывода, чтобы программа была более надежной и устойчивой к ошибкам.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д