Подсчитать количество букв k в последнем слове - C (СИ)
Формулировка задачи:
Добрый вечер! В С я не бум-бум.
Вроде я нашла похожую программу, но не уверенна:
Задание следующее:
Подсчитать количество букв k в последнем слове.Моя программа на паскале:
Var s,s1:string; i,k:byte; Begin write('Введите строку: ');readln(s); k:=0;s1:=''; For i:=Length(s) downto 1 do if not(s[i] in [' ',',','-']) then s1:=s1+s[i] else break; For i:=1 to Length(s1) do if s1[i]='k' then inc(k); if k>0 then write('В последнем слове букв "k"= ',k) else write('В последнем слове буква "k" не встречаются'); End.
int calchar( char* str, char tok = '\0' ) { char* ptr = str; while( *(++ptr) ); while( *(--ptr) == ' ' ); int ncount = 0; do { if( tok && *ptr != tok ) continue; ncount++; } while( *ptr-- != ' ' && ptr != (str - 1) ); return ncount; }
Решение задачи: «Подсчитать количество букв k в последнем слове»
textual
Листинг программы
#include <stdio.h> #include <string.h> int main() { const char CDelim[] = " ,.-?!"; char text[256]; int i, k = 0; printf("input text: "); fgets(text, sizeof(text), stdin); for (i = strlen(text) - 1; (0 <= i) && (strchr(CDelim, text[i]) == NULL); --i) { ; } for (++i; i < strlen(text); ++i) { if (text[i] == 'k') { k++; } } if (k > 0) { printf("'k' = %d\n", k); } else { printf("'k' not found ...\n"); } return 0; }
Объяснение кода листинга программы
Вывод:
- Вводится строка текста с помощью функции
fgets()
. - Два цикла обходят введенный текст.
Первый цикл:
- Перебирает символы в обратном порядке (от последнего до первого).
- Проверяет каждый символ на наличие в строке разделения.
- Если символ не является разделителем, то он игнорируется. Второй цикл:
- Перебирает символы в прямом порядке (от начала до конца).
- Если символ равен 'k', то увеличивается счетчик.
- Выводится количество найденных 'k'.
- Если 'k' не найдено, выводится сообщение об этом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д