Codeup кладбище - Проблема C: шестигранный преобразование

Название Описание

Длина до 30 десятичных цифр неотрицательного целого числа выходного сигнала преобразуются в двоичное число.

запись

Множество наборов данных, каждый из поведения длины не более 30 десятичных неотрицательного целого числа.
(Обратите внимание , что число является десятичным числом 30 может иметь вместо целочисленных 30bits)

экспорт

Двоичное число, соответствующее каждой строке вывода.

ввод пробы

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 становится 11 после того, как цикл, ANS [0] = 1; Num становится длиннее для более поздних циклов-5, ANS [1] = 1; Num становится длиннее для более поздних циклов 0 2, ANS [2] = 1; Num становится больше для более поздних циклов 0 1, ANS [3] = 0; Num становится длиннее для более поздних циклов 0 0, ANS [4] = 1. И, наконец, обратный выход анс массив.

Опубликовано 462 оригинальные статьи · вона похвала 55 · просмотров 320 000 +

рекомендация

отblog.csdn.net/LY_624/article/details/88832966