IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    蓝桥杯 2017年省赛C++B组题5 取数位

    Debug客栈发表于 2019-03-19 21:57:56
    love 0
    Featured image of post 蓝桥杯 2017年省赛C++B组题5 取数位

    求1个整数的第k位数字有很多种方法。

    以下的方法就是一种。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    // 求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));
     return 0;
    }
    

    对于题目中的测试数据,应该打印5。

    请仔细分析源码,并补充划线部分所缺少的代码。

    注意:只提交缺失的代码,不要填写任何已有内容或说明性的文字。

    解题算法

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    #include "iostream"
    #include "algorithm"
    
    // 求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));
     return 0;
    }
    

    解题答案

    f(x/10, k)



沪ICP备19023445号-2号
友情链接