C语言OJ项目参考(2965)趣味取小数

简介: 2965: 趣味取小数Description 听说大家最近学得不错,教授就准备考考大家,先做出来有奖哦~编写一个函数,取一个小数的第n(-10<=n<=16)位,当n大于0时,从小数点位置开始向右取小数部分第n位,当n小于0时,从小数点位置开始向左取整数部分的第n位。#include <stdio.h>#include <st

2965: 趣味取小数

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;
    }
}
目录
相关文章
|
2月前
|
算法 C语言 C++
【C语言实战项目】三子棋游戏
【C语言实战项目】三子棋游戏
32 1
|
2月前
|
程序员 C语言
【C语言实战项目】猜数字游戏
【C语言实战项目】猜数字游戏
28 0
【C语言实战项目】猜数字游戏
|
2月前
|
机器学习/深度学习 编译器 C语言
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
27 0
|
11天前
|
存储 算法 C语言
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
|
2月前
|
程序员 C语言
【C语言实战项目】通讯录(动态增容版)
【C语言实战项目】通讯录(动态增容版)
22 0
|
2月前
|
存储 编译器 C语言
【C语言实战项目】通讯录
【C语言实战项目】通讯录
28 0
|
2月前
|
编译器 定位技术 C语言
【C语言实战项目】扫雷游戏
【C语言实战项目】扫雷游戏
27 0
|
2月前
|
C语言
【C语言】如何只打印小数的有效数字位数且不补0
【C语言】如何只打印小数的有效数字位数且不补0
10 0
【C语言】如何只打印小数的有效数字位数且不补0
|
3月前
|
存储 关系型数据库 MySQL
C语言/C++实战项目雷霆飞机(代码改进)
C语言/C++实战项目雷霆飞机(代码改进)
|
3月前
|
人工智能 C语言
C语言实战项目(AI代码)
C语言实战项目(AI代码)