检查一个数字是否在一个给定的进制中(用 C++)


假设我们有一个数字字符串,我们要查找该数字是否在一个给定的进制 B 中?如果字符串是“101110”, b = 2,则程序将返回 true。如果字符串是“A8F”,进制是 16,那么也是 true。

该方法非常简单。如果所有字符都在给定进制的符号范围内,则返回 true,否则返回 false。

示例

 实时演示

#include <iostream>
using namespace std;
bool inGivenBase(string s, int base) {
   if (base > 16) //program can handle upto base 1
      return false;
      else if (base <= 10) { //for 0 to 9
         for (int i = 0; i < s.length(); i++)
            if (!(s[i] >= '0' && s[i] < ('0' + base)))
               return false;
      } else {
         for (int i = 0; i < s.length(); i++)
            if (! ((s[i] >= '0' && s[i] < ('0' + base)) || (s[i] >= 'A' && s[i] < ('A' + base - 10))))
            return false;
      }
   return true;
}
int main() {
   string str = "A87F";
   int base = 16;
   if(inGivenBase(str, base)){
      cout << str << " is in base " << base;
   } else {
      cout << str << " is not in base " << base;
   }
}

输出

A87F is in base 16

更新时间:22-Oct-2019

175 次浏览

开启你的职业生涯

完成课程并获得认证

开始学习
广告