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;
}
}
編程軟件及視頻資料下載:點擊打開鏈接