Определить количество слов, которые начинаются и заканчиваются на одну и туже букву - C (СИ)
Формулировка задачи:
Дано рядок, що складається з російських слів, розділених
пробілами (одним або кількома). Визначити кількість слів, що
починаються і закінчуються однією і тією ж буквою.
Помогите пожалуйста, написать через принтф и сканф
Решение задачи: «Определить количество слов, которые начинаются и заканчиваются на одну и туже букву»
textual
Листинг программы
#include "stdafx.h"
#include <string.h>
int main()
{
int count = 0; // инициализация счётчика
char str[256] = "anapa sos"; // тестовая строка
char *token; // временный буффер
// разбиваем строку на подстроки функцией strtok
token = strtok(str," ");
if(token[0] == token[strlen(token) - 1]) { // если первый и последние символы одинаковые, прибавляем счётчик
count++;
}
// пока не разобрали всю строку
while (token != NULL) {
// разбиваем строку на подстроки функцией strtok
token = strtok(NULL, " ");
if(token != NULL && token[0] == token[strlen(token) - 1]) { // если первый и последние символы одинаковые, прибавляем счётчик
count++;
}
}
// вывод результата на экран
printf("Kolvo slov: %d", count);
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с C
- Объявляем функцию main(), в которой будет находиться основной код программы
- Инициализируем переменную count типа int со значением 0. Она будет использоваться для подсчета слов, удовлетворяющих условию
- Объявляем тестовую строку str типа char с длиной 256 символов и присваиваем ей значение
anapa sos - Объявляем переменную token типа char* (указатель на символ), которая будет использоваться как временный буфер
- Используем функцию strtok() для разбиения строки на подстроки, передавая в нее указатель на начало строки (str) и разделитель (пробел)
- Проверяем, совпадают ли первый и последний символы текущего слова (токена). Если да, увеличиваем значение переменной count на 1
- Используем цикл while для продолжения разбиения строки на подстроки до тех пор, пока не будет обработана вся строка
- Внутри цикла проверяем, является ли текущий токен не NULL и совпадают ли первый и последний символы текущего слова. Если да, увеличиваем значение переменной count на 1
- Выводим результат работы программы на экран с помощью функции printf()
- Возвращаем 0 из функции main(), чтобы указать, что программа успешно завершилась