数学函数<math.h>

数学函数,拿你该怎么办

先看一下能在编程中用到数学函数的情况

int abs(int i) 返回整型参数i的绝对值

double cabs(struct complex znum) 返回复数znum的绝对值

double fabs(double x) 返回双精度参数x的绝对值

long labs(long n) 返回长整型参数n的绝对值

double exp(double x) 返回指数函数e^x的值

double frexp(double value,int *eptr) 返回value=x*2^n中x的值(0.5<=x<1),n存贮在eptr中

double ldexp(double value,int exp); 返回value*2^exp的值

double log(double X) 返回logeX的值,以e为底的对数

double log10(double x) 返回log10x的值,以10为底的对数

double pow(double x,double y) 返回x^y的值

long double pow(long double,int)

float pow(float,int)

double pow(double,int)

double pow10(int p) 返回10^p的值

double sqrt(double x) 返回a,且a满足a*a=x,a>=0

double acos(double x) 返回x的反余弦cos^-1(x)值,x为弧度

double asin(double x) 返回x的反正弦sin^-1(x)值,x为弧度

double atan(double x) 返回x的反正切tan^-1(x)值,x为弧度

double atan2(double y,double x) 返回y/x的反正切tan^-1(x)值,y的x为弧度

double cos(double x) 返回x的余弦cos(x)值,x为弧度

double sin(double x) 返回x的正弦sin(x)值,x为弧度

double tan(double x) 返回x的正切tan(x)值,x为弧度

double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度

double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度

double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度

double hypot(double x,double y) 返回直角三角形斜边的长度(z),x和y为直角边的长度,z^2=x^2+y^2

double ceil(double x) 返回不小于x的最小整数

double floor(double x) 返回不大于x的最大整数

void srand(unsigned seed) 初始化随机数发生器

int rand() 产生一个随机数并返回这个数

double poly(double x,int n,double c[])从参数产生一个多项式

double modf(double value,double *iptr)将双精度数value分解成整数部分和小数部分,iptr为整数部分,返回小数部分

double fmod(double x,double y) 返回x/y的余数

double atof(char *nptr) 将字符串nptr转换成浮点数并返回这个浮点数

double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数

double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数

char *ecvt(double value,int ndigit,int *decpt,int *sign)将浮点数value转换成字符串并返回该字符串

char *fcvt(double value,int ndigit,int *decpt,int *sign)将浮点数value转换成字符串并返回该字符串

char *gcvt(double value,int ndigit,char *buf)将数value转换成字符串并存于buf中,并返回buf的指针

char *ultoa(unsigned long value,char *string,int radix)将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数

char *ltoa(long value,char *string,int radix)将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数

char *itoa(int value,char *string,int radix)将整数value转换成字符串存入string,radix为转换时所用基数

double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0

int atoi(char *nptr) 将字符串nptr转换成整型数, 并返回这个数,错误返回0

long atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0

double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,

long strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,并返回这个数,

int matherr(struct exception *e)用户修改数学错误返回信息函数

double _matherr(_mexcep why,char *fun,double *arg1p,

double *arg2p,double retval)用户修改数学错误返回信息函数

unsigned int _clear87() 清除浮点状态字并返回原来的浮点状态

void _fpreset()重新初使化浮点数学程序包

unsigned int _status87() 返回浮点状态字

下面举个例子

Root of the Problem

Description

Given positive integers B and N, find an integer A such that AN is as close as possible to B. (The result A is an approximation to the Nth root of B.) Note that AN may be less than, equal to, or greater than B.

Input: The input consists of one or more pairs of values for B and N. Each pair appears on a single line, delimited by a single space. A line specifying the value zero for both B and N marks the end of the input. The value of B will be in the range 1 to 1,000,000 (inclusive), and the value of N will be in the range 1 to 9 (inclusive).

Output: For each pair B and N in the input, output A as defined above on a line by itself.

Example Input: Example Output:

4 3

5 3

27 3

750 5

1000 5

2000 5

3000 5

1000000 5

0 0 1

2

3

4

4

4

5

16

先看一下我的代码

#include<math.h>
int main()
{
        int b,n;
        while(scanf("%d %d",&b,&n),b,n)
        {
                int i, temp1, temp2;
                for(i=1;i<=b;i++)
                {
                        if(int(pow((float)i,(int)n))==b)<span style="color:#33CC00;">
                        {
                                printf("%d\n",i);
                                break;
                        }
                        else if(pow((float)i,(int)n)<b&&pow((float)i+1,(int)n)>b)
                        {
                            temp1=pow((float)i,(int)n);
                            temp2=pow((float)i+1,(int)n);
                            if(temp1-b>0&&temp2-b>0)
                            {
                                if(temp1-b<temp2-b)
                                {
                                    printf("%d\n", i);
                                    break;
                                }
                                else
                                {
                                    printf("%d\n", i+1);
                                    break;
                                }
                            }
                            else if(b-temp1>0&&b-temp2>0)
                            {
                                if(b-temp1<b-temp2)
                                {
                                    printf("%d\n", i);
                                    break;
                                }
                                else
                                {
                                    printf("%d\n", i+1);
                                    break;
                                }
                            }
                            else if(b-temp1>0&&temp2-b>0)
                            {
                                if(b-temp1<temp2-b)
                                {
                                    printf("%d\n", i);
                                    break;
                                }
                                else
                                {
                                    printf("%d\n", i+1);
                                    break;
                                }
                            }
                            else if(temp1-b>0&&b-temp2>0)
                            {
                                if(temp1-b<b-temp2)
                                {
                                    printf("%d\n", i);
                                    break;
                                }
                                else
                                {
                                    printf("%d\n", i+1);
                                    break;
                                }
                            }
                        }
                }
        }
        return 0;
}

