九度 題目1208:10進位制 VS 2進位制
阿新 • • 發佈:2018-12-30
#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
#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