您的位置:首页 > 编程语言 > C语言/C++

c语言第八届蓝桥杯(第五题)

2018-03-29 16:41 232 查看
标题:取数位

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

#include<bits/stdc++.h>
//数据应该为5
// 求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,k)然后什么都没输出,,,然后直接又试了x/10  直接出结果  
当x的长度是k的时候,返回x的最后一位,
所以递归的范围就是x的长度不等于k  就需要减少x的长度,通过x/10可以去除最右边位的数字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: