题目描述:
编写一个函数,取一个小数的第 n (−10≤n≤16) 位:
- 当 n>0 时,从小数点位置开始向右取小数部分第 n 位;
- 当 n<0 时,从小数点位置开始向左取整数部分的第 n 位。输入;
输入:
一行两个数,第一个数是一个小数,第二个数是 n。
5.5772156649015328 10
输出:
小数的第 n 位。
9
代码如下:
#include <stdio.h>
#include <string.h>
int get_one_digit(double num,int n); /* 函数声明 */
int main()
{
double number;
int n;
int digit; /* 第 n 位数字 */
scanf("%lf%d", &number, &n); /* 输入数据 */
digit = get_one_digit(number, n); /* 调用查找第 n 位数字并将数字返回复制给 digit */
printf("%d\n", digit);
return 0;
}
int get_one_digit(double num,int n)
{
int a=(int)num,i,y;
double x;
if(n>0)
{
x=num-a;
for(i=0;i<n-1;i++)
{
x=x-(int)x;
x=x*10;
}
y=(int)x;
return y;
}
if(n<0)
{
int b;
b=(int)num;
for(i=1;i<-n;i++)
{
b=b/10;
}
return b%10;
}
}