编写函数digit(int n, int k),返回正整数n中的第k位数字(从右边算起)··········

编写函数digit(int n, int k),返回正整数n中的第k位数字(从右边算起)。例如,digit(256,1)返回6,digit(256,3)返回2。如果k大于n的数字位数,则返回-1,如digit(256,4)

#include<stdio.h>
int digit(int n,int k){
    int i,a,count=0,copy_n;
    copy_n=n;
    while(copy_n!=0){
        copy_n/=10;
        count++;
    }
    if(k>count){
        return -1;
    }
    else{
        for(i=1;i<=k;i++){
            a=n%10;
            n/=10;
        }
        return a;
    }
}//以上为目标函数
int main(){
    int n,k;
    scanf("%d %d",&n,&k);
    if(digit(n,k)==-1)
        printf("k大于数字位数!");
    else
        printf("正整数%d中的第%d位数字为:%d",n,k,digit(n,k));
    return 0;
}

如有戳无,欢迎指正

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以定义一个函数,输入参为整n和正整数k,返回为n从右边开始的第k个数字。 具体实现可以将整n转换成字符串,然后取字符串的倒第k个字符,最后将字符转换成整返回即可。如果k超出了n的,则返回。 示例代码如下: ```python def get_kth_digit(n, k): n_str = str(n) if k > len(n_str): return return int(n_str[-k]) ``` 例如,对于整n=12345和k=2,调用函数get_kth_digit(n, k)将返回4。 ### 回答2: 题目要求我们定义一个函数,输入一个n和一个k,返回n从右边开始的第k个数字。 我们可以先将n转换为字符串类型,然后通过字符串的下标操作,取出从第k个字符,最后再将该字符转换为整类型即可。下面是一个示例代码: ``` def digit(n, k): str_n = str(n) return int(str_n[-k]) # 测试 print(digit(987654321, 3)) # 输出7 ``` 首先,我们定义了一个名为digit函数,它有两个参,分别是整n和整k。 在函数内部,我们使用内置函数str将n转换为字符串类型,并将结果赋给变量str_n。 接下来,我们使用字符串的下标操作[-k],从取出第k个字符。 最后,我们使用内置函数int将该字符转换为整类型,并返回它。 在代码最后,我们对函数进行了测试,输出结果为7,符合题目要求。 ### 回答3: 这个问题可以用字符串的方式来解决。首先将整n转换成字符串,然后通过字符串的下标操作来获取从右边的第k个数字。但是需要注意的是,在获取第k个数字之前需要进行一些边界检查,以确保输入的参合法。具体的实现过程如下: 1. 定义一个函数,输入为整n和正整数k,输出为从右边开始的第k个数字。 2. 将整n转换成字符串s,可以使用内置函数str(n)来实现。 3. 检查k的有效性,如果k小于等于0或k大于字符串s的长度,则返回-1表示无效参。 4. 计算从右边开始的第k个置在字符串s的下标,在Python,字符串的下标是从0开始的,因此,一般来说,从右边的第一个数字的下标为-1,从右边的第二个数字的下标为-2,以此类推。 5. 通过字符串的下标操作,获取从右边开始的第k个数字。在Python,可以使用s[index]来获取字符串s下标为index的字符,其index可以是负,表示从右边开始置。需要注意的是,如果k超出了字符串s的长度,那么就不能通过下标操作来获取第k个数字,因此需要在步骤3进行判定。 6. 返回右边开始的第k个数字,如果k无效,则返回-1。 最终代码如下: ```python def right_kth_digit(n, k): s = str(n) if k <= 0 or k > len(s): return -1 index = -k return int(s[index]) ``` 需要注意的是,以上代码只适用于输入为整的情况,如果输入为小或其他非整类型,则需要进行类型转换或判定来避免错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值