要求:将一个任意进制数(2-16进制)转换为十进制数
#define _CRT_SECURE_NO_WARNINGS //告诉编译器——strupr函数是安全的
#include<iostream>
using namespace std;
int main()
{
char num[32]; //存放n进制数各位字符
int x; //x指的是n进制
int len;
int sum=0; //用于存放转换成的十进制数
int m_num;
cout << "请选择几进制(2-16进制):";
cin >> x;
cout << "请输入" << x << "进制数:";
getchar(); //用于读取回车键或空格键
gets_s(num); //将小写字母转换为大写字母
len= strlen(num);
_strupr(num); //将num中小写字母转换成大写字母
int j = 0;
for (int i = len - 1; i >= 0; i--,j++)
{
if (num[i] - '0' >= x && num[i]<'A' || num[i] - 'A' + 10>x) //判断输入的数是否出错
{
cout << "输入有误" << endl;
exit(0); //退出程序
}
if (num[i] >= '0' && num[i] <= '9') //将0-9的字符转换成数字
m_num = num[i] - '0';
else if (num[i] >= 'A' && num[i] <= 'F') //将A-F的字符转换成数字
m_num = num[i] - 'A'+10;
sum += m_num * (int)pow(x, j); //pow(x,j) 意思x的j次方
}
cout << x << "进制数:" << num << "转化为十进制数为:" << sum << endl;
system("pause");
return 0;
}
运行结果: