用C++设计函数digit(num,k),返回整数num从右边开始的第k位数字的值,如不存在,返回-1
时间: 2024-11-25 07:17:51 浏览: 8
C++算法:第 N 位数字原理、源码、测试用例
在 C++ 中,你可以通过取模运算和除法来设计一个名为 `digit` 的函数,用于获取整数 `num` 从右侧开始的第 `k` 位数字。如果 `k` 超出了整数的位数,函数将返回 -1。以下是函数的基本实现:
```cpp
int digit(int num, int k) {
// 检查 k 是否合法,即0 <= k < 数字总位数
if (k < 0 || k >= static_cast<int>(sizeof(int) * CHAR_BIT)) {
return -1; // 如果k超出范围,返回-1表示无效位置
}
// 对于无符号数,直接对2取余得到第k位
if (num >= 0) {
return num % pow(10, k);
} else { // 对于有符号数,需要先转换成无符号,然后处理负号
unsigned unsigned_num = static_cast<unsigned>(num);
return unsigned_num % pow(10, k); // 获取无符号数的第k位,最后考虑正负号
}
}
```
在这个函数中,我们首先检查 `k` 是否有效,如果是,则计算 `num` 右侧的第 `k` 位。对于有符号数,我们先将其转换为无符号数,然后再进行处理。
阅读全文