C_C++

(C언어) 알파벳 문자수 카운트하기

고니자니 2022. 12. 27. 12:34
반응형

문자열에서 대소문자 구분없이 알파벳 문자수를 카운트하는 C언어 코드입니다.

#define _CRT_SECURE_NO_WARNINGS   // Visual Studio
#include <stdio.h>

int main() {
	char s[200] = { 0 };
	int alpha[26] = { 0 };
	int i = 0, a;
	
    // gets(s);  -- 비주얼스튜이오에서는 fgets 함수 사용
    // gets 함수를 사용할 때는 아래의 while문의 '\n'를 '\0'로 변경해야 함
	fgets(s, 200, stdin);

	while (s[i] != '\n')
	{
		if (s[i] >= 'A' && s[i] <= 'Z')
		{
			a = s[i] + 32; // 대문자를 소문자로 변경
			alpha[a - 97]++;
		}
		else if (s[i] >= 'a' && s[i] <= 'z')
		{
			alpha[s[i] - 97]++;
		}
		i++;
	}

	for (i = 0; i < 26; i++)
	{
		if (alpha[i] != 0)
			printf("%c : %d\n", i + 97, alpha[i]);
	}

	return 0;
}

 

gets 함수를 사용하는 경우는 위의 코드를 조금 수정해야 합니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	char s[200] = { 0 };
	int alpha[26] = { 0 };
	int i = 0, a;
	
	gets(s);
	//fgets(s, 200, stdin);


	while (s[i] != '\0')
	{
		if (s[i] >= 'A' && s[i] <= 'Z')
		{
			a = s[i] + 32; // 대문자를 소문자로 변경
			alpha[a - 97]++;
		}
		else if (s[i] >= 'a' && s[i] <= 'z')
		{
			alpha[s[i] - 97]++;
		}
		i++;
	}

	for (i = 0; i < 26; i++)
	{
		if (alpha[i] != 0)
			printf("%c : %d\n", i + 97, alpha[i]);
	}

	return 0;
}

반응형