题目说明
将输入的二进制数(一个非“0”即“1”的字符串)转化为十进制并输出结果。
实验目的
1、使用字符数组来存放所输入的二进制数,循环处理其中的每个“位”(字符数组的元素),
最终“拼成”一个十进制数并输出。
2、加入检查输入数据的合法性。
代码示例
/*
*/
#include<iostream>
#include <cmath> //包含pow函数
using namespace std;
int main(){
char a[20]; //声明数组
int value =0; //声明value,并赋初值为0
cin>>a; //输入数组
int i=0;
while(a[i]!='\0'){ //检查输入是否合法,且判断输入字符串的长度
if(a[i]!='0'&&a[i]!='1'){
cout<<"输入不正确!"<<endl;
system("pause");
return 0;
}
i++;
}
//cout<<i<<endl; i代表了总共有几个有效字符
int len =i;
while(i>0){ //倒序取数组中的字符,进行处理
//cout<<"i:"<<i<<endl;
int temp = pow(2.0,len-i); //计算位权
//cout<<temp<<endl;
value = value + (a[i-1]-'0')*temp; //a[i]-'0' 将字符转换为数字 注意下标,数组的下标从0开始
//cout<<value<<endl;
i--;
}
cout<<a<<"转化为十进制是"<<value<<endl;
system("pause");
return 0;
}
```cpp
来源:https://blog.csdn.net/weixin_43614465/article/details/102748413