给定一个具有开始和结束的范围,任务是计算给定范围内存在的十六进制数字或字母的计数。
用计算机术语来说,十六进制数是那些以16为底的数字,这意味着二进制数可以用16位表示。它由从0到15的整数组成。其中10表示为A,11表示为B,12表示为C,13表示为D,14表示为E,15表示为F.
因此,在下面的程序中,我们的任务是查找范围是否包含十六进制字母。
Input − start = 10, End = 13Output − 4
说明-在10和13之间有4个十六进制数,即10是A,11是B,12是C,13是D。
Input − start = 15, End = 16Output − 1
说明-只有一个十六进制字母,即F表示15,而16表示成10。
输入从变量开始的范围,例如开始和结束。
声明一个可变计数以存储计数并将其初始化为0
以i开始循环,直到i小于或等于end
在循环内,检查i是否大于或等于10并且i也大于或等于15,然后将计数增加1
否则,请检查我是否大于15
然后,将临时变量temp的值设置为i并遍历,而k不等于0
并检查k%16是否大于或等于10
计数增加1
并通过temp / 16设置温度
返回计数值
打印结果。
#include <iostream>
using namespace std;
//计数功能
//十六进制总数
int counthexa(int start, int end){
   int result = 0;
   for (int i = start; i <= end; i++){
      //所有十六进制字母
      //从10到15-
      if (i >= 10 && i <= 15){
         result++;
      }
      // If i > 15 then perform mod by 16 repeatedly
      // till the number is > 0
      // If number % 16 > 10 then increase count
      else if (i > 15){
         int k = i;
         while (k != 0){
            if (k % 16 >= 10){
               result++;
            }
            k = k / 16;
         }
      }
   }
   return result;
}
//主要功能
int main(){
   int start = 10, end = 60;
   cout << "count is: "<<counthexa(start, end);
   return 0;
}输出结果
如果我们运行上面的代码,它将生成以下输出-
count is: 21