lkc263   4년 전

저는 처음에 int형으로 하며 scanf입력을 사용하여 나머지를 통하여 구하는 합을 의미하는 줄 알았습니다. 하지만 그러한게 아니라 getchar() 문자 입력을 통해 나오는 결과 였습니다.

for 문안에 

getchar이 입력상태 와 (-'0')을 한이유는 문자이기에 사용한 결과일까요??

sum = sum + getchar() - '0';   이부분 해석 가능하실까요??

exponential_e   4년 전

말씀하신대로 getChar가 문자형이기 때문에 아스키코드값 '0'을 빼준 듯합니다.

exponential_e   4년 전

문자형 '0' ~ '9'는 아스키 코드표를 보면 80 ~ 89의 값을 의미합니다.

따라서, 만약 문자형 숫자: '1'을 정수형 1로 바꾸기위해선 81 - 80 -> '1' - '0' = 1 이런식으로 써서 연산하곤 합니다.

이를 알파벳에 적용해서 알파벳 값을 배열 인덱스로 사용도 자주 하구요..

exponential_e   4년 전

이 문제는 입력으로들어오는 수가 크기 때문에

즉, N은 숫자의 갯수를 의미하는데 100까지 들어온다했으니 최대 100자리 까지 들어옵니다.

long범위를 훨씬 뛰어넘겠죠.. (19자리인가? 10^18이니까요.)

어차피 입력으로 들어온 N개의 숫자를 하나씩 더하는 것이니 일부러 문자로 하나하나 받아와서 이를 한자리 정수형으로 바꿔주고 더해서 결과를 내는 코드라고 보시면 될 것같습니다.

lkc263   4년 전

아하! getchar()의 방법으로 입력을 한다면 배열 형식

ex) 

count=5;

5반복문에서

54321을 입력했다면 [0]=5  [1]=4  [2]=3 [3]=2 [4]=1 저장되어 for문이 돌때

[0]부터 [4]까지의 합을 반복문을 통해 나오는 결과일까요??

exponential_e   4년 전

제가 getchar 동작방식은 잘 모르는데.. 그렇게 생각하시는게 이해하기 편하시면 그렇게 생각하셔도 될 거 같습니다.

댓글을 작성하려면 로그인해야 합니다.