0
点赞
收藏
分享

微信扫一扫

C++ 二进制转十进制

题目描述

有好几万个二进制数,最长不超过64位,请将其都转换成十进制数

输入描述

输入有多行!!每行包含一个长度不超过64位二进制数,最后一行输入-1表示输入结束

输出描述

对于每行二进制数,输出转换后的十进制数,每个数占一行

输入样例

100101101010100
101010000100101111
-1

输出样例

19284
172335

#include <iostream>
#include <cstring>
#include <cmath>

using&nbsp;namespace&nbsp;std;

double&nbsp;power(double&nbsp;x,&nbsp;int&nbsp;n);&nbsp;// 原函数声明

int&nbsp;main&nbsp;()&nbsp;&nbsp;{
__int64&nbsp;value;
char&nbsp;c[64];

while&nbsp;(cin&nbsp;&gt;&gt;&nbsp;c){
if(c[0]&nbsp;==&nbsp;&#39;-&#39;){
break;
}
int&nbsp;len&nbsp;=&nbsp;strlen(c);&nbsp;&nbsp;// 获取输入的二进制的长度
value&nbsp;=&nbsp;0;
for&nbsp;(int&nbsp;i&nbsp;=&nbsp;len&nbsp;-&nbsp;1;&nbsp;i&nbsp;&gt;=&nbsp;0;&nbsp;i--){
if&nbsp;(c[i]&nbsp;==&nbsp;&#39;1&#39;){
value&nbsp;+=&nbsp;static_cast&lt;__int64&gt;(power(2,&nbsp;len&nbsp;-&nbsp;i&nbsp;-&nbsp;1));&nbsp;// static_cast<__int64>(参数)将double型数据转换成__int64型数据
}
}
cout&nbsp;&nbsp;&lt;&lt;&nbsp;value&nbsp;&lt;&lt;&nbsp;endl;
}&nbsp;
}

double&nbsp;power&nbsp;(double&nbsp;x,&nbsp;int&nbsp;n){&nbsp;&nbsp;// 返回给定数字的乘幂,返回类型为double型
double&nbsp;val&nbsp;=&nbsp;1.0;

while&nbsp;(n--){
val&nbsp;*=&nbsp;x;
}&nbsp;
return&nbsp;val;
}

strlen函数的实现

#include <iostream>

using&nbsp;namespace&nbsp;std;

size_t&nbsp;strlen(const&nbsp;char&nbsp;*s){
size_t&nbsp;len&nbsp;=&nbsp;0;

while(*s++){
len++;
}

return&nbsp;len;
}&nbsp;

int&nbsp;main(void){
char&nbsp;*p&nbsp;=&nbsp;&quot;vvcat&quot;;
cout&nbsp;&nbsp;&lt;&lt;&nbsp;&quot;字符串的长度为:&quot;&nbsp;&lt;&lt;&nbsp;strlen(p)&nbsp;&lt;&lt;&nbsp;endl;
}


举报

相关推荐

0 条评论