首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

自己写的二进制计算程序有关问题在哪里?

2012-03-09 
自己写的二进制计算程序问题在哪里??//计算器#include iostreamusingstd::coutusingstd::cin#include

自己写的二进制计算程序问题在哪里??
//   计算器
#include <iostream>
using   std::cout;
using   std::cin;

#include <cmath>
using   std::pow;

double   ten_t_two(   double   x   )
{
double   answer   =   0   ;
double   n   =   9;
for(   ;   x   > =   0;   )
{
for(   ;   x   <   pow(   2,   n   );   n--   );
answer=   answer   +   pow(   10,   n   );
x   =   x   -   pow(   2,   n   );
};
return   answer;
}


main()
{
int   ten;
cout < <   "输入一个10进制数字: ";
cin   > >   ten;
cout < <   ten_t_two(   ten   );

return   0;
}


错在哪里,能编译成功,估计是逻辑错误。请教~~~

[解决办法]
【参看一下这个转换吧,用字符串比较合适,否则容易溢出】
//任意 <=16的进制之间互相转换
//程序将 b1进制的s1数据 转换成 b2进制的s2,
//s2为输出结果...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *convert(const char *from, int fbase, char *to, int tbase)
{
char *TAB= "0123456789ABCDEF ", *p, *q;
int i, base=1, decfrom=0, len=strlen(from);
for(i=len-1; i> =0; i--){
decfrom += base* (from[i] <65?from[i]- '0 ':from[i]- 'A '+10);
base*=fbase;
}
i=0; to[0]= '0 '; to[1]= '\0 ';
while(decfrom){
to[i++] = TAB[ decfrom%tbase ];
decfrom /= tbase;
}
p=to; q=&to[i-1]; to[i]= '\0 ';
while(p <q){
*p^=*q;
*q^=*p;
*p++^=*q--;
}
if(!*to) *to= '0 ';
return to;
}

int main( void )
{
char s1[100], s2[100];
int b1, b2;
while( scanf( "%s%d%d ", s1, &b1, &b2)!=EOF )
puts(convert(s1, b1, s2, b2));
return 0;
}
[解决办法]
d_to_b(n)
{
int a;
a=n%2;
if(n> 2)
d_to_b(n/2);
else
printf( "%d ",a);
}
就这么简单

热点排行