注册 登录
编程论坛 数据结构与算法

语法上有错误吗?为什么编译没有通过

梁朝斌 发布于 2012-12-11 18:28, 274 次点击
#include<stdio.h>
#include<math.h>
#define maxsize 100
int main(void)
 {
     double a,b,t[maxsize],s[maxsize],c[maxsize],r[maxsize];
     double f(double c);
     double sum;
     int i,n,k;
     printf("请输入积分下限:\n");
     scanf("%lf",&a);
     printf("请输入积分上限:\n");
     scanf("%lf",&b);
     printf("please input n=\n");
     scanf("%d",&n);
   
   
     for(k=1;k<=n;k++)
     {
         sum=0;
         t[1]=(b-a)*(f(a)+f(b))/2;
         for(i=1;i<=pow(2,k-1);i++)
             sum+=f(a+(b-a)*(2*i-1))/pow(2,k);
         t[pow(2,k)]=t[pow(2,k-1)]/2+(b-a)*sum;
     }
     for(k=1;k<=n;k++)
     {
         s[pow(2,k-1)]=(4/3)*t[pow(2,k)]-(1/3)*t[pow(2,k-1)];
     }
     for(k=2;k<=n;k++)
     {
         c[pow(2,k-2)]=(16/15)*s[pow(2,k-1)]-(1/15)*s[pow(2,k-2)];
     }
     for(k=3;k<=n;k++)
     {
         r[pow(2,k-3)]=(64/63)*c[pow(2,k-2)]-(1/63)*c[pow(2,k-3)];
     }
     printf("r[%d]=%lf",k,r[pow(2,k-3)]);
     return 0;
}


 
 double f(double c)
 {
     double y;
     y=c;
     return y;
 }
     
1 回复
#2
一个孩子2012-12-11 19:00
是的,语法上有错误。
s[(int)(pow(2,k-1))]=(4/3)*t[(int)pow(2,k)]-(1/3)*t[(int)pow(2,k-1)];
数组下标应该是整数,pow函数返回值是double类型的,不匹配,会报错,你数组下标表达大都不对。转换成整型就好了,但是不知道对你的结果有没有影响。
1