蓝桥杯真题取位数

代码填空 2017 省赛

难度:简单

蓝桥杯真题取位数_第1张图片

#include 
// 求x用10进制表示时的数位长度 
int len(int x){
    if(x<10) return 1;
    return len(x/10)+1;
}
    
// 取x的第k位数字
int f(int x, int k){
    if(len(x)-k==0) return x%10;
    return f(x/10,k);  //填空
}
    
int main()
{
    int x = 23574;
    printf("%d\n", f(x,3));
    printf("%d\n", f(893275,2));
}

思路

        len为长度,例输入23574

        首先进入f函数,求得第k位数字,此时k=3

        看函数内,if判断条件为长度等于k时,返回x%10

        若不是则返回(?)

        不难猜测出,输入23574,需要变成235

        然后才能通过235%=5 输出此时的位数

        所以需要23574        →2357→235

        所以可以看出return f(x/10,)

        但f函数有两个量,所以带个k

        即 return f(x/10,k); 

你可能感兴趣的:(蓝桥云课刷题,算法,c语言,经验分享)