进制转化(小bug)
2017-06-22 14:13
183 查看
//有任意进制先转化为10进制,再转化为另一进制的代码
//但在检查输入的是否是正确的数时,有一点bug,过几天再解决!
//101101011 2 8 结果为:553
//76450273 8 2 结果为:111110100101000010111011
//aabc89d 16 10 结果为:179030173
//但在检查输入的是否是正确的数时,有一点bug,过几天再解决!
//101101011 2 8 结果为:553
//76450273 8 2 结果为:111110100101000010111011
//aabc89d 16 10 结果为:179030173
#include<stdio.h> #include<string.h> #include<vector> #include<math.h> using namespace std; bool check(char buf[], int D){ //对输入进来的数进行检查,看是否有不满足的 //如2进制,你输入一个:1012110,就是错误的了 int n;//buf[]中每一位的int型数字 for (int i = 0; i < strlen(buf); i++){ if (buf[i] >= 'a'&&buf[i] <= 'z') n = buf[i] - '0' - 39; else if (buf[i] >= 'A'&&buf[i] <= 'Z') n = buf[i] - '0' - 7; else if (buf[i] >= '0'&&buf[i] <= '9') n = buf[i] - '0'; if (n >= D|| n < 0) return false; } return true; } int to_Ten(char buf[], int D){ int n; int num = 0;//10进制下的值 if (check(buf, D)){ for (int i = 0; i < strlen(buf); i++){ if (buf[i] >= 'a'&&buf[i] <= 'z') n = buf[i] - '0' - 39; else if (buf[i] >= 'A'&&buf[i] <= 'Z') n = buf[i] - '0' - 7; else if (buf[i] >= '0'&&buf[i] <= '9') n = buf[i] - '0'; num += n*pow(double(D), double(strlen(buf) - i - 1)); } return num; } else { printf("输入错误,有大于%d的数字\n", D); } } vector<int> to_Decimal(int data_10, int D, vector<int> &v){ v.clear(); if (data_10 == 0) printf("0"); while (data_10 != 0){ v.push_back(data_10%D); data_10 /= D; } return v; } int main(){ char buf[12]; //存放任意进制的数字 int D1; //转化前数的进制 int D2; //转化后数的进制 int data_10;//10进制下的值 int data_other;//D2进制的结果值 vector<int> v; //freopen("D://input.txt", "r", stdin); printf("输入你的当前进制下的数据:"); while (scanf("%s", buf) != EOF){ printf("输入这个数的进制:"); scanf("%d", &D1); printf("输入你要转换的进制:"); scanf("%d", &D2); data_10 = to_Ten(buf, D1); //将任意进制的数转化为10进制 v = to_Decimal(data_10, D2, v);//将10进制的数转化为D2进制下的数 printf("该%d进制下的结果为:", D2); for (int i = v.size() - 1; i >= 0; i--){ printf("%d", v[i]); } printf("\n"); } return 0; }
相关文章推荐
- 各进制之间转化识记
- 进制转化
- 1220 NUMBER BASE CONVERSION【高精度进制转化】
- 进制转化
- 二进制转化为其他进制(模板)
- 【Java学习笔记之四】java进制转化
- python读取dat文件时遇到16进制转化成10进制问题
- Tsinsen 清橙 A1010. 进制转换1 (进制转化)
- 进制转化优化实现
- 将正小数转化为2-9进制小数的实现方法
- 大一下期末考试:进制转化
- 一个自动类型转化导致的bug
- 运用递归函数来转化进制
- C语言 各进制相互转化输出
- 二,四,八,十六转化10进制
- Gym-101490H Multiplying Digits(进制转化--倒着)
- 进制转化
- HDU2097 sky 数 就是进制转化 的问题
- 其他进制转化为十进制
- 2进制转化成10进制