标签:ring 二进制 bcd name 进制 字符串 output bsp 试题
一、M进制转换成N进制(摘自博客:进制转换)
1. 将M进制数x转化为十进制数y
十进制数的形式为:d1d2d3d4d5d6...dn = d1 × 10n-1 + d2 × 10n-2 + d3 × 10n-3 + ... + dn-1 × 101 + dn
M进制数的形式为:a1a2a3a4a5a6...an = a1 × mn-1 + a2 × mn-2 + a3 × mn-3 + ... + an-1 × m1 + an
代码:
参考例题:把26进制转为10进制
2. 将十进制数y转化为N进制数x
该过程较为简单,常采用“除基取余法”,基即为N,其对y不断地取余。
示例:十进制数11转化为二进制数。
对二不断取余:
第一次: 11%2,余数为1,商为5
第二次: 5%2, 余数为1,商为2
第三次: 2%2, 余数为0,商为1
第四次: 1%2, 余数为1,商为0
代码:
二、华为笔试题
题目一:将十进制数字转化为26进制数,其中26进制数使用A~Z来表示。
#include <cstdlib> #include <iostream> #include <string> #include <sstream> #include <math.h> using namespace std; int main() { string az("zabcdefghijklmnopqrstuvwxy"); string dest,i; int number, number2; getline(cin, i); if(isdigit(i[0])){ stringstream ss; ss << i; ss >> number; do { dest = az[number % 26] + dest; number /= 26; } while (number != 0); cout << dest << endl; } else{ if (i.size() > 6) return 0; int output=0; for (int num1 = (i.size() - 1),num2=0; num1 >= 0; --num1,++num2){ int j = (i[num1] - ‘a‘)+1; output += j*pow(26, num2); } cout << output << endl; } system("PAUSE"); return 0; }
题目二:输入两个字符串,其中每个字符(‘a‘~‘z‘)都是二十六进制数,试求两个字符串相加的结果。
标签:ring 二进制 bcd name 进制 字符串 output bsp 试题
原文地址:https://www.cnblogs.com/xzxl/p/9602033.html