第K位数字

#include <stdio.h>

int digit(int n, int k);

int main()

{

    int a, b;

    while (scanf("%d %d", &a, &b) != EOF)

    {

        printf("%d\n", digit(a, b));

    }

    return 0;

}

int digit(int n, int k){

int a=0,b=n,i,s,p;

for(a=0;b>0;a++)

{ b=b/10;}

if(k>a)return 0;

for(i=0;i<k;i++){

  s=n%10;

  n=n/10;

}

return s;

}

//要取出最后一位数用%10

//要筛选出那个范围内的数 123/10=12;12%10=2; 123

//1取出已完成,且为最后一步 2筛选 想办法把需要的数搞到最后一位上去123/10=12,123/100=1

//这里跑第一次取出来的是第二位,所以应该把1取出与2筛选分开,可以使用不同的变量名,注意最后输出的变量名应该是第一步取出时所使用的变量名

//跳出刚刚的思维 核心就是怎么把123 的第1 位取出 把第2位取出,显然需要用到循环结构

//容易想到,可以用%10来取出最后一位,那么问题又来了:如何去把我们想要的数弄到最后一位上去呢

//123/10^1=12,123/10^2=1,123/10^0=123;

//因此思路就通畅了,不过观察上面的式子可以发现,我们要取出第一位(从右数)需要10^0,因此实际做筛选步骤时应该整个k-1出来

//不过C语言中没有  ^  表示乘方运算,需要使用pow函数,但观察头文件并没有使用到<math.h>,因此可能上面的函数不能使用

//不过对于''^n''这一类的东西似乎可以使用循环结构来写

//所以应该想办法把/10^n转化为n多次被10除

//这里就想到需要使用for循环,那么for跑一次,就得除以一次10,这无法让我们完成取出第一个数的操作,123/10=12,不可能再得到3了,所以对于这个我们需要去想办法单独挑出来搞

//即if (k==1)s=n%10;

//其他的再用循环,这里不再赘述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值