Подсчитать количество букв 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' не найдено, выводится сообщение об этом.