C++ 中十六进制数字计数


给定一个具有起始和结束范围的任务,计算给定范围内的十六进制数字或字母的数量。

什么是十六进制字母?

在计算机术语中,十六进制数是指基数为 16 的数字,这意味着二进制数字可以用 16 位表示。它包含从 0 到 15 的整数。其中 10 表示为 A,11 表示为 B,12 表示为 C,13 表示为 D,14 表示为 E,15 表示为 F。

因此,在下面的程序中,我们的任务是找到该范围是否包含十六进制字母。

例如

Input − start = 10, End = 13
Output − 4

说明 - 10 和 13 之间有 4 个十六进制数字,即 10 为 A,11 为 B,12 为 C,13 为 D。

Input − start = 15, End = 16
Output − 1

说明 - 只有一个十六进制字母,即 15 为 F,16 分别表示为 10。

下面程序中使用的的方法如下

  • 输入从变量开始的范围,假设为 start 和 end。

  • 声明一个变量 count 来存储计数并将其初始化为 0

  • 启动一个 for 循环,从 i 开始,直到 i 小于或等于 end

  • 在循环内,检查 i 是否大于或等于 10 且 i 也大于或等于 15,然后将 count 增加 1

  • 否则,检查 i 是否大于 15

  • 然后,用 i 的值设置一个临时变量 temp,并在 k 不等于 0 时遍历

  • 并检查 k%16 是否大于或等于 10

  • 将 count 增加 1

  • 并且,将 temp 设置为 temp/16

  • 返回 count 的值

  • 打印结果。

示例

 实时演示

#include <iostream>
using namespace std;
// Function to count the
// total number hexadecimal alphabet
int counthexa(int start, int end){
   int result = 0;
   for (int i = start; i <= end; i++){
      // All hexadecimal alphabets
      // from 10 to 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;
}
// Main Function
int main(){
   int start = 10, end = 60;
   cout << "count is: "<<counthexa(start, end);
   return 0;
}

输出

如果我们运行上述代码,它将生成以下输出:

count is: 21

更新于:2020-05-15

297 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告