728x90
반응형
문제 설명
영어 문장이 주어지면 a부터 z까지 알파벳 문자가 각각 몇 번 나왔는지 출력하는 프로그램을 작성하시오.
입력
1. 90글자 이내의 영어로 된 문장이 입력된다.
2. 이 문장은 영어 소문자, 공백 및 특수 문자로만 이루어져 있다.
출력
a부터 z까지 사용된 알파벳 개수를 [입출력 예시]를 참고하여 출력한다. 특수문자와 공백의 개수는 출력하지 않는다.
입력 예시
oh! my god!
출력 예시
a:0
b:0
c:0
d:1
e:0
f:0
g:1
h:1
i:0
j:0
k:0
l:0
m:1
n:0
o:2
p:0
q:0
r:0
s:0
t:0
u:0
v:0
w:0
x:0
y:1
z:0
문제 풀이
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define BUFFER 100
int main() {
char arr[BUFFER];
int i, j, cnt;
scanf("%[^\n]s", arr);
printf("string: %s, length: %d\n\n", arr, strlen(arr));
for (i = 97; i < 123; i++) {
cnt = 0;
for (j = 0; j < strlen(arr); j++) {
if (i == arr[j])
cnt++;
}
printf("%c(%d): %d\n", i, i, cnt);
}
return 0;
}
-. 우선 일반적으로 scanf를 써서 문자열을 받으면 공백을 문자열 끝으로 생각하기 때문에 뒤가 잘리는 문제가 발생함. 따라서, scanf("%s", arr)아닌 scanf("%[^\n]s", arr)로 바꿈. 이 방법 말고도 fgets이 있음.
-. 소문자 ASCII 코드 값은 97(a) ~ 122(z) 임.
-. 입력받은 arr 값 길이만큼 for문 돌림. 소문자 ASCII 코드 값과 비교해서 count함.
728x90
반응형
'공돌이 > C언어' 카테고리의 다른 글
[백준/C언어] 2609번: 최대공약수와 최소공배수 (0) | 2021.10.18 |
---|---|
[백준/C언어] 2460번: 지능형 기차 2 (0) | 2021.10.18 |
[백준/C언어] 2501번: 약수 구하기 (0) | 2021.10.18 |
[C언어] 삽입정렬(insertion sort) (0) | 2021.10.17 |
[C언어] 버블정렬(Bubble sort) (0) | 2021.10.15 |
댓글