문제에서 주어진 코드는 다음과 같다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#define _CRT_SECURE_NO_WARNINGS
#include void changeToDigitEncode(char s[], char e[]) // 이 함수를 제출
{
// 코드작성
}
int main(void) // 변경하지 마라
{
char sentence[20], encoded[40];
scanf("%s", sentence);
changeToDigitEncode(sentence, encoded);
printf("%s\n", encoded);
}
|
cs |
내 코드는 다음과 같다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void changeToDigitEncode(char s[], char e[])
{
int i;
for (i = 0; s[i] != '\0'; i++)
{
e[i] = s[i] - 'A' + '1';
}
e[i] = '\0';//문자열의 끝 표시
return;
}
int main(void)
{
char sentence[20];
char encoded[40];
scanf("%s", sentence);//알파벳
changeToDigitEncode(sentence, encoded);
printf("%s\n", encoded);//숫자
return 0;
}
|
cs |
여기서의 핵심은
e[i] = s[i] - 'A' + '1';
바로 저 문장이다.
예를 들어 A인 경우는 1이 나와야 한다다만 A는 아스키 코드로 65이므로 s[0]은 65이다 따라서 아스키코드만큼의 값을 뺴주고 '1'을 더해준다여기서 햇갈리는 점이 있는데 더해야 하는 것은 1이 아닌 문자 '1'이다왜냐하면 배열e의 타입이 char이기 때문이다.
'대학교 1-2 > 컴프' 카테고리의 다른 글
21 프논이 기말 1번째 문제 (0) | 2023.09.11 |
---|---|
21 프논이 기말 4번째 문제_2 (0) | 2023.09.11 |
21 프논이 기말 5번째 문제 (0) | 2023.09.10 |
HW1_2 (0) | 2023.09.09 |
HW1_1 (0) | 2023.09.09 |