Дана строка символов до точки. Определить, сколько каких латинских букв в ней содержится - C (СИ)
Формулировка задачи:
Как подсчитать количество каждой буквы?
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> int main() { int i=0,k=0; char s[]="Hello, world!.abcde"; puts(s); for(i=0;i<strlen(s);i++) { if(s[i]=='.') break; printf("%c",s[i]); } printf("\n"); for(i=0;s[i]!='.';i++) { if((s[i]>'a')&&(s[i]<'z'))k++; if((s[i]>'A')&&(s[i]<'Z'))k++; } printf("kolichestvo latinskih simvolov=%d\n",k); system("pause"); return 0; }
Решение задачи: «Дана строка символов до точки. Определить, сколько каких латинских букв в ней содержится»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> int main() { int alph[26] = { 0 }; char str[] = "Hello, world! This is string for test."; char* p = str; int i; for (; *p; ++p) { if (isalpha(*p)) { alph[tolower(*p) - 'a']++; } } for (i = 0; i < 26; ++i) { if (alph[i]) { printf("%c = %d\n", i + 'a', alph[i]); } } return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявляется массив alph размером 26 для подсчёта количества латинских букв в строке.
- Указывается исходная строка.
- Инициализируется указатель p на первый символ строки.
- В цикле for перебираются все символы строки.
- С помощью функции isalpha проверяется, является ли текущий символ латинской буквой.
- Если символ является латинской буквой, то его значение приводится к нижнему регистру, определяется его позиция в массиве alph и увеличивается соответствующее значение в массиве.
- В цикле for перебираются все позиции в массиве alph.
- Если значение в текущей позиции больше 0, то выводится название и значение этой позиции.
- Код завершается возвратом 0, что означает успешное выполнение.