例245:平方根计算函数sqrt()
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
double value;
// sqrt平方根计算
for (value = 0.0; value < 10.0; value += 0.1)
printf("Value %f sqrt %f\n", value, sqrt(value));
return 0;
}
例246:C语言处理数学函数异常
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
printf("Sqrt of -1 is %f\n", sqrt(-1.0));
return 0;
}
// 根据异常代码输出对应提示
// Turbo C/C++ 和 Borland C++兼容
int matherr(struct exception *error)
{
switch (error->type)
{
case DOMAIN:
printf("Domain error\n");
break;
case PLOSS:
printf("Partial precision loss error\n");
break;
case OVERFLOW:
printf("Overflow error\n");
break;
case SING:
printf("Error in singularity\n");
break;
case TLOSS:
printf("Total precision loss error\n");
break;
case UNDERFLOW:
printf("Underflow error\n");
break;
};
printf("Error occurred in %s values %f\n", error->name, error->arg1);
error->retval = 1;
return(1);
}
例247:C语言的随机函数
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int i;
printf("Values from rand\n");
for (i = 0; i < 100; i++)
printf("%d ", rand());
printf("Values from random(100))\n");
for (i = 0; i < 100; i++)
// random函数c标准库现在已不支持
printf("%d ", random(100));
return 0;
}
例248:使用随机函数进行计算
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int i;
printf("Values in the range 0.0 through 1.0\n");
for (i = 0; i < 5; i++)
printf("%f\n", rand() / 32767.0);
/*
printf("Values in the range -5 to 5\n");
for (i = 0; i < 5; i++)
printf("%d\n", random(10) - 5);
*/
return 0;
}
例249:控制随机数的生成
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int i;
// srand初始化随机数发生器
srand(100);
printf("Values from rand\n");
for (i = 0; i < 5; i++)
// rand返回产生随机数
printf("%d ", rand());
printf("\nSame 5 numbers\n");
srand(100);
for (i = 0; i < 5; i++)
printf("%d ", rand());
// randomize不是一个C语言标准库函数,只能在win32环境中使用
// randomize();
printf("\nDifferent 5 numbers\n");
for (i = 0; i < 5; i++)
printf("%d ", rand());
return 0;
}
例250:计算反三角函数asin()
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
double radians;
for (radians = -0.5; radians <= 0.5; radians += 0.2)
printf("%f %f\n", radians, asin(radians));
return 0;
}
例251:计算反三角函数acos()
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
double radians;
for (radians = -0.5; radians <= 0.5; radians += 0.2)
printf("%f %f\n", radians, acos(radians));
return 0;
}
例252:计算反三角函数atan()
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
double radians;
for (radians = -0.5; radians <= 0.5; radians += 0.2)
printf("%f %f\n", radians, atan(radians));
return 0;
}
例253:计算复数的绝对值
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
struct complex complex_number;
complex_number.x = 10;
complex_number.y = 5;
printf("Absolute value of 10,5 is %f\n", cabs(complex_number));
return 0;
}
例254:计算双曲函数cosh()
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
double radians;
for (radians = -0.5; radians <= 0.5; radians += 0.2)
printf("%f %f\n", radians, cosh(radians));
return 0;
}
例255:计算余数函数fmod()
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
double numerator = 10.0;
double denominator = 3.0;
// double fmod(x, y) 返回 x 除以 y 的余数
printf("fmod(10, 3) is %f\n", fmod(numerator, denominator));
return 0;
}
例256:向上取整函数ceil()
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
// ceil(x)返回大于或者等于x的最小整数
printf("The value %f ceil %f\n", 1.9, ceil(1.9)); // The value 1.900000 ceil 2.000000
printf("The value %f ceil %f\n", 2.1, ceil(2.1)); // The value 2.100000 ceil 3.000000
return 0;
}
例257:计算双曲正弦函数sinh()
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char const *argv[])
{
double radians;
double result;
for (radians = 0.0; radians < 3.1; radians += 0.1)
// 确定函数的结果可以表示为浮点数
// HUGE_VAL、ERANGE都是库函数中定义的宏
if (((result = sinh(radians)) == HUGE_VAL) && (errno == ERANGE))
printf("Overflow error\n");
else
printf("Sine of %f is %f\n", radians, result);
return 0;
}