p3pinot 2020-10-17 01:23 采纳率: 100%
浏览 45
已采纳

为什么第二个例子怎么敲都是最后结果为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);



}

然后我敲第一和第三个测试用例进行测试,最后结果都和输出一致,但是第二个测试用例输出结果是和输出结果不一致,这是为什么?
图片说明图片说明图片说明

这该怎么弄??

  • 写回答

1条回答 默认 最新

  • 泡视界 2020-10-19 11:29
    关注
    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;此处有错

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探