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
答案:
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
int
digit(
int
n,
int
k)
{
int
i, m, t, a;
m = n;
while
(m != 0)
{
m /= 10;
i++;
}//先求得此数的长度为i
if
(i < k)
//i为n的位数,如果位数小于k,则返回0
return
0;
else
{
for
(t = 1; t <= k; t++)
{
a = n % 10;//a为n在t的位数值
n /= 10;
}
return
a;
}
}