内存:128  时间:1

题目描述

听说大家最近学得不错,教授就准备考考大家,先做出来有奖哦~

编写一个函数,取一个小数的第n(-10<=n<=16)位,当n大于0时,从小数点位置开始向右取小数部分第n位,当n小于0时,从小数点位置开始向左取整数部分的第n位。

#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;
}

主程序已给出,请编写get_one_digit函数并提交该函数即可

输入

一个小数,取小数的第n

输出

小数的第n

样例输入

5.5772156649015328 10

样例输出

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)
{
	double x;
	if(n>0)
	{
		x=num;
		while(n>0)
		{
			x=x-(long)x;
			x=x*10;
			n--;
		}
		return (int)x;
	}
	else
	{
		int i,x;
		long y;
		y=(long)num;
		n=-n;
		for(i=1;i<=n;i++)
		{
			x=y%10;
			y=y/10;
		}
		return x;
	}
}

代码来源于互联网,仅供参考!