编写函数int digit(int n,int k),函数返回n中从右边开始的第k位数字的值,如:digit(231456,3)=4;digit(1456,5=0
时间: 2024-05-26 07:11:34 浏览: 136
好的,我知道了。您的第一个问题是如下:编写函数int digit(int n,int k),函数返回n中从右边开始的第k位数字的值,如:digit(231456,3)=4;digit(1456,5=0。对吗?那么我的回答是:
int digit(int n, int k) {
if(k <= 0) {
return -1;
}
int count = 0;
while(n > 0) {
count++;
if(count == k) {
return n%10;
}
n /= 10;
}
return 0;
}
这个函数的作用是返回一个整数n中从右边开始的第k位数字的值。如果k<=0,则返回-1。如果n的位数少于k位,则返回0。
相关问题
编写函数 int digit(long n, int k) ,作用是返回 n 中从右边开始的第 k 位数字的值。
编写一个名为 `digit` 的函数,它接收两个整数参数,`long n` 表示一个长整型数值,`int k` 表示需要提取的位数索引(从0开始计数)。这个函数的主要任务是通过数学操作找到并返回 `n` 的最右侧第 `k` 位数字。这里是一个简单的步骤说明:
1. 如果 `k` 小于0或者 `n` 为0,直接返回0,因为不可能有负位或者空数的位数。
2. 使用取模运算 `%` 来获取 `n` 右侧的第一位数字。比如 `n % 10` 将得到 `n` 的个位。
3. 如果 `k` 大于0,那么 `n` 应该除以10的幂次方,即 `Math.pow(10, k - 1)`,然后再次取模。例如 `n / (10 ** (k - 1)) % 10` 将得到 `n` 的第 `k` 位数字。
以下是一个简单的Java实现版本:
```java
public static int digit(long n, int k) {
if (k < 0 || n == 0) {
return 0;
}
// 对于非首位数字
if (k > 0) {
n = n / Math.pow(10, k);
}
// 返回最后一位数字
return (int) n % 10;
}
```
编写一个函数 int digit( int n , int k ),返回 n 的从右向左的第 k 位的数字。
以下是C语言实现的函数int digit(int n, int k):
```c
int digit(int n, int k){
int i, a, count = 0, copy_n;
copy_n = n;
while(copy_n ! 0){
copy_n /= 10;
++;
}
if(k > count){
return -1;
}
else{
for(i =1; i <= k; i++){
a = n % 10;
n /= 10;
}
return a;
}
}
```
该函数的实现思路是先计算n的位数,如果k大于n的位数,则返回-1,否则从右向左遍历n的每一位,找到第k位的数字并返回。例如,digit(256,1)返回6,digit(256,3)返回2。
阅读全文