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
参考解答
#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 z; //用于对整数部分操作 double x; //用于对小数部分操作 z=num; //取得整数部分 if(n>0) { x=num-z; //只剩下了纯小数部分 while ( n > 0 ) { x = x - (int)x; x *= 10; n--; } return (int)x; } else { n=-n; while(n>1) { z/=10; n--; } return z%10; } } 相关资源:c语言趣味题-暴力破解法