wccho89   6년 전

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    int n, i, sum=0;
    char num[110];
   
    scanf("%d",&n);
    scanf("%s",num);
   
    for(i=0; i<n; i++){
        sum+=atoi(&num[i]);
    }
    printf("%d\n",sum);
    return 0;
}

 

이렇게 푸니까 자꾸 안풀리더라구요...

왜안되는걸까요..

 

 

 

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    int n, i, sum=0;
    char num[110];
   
    scanf("%d",&n);
    scanf("%s",num);
   
    for(i=0; i<n; i++){
        switch(num[i]){
            case 48: sum+=0; break;
            case 49: sum+=1; break;
            case 50: sum+=2; break;
            case 51: sum+=3; break;
            case 52: sum+=4; break;
            case 53: sum+=5; break;
            case 54: sum+=6; break;
            case 55: sum+=7; break;
            case 56: sum+=8; break;
            case 57: sum+=9; break;
        }
    }
    printf("%d\n",sum);
    return 0;
}

 

이렇게 아스키코드값을 이용해서 더럽게 풀었는데 찜찜해서 질문드립니다 ㅠ

ehddml3   6년 전

atoi가 문자열을 읽기 때문에 저렇게 넣으면 두번째 예제 입력 같은 경우에는 12345 + 2345 + 345 + 45 + 5 + 0 이렇게 되어버려서 틀립니다.

문자를 하나씩 받으려고 했던 것 같은데 다른 방법을 찾아봐야할 것 같네요

sgchoi5   6년 전

atoi() 의 선언을 보시면 문자열( null character 로 끝나야 하는.. )이 입력값입니다. num 하나의 숫자와 '\0' 로 되어 있어야 정상처리가 되겠지요.

그냥 %1d 로 하나의 숫자만 읽어 들어들이면 됩니다.

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