题目1138:进制转换

来源:互联网 发布:手机淘宝咋改手机号 编辑:程序博客网 时间:2024/05/21 10:44
题目描述:

将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。

输入:

多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)

输出:

每行输出对应的二进制数。

样例输入:
0138
样例输出:
01111000

代码:

#include <stdio.h>#include <string.h>char str[30];int main() {    while(scanf("%s",str)!=EOF) {        int sum = 1;        int ans[100];        int i,j=0;        while(sum) {            sum = 0;            int len = strlen(str);            for(i = 0;i<len;i++) {                int d = (str[i] - '0') % 2;                 int x = (str[i] - '0') / 2;                sum += x;                if(i == len - 1) {                    ans[j++] = d;                }                else                     str[i+1] += d * 10;                str[i] = x + '0';            }        }        for(i = j - 1;i>=0;--i)            printf("%d",ans[i]);        printf("\n");    }    return 0;}                                        


本题可以画一个例子出来,便于理解和解题。

http://blog.csdn.net/wzy_1988/article/details/8640266

原创粉丝点击