1. 목적
- 문자열 배열에 속한 문자값을 이해한다.
2. 문제 (점수 : 30 점)
- string.h 를 활용하지 않고 문자열을 입력 받아서 문자의 크기를 비교하여라.
- 대문자 > 소문자 > 띄어 쓰기 이며 크기값은 ASCII 코드 값을 의미 한다.
- 출력 화면
1차)
첫번째 문자열을 입력하세요 : Hello
두번째 문자열을 입력하세요 : Hello World
Hello World 가 더 크다.
Press any key to continue
2차)
첫번째 문자열을 입력하세요 : ABCDEF
두번째 문자열을 입력하세요 : AABCDE
ABCDEF 가 더 크다.
Press any key to continue
3차)
첫번째 문자열을 입력하세요 : abd c
두번째 문자열을 입력하세요 : abc d
두 문자열은 동일하다.
Press any key to continue
첫번째 문자열을 입력하세요 : Hello
두번째 문자열을 입력하세요 : Hello World
Hello World 가 더 크다.
Press any key to continue
2차)
첫번째 문자열을 입력하세요 : ABCDEF
두번째 문자열을 입력하세요 : AABCDE
ABCDEF 가 더 크다.
Press any key to continue
3차)
첫번째 문자열을 입력하세요 : abd c
두번째 문자열을 입력하세요 : abc d
두 문자열은 동일하다.
Press any key to continue
3. 이해
- ASCII 코드 값을 실제 계산을 할줄 아는가?
- 문자열을 받아서 배열로 저장할 수 있는가?
4. 코드
#include <stdio.h>
int main()
{
char in_a[255] = {0};
char in_b[255] = {0};
long scr_a, scr_b;
int i;
scr_a = scr_b = i = 0;
printf("첫번째 문자열을 입력하세요 : ");gets(in_a);
printf("두번째 문자열을 입력하세요 : ");gets(in_b);
while(in_a[i] != 0 || in_b[i] != 0)
{
scr_a += (int)in_a[i];
scr_b += (int)in_b[i];
i++;
}
if(scr_a > scr_b) printf("%s 가 더 크다.\n",in_a);
if(scr_a < scr_b) printf("%s 가 더 크다.\n",in_b);
if(scr_a == scr_b) printf("두 문자열은 동일하다.\n");
return 0;
}
5. 해설
- 두 문자열이 NULL 될때 까지 ASCII 코드 값의 합을 저장하는 내용입니다. 0 으로 초기화 시켰기 때문에 한 문장이 끝났을때에 뒷자리를 계속 더해도 0 이기 때문에 계속 더할수 있습니다.
- ASCII 코드 값을 int 형으로 형변환 시켜 더하면 크기에 따른 숫자 값을 입력 받아 쓸수가 있습니다.
6. 참고
- 유사 문제