第八届蓝桥杯【省赛试题5】取数位

来源:互联网 发布:域名 许扬 编辑:程序博客网 时间:2024/06/14 08:15

题目描述:

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

// 求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。

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

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


题目答案:

f(x/10,k)

题目思路:

题目较为简单,要求出数字x的第k位数是多少(从左往右)。f(x,k)为求x的第k位,我们从递归出口可以看出,当x的长度是k的时候,我们返回x的最后一位,那么递归的范围就是x的长度不等于k,那么,我们就需要减少x的长度,通过x/10可以去除最右边位的数字。因为要其的第k位是从左往右数的,所以当x减少位数的时候,对k是没有任何影响的。

1 0
原创粉丝点击