代码填空 2017 省赛
难度:简单
#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 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);