Определить, сколько слов начинаются с одной и той же буквы? - C (СИ)
Формулировка задачи:
Помогите пожалуйста найти ошибку в программе
Сколько слов начинаются с одной и той же буквы?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i , k = 0 ;
char ar[100] ;
char p = ' ' ;
char bykva;
printf("Vvedite predlozhenie\n") ;
scanf("%c",&ar) ;
gets (ar);
printf ("vvedite bukvu\n");
scanf ("%c" ,&bykva);
for (i=0 ; i < 100 ; ++i ){
if ( ((ar[i]==bykva) && (ar [i-1] == p) && (i>0)) || (i==0 && ar[i] == bykva ) ){ k+=1; }
}
printf( "Kol-vo slov = %d" , k ) ;
return 0;
}Решение задачи: «Определить, сколько слов начинаются с одной и той же буквы?»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i , k = 0 ;
char ar[100] ;
char p = ' ';
char bykva;
printf("Vvedite predlozhenie\n") ;
gets (ar);
printf ("vvedite bukvu\n");
scanf ("%c" ,&bykva);
for (i=0 ; i < strlen(ar) ; ++i )
{
if(ar[i] == bykva && (i == 0 || ar[i-1] == p))
{
k+=1;
}
}
printf( "Kol-vo slov = %d" , k ) ;
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
i- циклk- счётчик словar- строка, в которую вводится предложениеp- пробелbykva- буква, с которой сравниваются слова
- Выводится предложение ввести предложение и букву для проверки.
- Далее, с помощью функции
getsвводится предложение. - Затем, с помощью функции
scanfвводится буква для сравнения. - В цикле перебираются все символы в предложении.
- Если текущий символ равен введенной букве и предыдущий символ является пробелом, то к счётчику слов добавляется единица.
- В конце выводится количество слов, начинающихся с введенной буквы.