为什么第二个例子怎么敲都是最后结果为75?另外两个例子就是正确的?

为什么第二个例子怎么敲都是最后结果为75?另外两个例子就是正确的?

#include<stdio.h>

void polynomial(double *a, int &n);

int main()

{

double a[1000];

int n;

printf("请输入一元多项式的项数n(最大为10):\n");

scanf_s("%d", &n);

polynomial(a, n);

return 0;

}

void polynomial(double *a, int &n)

{

int i;

double x, p;

p = 0;

printf("请输入一元多项式的未知数x的赋值");

scanf_s("%lf", &x);

printf("请输入常数项:");

scanf_s("%lf", &a[0]);

for (i = 1; i <= n; i++)

{

printf("请输入%d项前的系数a:", n);

scanf_s("%lf", &a[i]);

}

for (i = 1; i <= n; i++)

{

p = p + a[i] * x;

x = x * x;

}

p = p + a[0];

printf("多项式的解为:%.2lf", p);

}

然后我敲第一和第三个测试用例进行测试,最后结果都和输出一致,但是第二个测试用例输出结果是和输出结果不一致,这是为什么?
为什么第二个例子怎么敲都是最后结果为75?另外两个例子就是正确的?为什么第二个例子怎么敲都是最后结果为75?另外两个例子就是正确的?为什么第二个例子怎么敲都是最后结果为75?另外两个例子就是正确的?

这该怎么弄??

回答

for (i = 1; i <= n; i++)

{

p = p + a[i] * x;

x = x * x; // 这句有错

}

具体你写的这个算法 x = x * x; 这句有错。

你想实现的是x的n次方,但实际实现的是x = x * x;

举个例子就是

2的三次方,你这种写法就变成了 第一次循环x = 2* 2 结果为4是对的; 下一次循环x = 4 * 4等于16了;此时2的三次方应该是8;此处有错

以上是 为什么第二个例子怎么敲都是最后结果为75?另外两个例子就是正确的? 的全部内容, 来源链接: utcz.com/a/61922.html

回到顶部