Codeup 묘지 - 문제 C : 진수 변환

제목 설명

30 진수까지의 길이는 음이 아닌 정수 출력은 이진수로 변환된다 자리.

기입

데이터 세트의 복수하게는 30 진수 음수 일 이상의 길이의 동작마다.
(참고 번호 대신 정수의 30 비트, 30 가질 수있는 십진수 있음)

수출

출력의 각 라인에 대응하는 이진수.

샘플 입력

985
211
1126

샘플 출력

1111011001
11010011
10001100110
#include <stdio.h>
#include <string.h>
int main()
{
    char d[32];
    int ans[100];
    while(scanf("%s",d)!=EOF)
    {
        int sum=1,i=0,num[32],t,len=strlen(d);
        for(int j=0; j<len; j++)
            num[j]=d[j]-'0';    //将字符型数字转换为数字
        while(sum)
        {
            sum=0;      //用于进行循环,当所得的数剩1,除以2得0时结束
            for(int j=0; j<len; j++)
            {
                t=num[j]/2;
                sum+=t;
                if(j==len-1)     //如果是此数的最后一位,直接除二取余
                    ans[i++]=num[j]%2;
                else
                    num[j+1]+=(num[j]%2)*10;   //操作后得到的余数加上下一位数
                num[j]=t;    //得到商
            }
        }
        for(int j=i-1; j>=0; j--)  //逆向取余
            printf("%d",ans[j]);
        printf("\n");
    }
    return 0;
}

결과 :

구현 과정 :

예를 들어 23, NUM (2) (3)의 초기 배열은, NUM for 루프 후 11되고, ANS [0] = 1; NUM 나중에 사이클 0 5 길어져, ANS [1] = 1; NUM은 더 이상 사이클진다 0~2, ANS [2] = 1; NUM 나중에 사이클 0 1 ANS [3] = 0 길어져, NUM 나중에 사이클 0,0 ANS [4] = 1 이상이된다. 마지막 반전 출력 배열 ans와.

게시 된 462 개 원래 기사 · 원의 찬양 (55) · 전망 (320) 000 +

추천

출처blog.csdn.net/LY_624/article/details/88832966