您的位置:首页 > 其它

长的十进制字符串转换为二进制序列

2014-04-07 09:53 302 查看
最近正在练习考研的机试题目,感觉被清华的机试题困扰了好久,我尝试把问题分解,然后大的难题,就被我分解了。

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

 

#define DATA 40

#define MAX 200

 

void tenToBin(char *str);

 

char bin[MAX];

 

int main()

{

    char str[DATA];

 

    while(scanf("%s", str) != EOF)

    {

        tenToBin(str);

        puts(bin);  

    }

 

    return 0;

}

 

/**

 * Description:字符串整数转换为二进制

 */

void tenToBin(char *str)

{

    int i, j, k, len, sum, d;

    char temp;

 

    //初始化参数

    sum = 1;

    len = strlen(str);

    k = 0;

    memset(bin, 0, sizeof(bin));

 

    while(sum)

    {

        sum = 0;

 

        for(i = 0; i < len; i ++)

        {

            d = (str[i] - '0') / 2;

            sum += d;

 

            if(i == len - 1)

            {

                bin[k ++] = (str[i] - '0') % 2 + '0';

            }else

            {

                str[i + 1] += (str[i] - '0') % 2 * 10;

            }

 

            str[i] = d + '0';

        }

    }

     

    //逆序

    for(i = 0, j = k - 1; i < j; i ++, j --)

    {

        temp = bin[j];

        bin[j] = bin[i];

        bin[i] = temp;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