Problem Description 编写函数digit(n, k),使得函数返回正整数 n 中的第 k 位数字(从右边算起)。如果 k 大于 n 所含有的数字个数,函数返回 0 。 测试程序为: #include <stdio.h> int digit(int n, int k); int main(){ int a, b; while (scanf("%d %d", &a, &b) != EOF) { printf("%d\n", digit(a, b)); } return 0;} /* 你的代码将被嵌在这里 */ Input Description 多组测试数据,每组一行,为两个正整数 n (n<=10^9) 和 k(1<=k<=10),以空格分隔。 Output Description 每组测试数据输出一行。 Sample Input 829 1 829 2 829 3 Sample Output 9 2 8
时间: 2024-03-14 21:45:52 浏览: 135
输入一个正整数n,求输出为分数形式
5星 · 资源好评率100%
以下是使用 C 语言编写的解法:
```c
#include <stdio.h>
int digit(int n, int k) {
int i;
for (i = 1; i < k; i++) {
if (n == 0) { // n 已经没有数字了
return 0;
}
n /= 10;
}
return n % 10;
}
int main() {
int a, b;
while (scanf("%d %d", &a, &b) != EOF) {
printf("%d\n", digit(a, b));
}
return 0;
}
```
解释如下:
首先,我们需要将正整数 n 的第 k 位数字(从右边算起)找出来。我们可以先从右向左遍历 n 中的每个数字,并且计数器 i 初始值为 1。当 i 等于 k 时,我们就找到了第 k 位数字,返回它即可。
具体实现中,我们使用了一个 for 循环,每次将 n 除以 10,这样就可以快速地找到 n 中的每个数字。同时,我们需要注意处理 n 已经没有数字了的情况,这时候需要返回 0。
最后,我们在主函数中不断读入测试数据,并且调用 digit 函数进行计算,输出结果即可。
阅读全文