2017年第八届蓝桥杯B组-第五题:取位数

本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。

求1个整数的第k位数字有很多种方法。 以下的方法就是一种。

请仔细分析源码,填写划线部分缺少的内容。

源代码

C

#include <stdio.h>
// 求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 _____________________;  //填空
}
    
int main()
{
    int x = 23574;
    printf("%d\n", f(x,3));
    printf("%d\n", f(893275,2));
}

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M
    #include <stdio.h>
     
    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;      //例:f(23574,3) 
        return f(x/10,k);                 //if(len(x)-k==0)满足,求出来的是x的最低位 
    }                                     //因为23574的第三位并不是最低位,需要/10,利用递归 
        
    int main()
    {
        int x = 23574;
        printf("%d\n", f(x,3));
        printf("%d\n", f(893275,2));
    }

上一篇:Objective-C Block语法递归函数实现


下一篇:农产品电子商务行业研究及十四五规划分析报告