给定一个具有开始和结束的范围,任务是计算给定范围内存在的十六进制数字或字母的计数。
用计算机术语来说,十六进制数是那些以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