Problem E: C語言習題5.14--趣味取小數

Problem E: C語言習題5.14--趣味取小數

Time Limit: 1 Sec  Memory Limit: 128 MB

 

Description

聽說大家最近學得不錯,教授就準備考考大家,先做出來有獎哦~

編寫一個函數,取一個小數的第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函數並提交該函數即可

Input

一個小數,取小數的第n位

Output

小數的第n位

Sample Input

5.5772156649015328  10

Sample Output

9

HINT

參考答案:

#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) /*函數聲明*/
{
	long int a;
	double b;
	a=(int)num;
	if(n>0)
	{
		b=num-a;
		while(n>0)
		{
			b=b-(int)b;
			b*=10;
			n--;
		}
		return (int)b;
	}
	else
	{
		n=-n;
		while(n>1)
		{
			a/=10;
			n--;
		}
		return a%10;
	}
}

編程軟件及視頻資料下載:點擊打開鏈接

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章