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
广告