1. 程式人生 > >九度 題目1208:10進位制 VS 2進位制

九度 題目1208:10進位制 VS 2進位制

#include <stdio.h>
#include <string.h>
char ch1[1000],ch2[4000]; //ch1儲存使用者輸入的10進位制大整數,ch2儲存ch1轉換後的翻轉的2進位制
int num[1000];//儲存ch2轉換的新的2進位制大整數!
void Ten_two_convers(){//十進位制數轉換成2進位制數
     int len = strlen(ch1);
        int sum = 1;
        int flag = 0;
        int a;
        int b;
        while(sum){ //迴圈,當ch1字元陣列每位都是0的時候,迴圈結束
            b = 0;
            sum = 0;
            ch2[flag++] = (ch1[len-1] - '0')%2 + '0';
            for(int i = 0; i < len; i++){
                if(b == 0){
                    a = (ch1[i] - '0');
                    ch1[i] = a/2 + '0';
                }else{
                    a = ch1[i] - '0' + 10;
                    ch1[i] = a/2 + '0';
                }
                if(a%2 == 0){    //此處一定是a%2,一開始寫的是ch1[i]%2,忘記了ch1[i]
                    b = 0;
                }else{
                    b = 1;
                }
                sum = sum + a/2;
            }
        }
}
int Two_ten(){  //2進位制數轉換成10進位制數!!!!!!這個思路是借鑑了這種思想:比如2進位制1010 =(((0*2+1)*2+0)*2+1)*2+0=10