printf("\nThe less is %f,\nthe more is %f,\nthe root is %f.",less,more,root);
创新互联秉承实现全网价值营销的理念,以专业定制企业官网,成都网站建设、网站设计,微信小程序,网页设计制作,成都手机网站制作,全网整合营销推广帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。
less more root double类型,输出用浮点类型%f,一般编译器给出警告,不会是错误
#includestdio.h
long int pX(int n, int x);
int main(void)
{
int n, x;
printf("Please Input the number of n and x: like this 2,3\n");
scanf("%d, %d", n, x);
printf("funtion of p(x)'s value is: %ld", pX(n, x));
return 0;
}
long int pX(int n, int x)
{
if (n == 0)
{
return 1;
}
else if (n == 1)
{
return x;
}
else
{
return (2*n-1)*x-pX(n-1, x)-(n-1)*pX(n-2, x)/n;
}
}
上面的函数可以实现你的要求, 但是没有进行错误处理:
如: n 0 的情况
你的错误有以下几点:
1. 没有弄清楚指针和指针函数;
2. 计算机不会计算未知量, 整个运算过程必须是数值的运算;
3. 需要写出函数, 并且递归调用;
问题一,x和y都是双精度型(double)数变量,用格式输入和输出时,要使用格式符%lf,否则会出错,得不到正确的结果。
你用的%d是整型(int)数的输出输入格式符。
所以你必须把他们统一起来,方法一是:把scanf和printf两个语句中的%d都换成%lf;方法二是:把前面定义语句double x,y;中的double换成int,语句变成:
int x,y;
采用上面两个方法都可以让程序正常运行。
问题二,scanf语句中双引号当中有“x=”,全部是:
scanf("x=%d",x);
或scanf("x=%lf",x);
这样的写法,要求在程序运行时,输入的内容要包含双引号内除格式符以外的所有字符,即你一定要输入:
x=2[回车]
系统才能读到x的值2。值得注意的是,x的大小写都必须跟程序中的大小写相同!
所以,你在程序运行时,直接输入:
2[回车]
系统并不会取得2,更不会把2赋值给x,所以,导致程序运行到后面,也不会得出正确的y的值(11)。
有鉴于此,也有两个办法让程序正确运行:
方法一,输入时按“x=2[回车]”;
方法二,由于按“x=”非常不方便,容易出错,建议把输入语句的x=去掉,改成:
scanf("%d",x);
或scanf("%lf",x);
就能按照你图片发来的输入方法操作,得到正确的结果了。
有什么问题请留言。
头文件:#include math.h
pow() 函数用来求 x 的 y 次幂(次方),其原型为:
double pow(double x, double y);
pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则 ret = xy。
可能导致错误的情况:
如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误。
如果底数 x 和指数 y 都是 0,可能会导致 domain error 错误,也可能没有;这跟库的实现有关。
如果底数 x 是 0,指数 y 是负数,可能会导致 domain error 或 pole error 错误,也可能没有;这跟库的实现有关。
如果返回值 ret 太大或者太小,将会导致 range error 错误。
错误代码:
如果发生 domain error 错误,那么全局变量 errno 将被设置为 EDOM;
如果发生 pole error 或 range error 错误,那么全局变量 errno 将被设置为 ERANGE。
注意,使用 GCC 编译时请加入-lm。