请问一下我这段代码哪里有错?


#include<stdio.h>

double x0=0.2,x1=0.4,x2=0.6,x3=0.8,x4=1.0;
double y0=0.98,y1=0.92,y2=0.81,y3=0.64,y4=0.38;

double s1,s2,s3,s4,s41,s5,s6,s61,s62,s7;
    s1=(y0-y1)/(x0-x1);
    s2=(y1-y2)/(x1-x2);
    s3=(s2-s1)/(x2-x0);
    s41=(y2-y3)/(x2-x3);
    s4=(s41-s2)/(x3-x1);
    s5=(s4-s3)/(x3-x0);
    s62=(y3-y4)/(x3-x4);
    s61=(s62-s41)/(x4-x2);
    s6=(s61-s4)/(x4-x1);
    s7=(s6-s5)/(x4-x0);

double fo,f1,f2,f3,f4;
    f0=y0;
    f1=s1;
    f2=s3;
    f3=s5;
    f4=s7;

double PX(double x){
    double px=f0+(x-x0)*f1+(x-x0)*(x-x1)*f2+(x-x0)*(x-x1)*(x-x2)*f3+(x-x0)*(x-x1)*(x-x2)*(x-x3)*f4;
    printf("P4(%lf)的值为:%lf",x,px);
}

void main(){
    double x,j;
    printf("由题目要求得x=0.2+0.08i,请依次输入i的值/n");
    for(int i=1;i<5;i++){
        printf("请输入第%d个i的值:",i);
        scanf("%lf",&j);
        x=0.2+0.08*j;
        PX(x);
    }
}

错误提示是error C2501: 's1' : missing storage-class or type specifiers

s1=(y0-y1)/(x0-x1);

你这个(y0-y1)/(x0-x1)结果是个负数,你不能用double存储,你要用int

19行的fo 应该是f0?

全局变量赋值,需把赋值语句移到函数体内。修改见注释处,供参考:

#include<stdio.h>
double x0=0.2,x1=0.4,x2=0.6,x3=0.8,x4=1.0;
double y0=0.98,y1=0.92,y2=0.81,y3=0.64,y4=0.38;

double s1=(y0-y1)/(x0-x1),
       s2=(y1-y2)/(x1-x2),
       s3=(s2-s1)/(x2-x0),
       s41=(y2-y3)/(x2-x3),
       s4=(s41-s2)/(x3-x1),
       s5=(s4-s3)/(x3-x0),
       s62=(y3-y4)/(x3-x4),
       s61=(s62-s41)/(x4-x2),
       s6=(s61-s4)/(x4-x1),
       s7=(s6-s5)/(x4-x0);
    //s1=(y0-y1)/(x0-x1);    //修改
    //s2=(y1-y2)/(x1-x2);
    //s3=(s2-s1)/(x2-x0);
    //s41=(y2-y3)/(x2-x3);
    //s4=(s41-s2)/(x3-x1);
    //s5=(s4-s3)/(x3-x0);
    //s62=(y3-y4)/(x3-x4);
    //s61=(s62-s41)/(x4-x2);
    //s6=(s61-s4)/(x4-x1);
    //s7=(s6-s5)/(x4-x0);

double f0=y0,f1=s1,f2=s3,f3=s5,f4=s7; //fo //修改
    //f0=y0;
    //f1=s1;
    //f2=s3;
    //f3=s5;
    //f4=s7;

void PX(double x){  //double //修改
    double px=f0+(x-x0)*f1+(x-x0)*(x-x1)*f2+(x-x0)*(x-x1)*(x-x2)*f3+(x-x0)*(x-x1)*(x-x2)*(x-x3)*f4;
    printf("P4(%lf)的值为:%lf\n",x,px); //修改
}

void main(){
    double x,j;
    printf("由题目要求得x=0.2+0.08i,请依次输入i的值\n");//修改
    for(int i=1;i<5;i++){
        printf("请输入第%d个i的值:",i);
        scanf("%lf",&j);
        x=0.2+0.08*j;
        PX(x);
    }
}