oj题目回顾(2965)C语言习题5.14--趣味取小数

时间:2020-11-29 00:15:28

问题及代码

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
/*烟台大学计算机学院 2016作者: 马春澎完成日期:2016年12月22日 */#include <stdio.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 i;    long long int t;    if(n>0)    {        for(i=0; i<n; i++)            num=10*num;        t=(long long int)num%10;    }    else    {        n=-n;        for(i=0; i<n-1; i++)            num=num/10;        t=(long long int)num%10;    }    return t;}


运算结果

oj题目回顾(2965)C语言习题5.14--趣味取小数

知识点总结

循环的综合应用

学习心得

一定要注意t的类型为long long int 型,刚开始类型用错了,不知道错在哪里,单步执行才找出错来,单步执行也是很好用的,哈哈。