这个题要会灵活运用数学函数,在此题中就出现了一个pow()———幂函数,其实此题还可以进一步简化,要用到abs()——绝对值函数,但是能力有限,用的不对,所以,才这么麻烦。。。。。。,哎,还需要努力呀!

时间: 2024-10-12 22:05:51

数学函数<math.h>的相关文章

Java语言程序设计(基础篇) 第四章 数学函数、字符和字符串

第四章 数学函数.字符和字符串 4.2 常用数学函数 方法分三类:三角函数方法(trigonometric method).指数函数方法(exponent method)和服务方法(service method) 4.4 String类型 String类型不是基本类型,而是引用类型(reference type).

Java--分支语句、循环、数组、控制台输入语句、常用数学函数

**-----本章节-----** 1.分支语句 2.循环 3.数组 4.控制台输入语句 5.部分常用的数学函数 ============================================================== 一分支语句 1.概念 (1)分支语句又称条件语句条件语句使部分程序可根据某些表达式的值被有选择地执行. (2)Java编程语言支持双路 if和多路 switch 分支语句. ===========================================

GPU编程中的常用数学函数

在GPU编程中,函数一般分为以下几种类型:数学函数.几何函数.纹理映射函数.偏导数函数.调试函数等.熟练利用好GPU自带函数,可以在一定程度上提高并行编程速度与效率. 关于数学数学函数(Mathematical Functions) 数学函数用于执行数学上常用计算,比如:三角函数.幂函数.向量和矩阵函数,这些函数一般都被重载,用来支持标量数据和不同长度的向量作为输入参数.列表如下: 标准函数库中的数学函数 未完待续......

?数学函数——在函数式编程背后的动力

函数式思维的动力来自数学.数学函数有很多特色--函数式语言试图模拟真实世界. 所以一开始,我们以一个加1函数开始: Add1(x) = x+1 这意思是什么?好吧,看起来十分直白.它意味着有一个操作以一个数字开始,然后给它加1. 我们引入一些术语: 可以被函数作为输入的值的集合叫做domain.这样,它可能是实数集合,为了简单,我们仅限于整数. 可以被函数作为输出的值的集合叫做range(更科学的应该是叫作codomain的image).还是仅限于整数. 函数被称作映射domain到range.

140926●日期时间操作、数学函数操作、表单验证

日期时间操作:var d=new Date();var d=new Date(1999,3,5); //时间是:1999-4-5 d.getFullYear();年d.getMonth();月(正常-1)d.getDate();天d.getDay();星期几d.getHours();d.getMinutes();d.getSeconds(); 数学函数操作:Math.ceil();Math.floor();Math.round();Math.random();Math.sqrt(); 表单验证:

数学函数:随机数,幂,平方根

--数学函数--RAND 生成0~1之间的随机数,包含0但是不包含1select RAND()--ABS:绝对值:负值--正值select ABS(-100)--CEILING();获取比当前参数值大的最小整数select CEILING(0.00000001)--FLOOR():获取比当前数小的最大整数select FLOOR(0.999999)--POWER() 幂select POWER(3,5)--ROUND(源数据,小数位数) 四舍五入.小数位的精度推进只关注指定的位数后一位selec

ORACLE PL/SQL 字符串函数、数学函数、日期函数

ORACLE PL/SQL 字符串函数.数学函数.日期函数 --[字符串函数] --字符串截取substr(字段名,起始点,个数) select Name,substr(Name,2,4),substr(Name,0,3),substr(Name,-2,3),substr(Name,-2,1) from t1; --字符串从前面取三个(0开始) select Name,substr(Name,0,3) from t1; --字符串从后面取三个 select Name,substr(Name,-3

数据库 基础学习5— 数学函数

1.--数学函数 select degree ,sqrt(degree) from score --开平方,平方根 select price, ceiling(Price) from car -- 取大于当前小数的最小整数 select price, floor(Price) from car -- 取小于当前小数的最大整数 select price, round(Price,-1) from car -- 四舍五入,保留几位 select ABS(-2) -- 取绝对值 select RAND

L脚本语言编写的简单数学函数库

对于一种编程语言数学计算的功能当然是必不可少的,通过L脚本语言的基本数学运算功能实现数学计算库也很简单 在L脚本语言中,使用库之前需要进行导入,这和C语言的include引用Java的导入jar包是类似的 下面的例子是一个L脚本语言的库文件 #scplib #数学函数库 定义:函数,求圆的周长,半径 开始:函数,求圆的周长 计算:算式,ret,2*3.14*半径 显示:ret 结束:函数,求圆的周长 定义:函数,求圆的面积,半径 开始:函数,求圆的面积 计算:算式,ret,3.14*(半径*半径

Sql Server函数全解&lt;二&gt;数学函数

  数学函数主要用来处理数值数据,主要的数学函数有:绝对值函数,三角函数(包括正弦函数,余弦函数,正切函数,余切函数).对数函数,随机函数等.在错误产生时,数学函数将返回空值null.本次介绍各种数学函数的功能和用法. 1.绝对值函数ABS(x)和返回圆周率的函数PI()  ABS(x)返回x的绝对值,PI()返回圆周率的值  eg: select ABS(2),ABS(-3.3),ABS(-33),PI(); 正数的绝对值是其本身,2的绝对值为2:负数的绝对值为其相反数,-3.3的绝对值为3.