Marcccccy 发表于 2020-4-29 20:52:49

多项式求和问题

程序设计题:
计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...+a9*x*x*x*x*x*x*x*x*x的值,并将其以格式"%.2f"输出
#include<stdio.h>
int main()
{
    int i;
    float x=1.279,t=1,y=0;
    float a={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
    //从以下开始答题
    return 0;
}
自己尝试写了一下,但是结果出现-1#J,是哪儿出了问题呀?
#include<stdio.h>
int main()
{
        int i;
        float x=1.279,t=1,y=0;
        float a={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
        y=a;
        for(i=1;i<10;i++)
        {
                for(t=1;t<i;t++)
                {
                        x=x*x;
                }
                y=y+a*x;
        }
        printf("%.2f",y);
        return 0;
}

Richard149 发表于 2020-4-29 22:41:39

看输出的内容就知道啦,printf的输出提示你,最后算出来的y太大了 ,已经超出了float的表示范围
比如这样就可以了将x的初始值设为 0.XX 就不会那么大了
#include<stdio.h>
int main()
{
        int i;
        intt = 1;
        float x = 0.85, y = 0;
        float a = { 1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65 };
        y = a;
        for (i = 1; i<10; i++)
        {
                for (t = 1; t<i; t++)
                {
                        x = x*x;
                }
                y = y + a * x;
        }
        printf("%0.2f",y);
       
        return 0;
}

Marcccccy 发表于 2020-4-30 00:27:41

Richard149 发表于 2020-4-29 22:41
看输出的内容就知道啦,printf的输出提示你,最后算出来的y太大了 ,已经超出了float的表示范围
比如这样 ...

欸!不过x的值是题目给定的呢,如果不能改变x的值的话,还有其他办法嘛?{:10_272:}

Marcccccy 发表于 2020-4-30 01:20:27

翻到了参考答案,给大家码在这儿
#include<stdio.h>
int main()
{
        int i;
        float x=1.279,t=1,y=0;
        float a={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
        y=a;
        for(i=1;i<10;i++)
        {
                t=t*x;
                y=y+a*t;
        }       
        printf("%.2f",y);
        return 0;
}
页: [1]
查看完整版本: 多项式求和问题