c语言求多项式函数的值 c语言求多项式函数的值怎么求

C语言多项式求值问题应该是计算机上浮点数导致的吧 。因为浮点数比较跟整数比较不一致的 。
#include
stdio.h
double
polynomial(double
x)
{
return
4*x*x*x
-
x*x
7;
}
const
double
EPS=1e-5;
main()
{
double
x,
minx=1,
maxx=2,
step=0.1;
for(x
=
minx;
x
maxx EPS;
x =step)
{
printf("polynomial(%.2f)
=
%.2f\n",
x,
polynomial(x));
}
}
C:\test.exe
polynomial(1.00)
=
10.00
polynomial(1.10)
=
11.11
polynomial(1.20)
=
12.47
polynomial(1.30)
=
14.10
polynomial(1.40)
=
16.02
polynomial(1.50)
=
18.25
polynomial(1.60)
=
20.82
polynomial(1.70)
=
23.76
polynomial(1.80)
=
27.09
polynomial(1.90)
=
30.83
polynomial(2.00)
=
35.00
c语言解:一维多项式求值 。你看的书上的格式太老了 , 现在的编译器们已经不支持了 。
main()
{
double plyv(a,n,x);
改成
double plyv(double a[], int n, double x);
int main(int argc, char* argv[]) {
然后再把
double plyv(a,n,x)
int n;
double x,a[];
{ int i;
改成
double plyv(double a[], int n, double x) {
int i;
c语言计算多项式的值?思路:
因为这是个加法的多项式,用变量s累加,s的最初值是0,第1次向上加1!,第2次加2!,...,第n磁加n! s =jc;阶乘变量jc在循环中计算 。
每项用循环变量i控制 , 第1次循环取值1 , 第2次循环取值2,...,第20次循环取值20,这个变量就是要求的阶乘数,i的值每次加1
阶乘是个累乘的运算 , 用变量jc , 初始值是1 , 第1次向上乘以循环变量值1 , 就是1!,第2次是前边计算好的1!*2=2!,...,第20次就是19!*20=20!,jc*=i;
由于20!数据比较大,对于32bit的int型变量存放不下,可以考虑用double型数据计算,省得溢出 。
因此程序主体算法为:
int i;
double s,jc;
s=0; jc=1;
for ( i=1;i=20;i) { jc*=i; s =jc; }
printf("%lf\n",s);
c语言计算并输出多项式的值#include
int main(void)
{
int n;
int i,j;
float sum = 1.0;
float dex = 1.0;
printf("输入一个数:");
scanf("%d",n);
for (i = 2; i 0; --j)
{
dex*=j;
}
sum =1/dex;
dex = 1.0;
}
printf("%.2f\n",sum);
return 0;
}
c语言编程求解多项式ax^3 bx^2 c的值以下是一个计算多项式ax^3 bx^2 c值的C语言代码:
#include stdio.h
int main() {
float a, b, c, x, result;
printf("请输入多项式系数 a, b, c:");
scanf("%f %f %f", a, b, c);
printf("请输入 x 的值:");
scanf("%f", x);
result = a * x * x * xb * x * xc;
printf("多项式值为:%.2f", result);
return 0;
}
在程序中,我们首先定义了5个变量,分别用于存储多项式系数a、b、c,自变量x和多项式值result 。然后,使用printf和scanf函数分别输出提示信息和获取用户输入的值 。最后,计算多项式的值 , 并使用printf函数输出结果 。注意 , 本代码中使用了float类型,因此可以处理浮点数输入和输出 。
求 多项式求值 C语言double PostCalculate::calculate(std::string *p,int size)
{
std::stackstring a;
std::string postExp[20];
int count=0;//对 后缀表达式 计数
for(int i=0;isize;i)
{
if(!isSign(p)) //若不是符号 ,即为数字
{
postExp[count]=*p;//将数字直接放入后缀表达式
count;
}
else if(*p==" " ||*p=="-")
{
while(!a.empty()a.top()!="(")//弹出栈中元素直到 栈空 或者 左括号
{
postExp[count]=a.top();
count;
a.pop();
}
a.push(*p); //将当前元素压栈
}
else if(*p=="*" || *p=="/")
{
while(!a.empty()a.top()!="("a.top()!=" "a.top()!="-")
{
postExp[count]=a.top();
count;
a.pop();
}
a.push(*p);
}
else if(*p=="(")
{
a.push(*p);
}
else if(*p==")")
{
while(!a.empty()a.top()!="(")
{
postExp[count]=a.top();
count;
a.pop();
}
if(!a.empty()a.top()=="(")
a.pop();
}
p;
}
while(!a.empty())
{
postExp[count]=a.top();
a.pop();
}
double result=postCal(postExp,count);
return result;
}
std::string PostCalculate::dispose(std::string first, std::string second, std::string op)
{
stringstream t;
double r;
double a=stringToDouble(first);
double b=stringToDouble(second);
if(op==" ")
r=a b;
else if(op=="-")
r=a-b;
else if(op=="*")
r=a*b;
else if(op=="/")
r=a/b;
tr;
return t.str();
}
double PostCalculate::postCal(std::string *p,int size)
{
std::stackstring res;
for(int i=0;isize;i)
{
if(!isSign(p))//遇到数字 压栈
res.push(*p);
else //遇到符号
{
string f=res.top(); //取第2操作数
res.pop();
string s=res.top();//取第1操作数
string r=dispose(s,f,*p);
res.push(r);
}
p;
}
return stringToDouble(res.top());
}
inline bool PostCalculate::isSign(std::string* s)
{
return (*s==" "|| *s=="-"|| *s=="*"|| *s=="/"|| *s=="("|| *s==")");
}
inline double PostCalculate::stringToDouble(std::string c)//通过流 实现转换 String - Double
{
double temp;
stringstream a;
a.str(c);
atemp;
return temp;
}
栈的运用…建立两个栈一个存数字一个存运算符…然后取出运算符然后比较优先级…就是这个的思路…求采纳……
【c语言求多项式函数的值 c语言求多项式函数的值怎么求】关于c语言求多项式函数的值和c语言求多项式函数的值怎么求的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读