#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);
}
}