各位大侠,紧急求助,

时间:2022-08-16 14:16:03
运行时提示此行表达式语法有错,在double b[25][5]={{……中,请各位不吝赐教,谢谢



#include<stdio.h>
main()
{int i,n=20,x1=3;    
float y1,y2,y3,y4,h,y5,y6,y7,y8,z1,z2,z3,z4,z5,z6; 
double u[21],v[21],w[21];
y1=0.508;
y2=1.5e7;
y3=2.1e3;
y4=1.0e6;
h=2.5;
y5=1.0e6;
y6=0.02;
y7=210e9;
y8=5.0e6;               
z1=1+(y5*h*h)/(y6*y7);
z2=-3-(y5*h*h)/(y6*y7);
z3=(y8*h*h)/(y6*y7);
z4=(y4*h*h*h)/(y6*y7);
z5=1+(y5+y3*(x1+n*h))*h*h/(y6*y7);
z6=-3-(y5+y3*(x1+n*h))*h*h/(y6*y7);  

   for (i=0;i<21;i++)  
    { u[i]=6.0+(y5+y3*(x1+i*h))*h*h/(y6*y7);  
      v[i]=-4.0-2.0*(y5+y3*(x1+i*h))*h*h/(y6*y7)+0.9*y2*h*h*h*h*(1.0+y1)*i*h/(y6*y7);
      w[i]=1.0+(y5+y3*(x1+i*h))*h*h/(y6*y7);
     }

 double b[25][5]={{0.0,0.0,1.0,-2.0,1.0},{0.0,-1.0,3.0,z2,z1},{1.0,-4.0,u[0],v[0],w[0]},{1.0,-4.0,u[1],v[1],w[1]},    {1.0,-4.0,u[2],v[2],w[2]}, 
                   {1.0,-4.0,u[3],v[3],w[3]},  {1.0,-4.0,u[4],v[4],w[4]},     {1.0,-4.0,u[5],v[5],w[5]},     {1.0,-4.0,u[6],v[6],w[6]},     {1.0,-4.0,u[7],v[7],w[7]},  
                   {1.0,-4.0,u[8],v[8],w[8]},  {1.0,-4.0,u[9],v[9],w[9]},     {1.0,-4.0,u[10],v[10],w[10]},  {1.0,-4.0,u[11],v[11],w[11]},  {1.0,-4.0,u[12],v[12],w[12]},
                   {1.0,-4.0,u[13],v[13],w[13]}, {1.0,-4.0,u[14],v[14],w[14]},{1.0,-4.0,u[15],v[15],w[15]},  {1.0,-4.0,u[16],v[16],w[16]},  {1.0,-4.0,u[17],v[17],w[17]},
                   {1.0,-4.0,u[18],v[18],w[18]}, {1.0,-4.0,u[19],v[19],w[19]}, {1.0,-4.0,u[20],v[20],w[20]},  {0.0,-1.0,3.0,z6,z5},        {0.0,0.0,1.0,-2.0,1.0}}



double d[25][1]= {{z3},{z4},{0.0},{0.0},
                         {0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0},
                         {0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0},
                         {0.0},{0.0},{0.0},{0.0},{0.0}}

   if(band(25,2,5,1,b,d)>0)
   {
    for(i=0;i<=24;i++)
       {
     printf("x(%d)=%13.7e\n",i,d[i][0]); 
       }
   }
   
 }   


int band(int n,int h,int ih,int m,double b[],double d[])
{int ls,k,i,j,is,u,v;
double p,t;
if(ih!=(2*h+1)) /*带宽与半带宽不匹配,错误返回*/
{printf("fail \n");return(-2); }
ls=h;
for(k=0;k<=n-2;k++)
{p=0.0;
for(i=k;i<=ls;i++)/*列选主元*/
{t=fabs(b[i*ih]);
if(t>p) {p=t;is=i; }
}
if(p+1.0==1.0) /*方程组系数矩阵奇异,错误返回*/
{printf("fail \n");return(0); }
for(j=0;j<=m-1;j++)/* m组常数向量行交换*/
{u=k*m+j;v=is*m+j;t=d[u];d[u]=d[v];d[v]=t; }
for(j=0 ;j<=ih-1 ;j++)/*系数矩阵归一化*/
{u=k*ih+j;v=is*ih+j;t=b[u];b[u]=b[v] ;b[v]=t ; }
for(j=0;j<=m-1;j++)/*m组常数向量归一化 */
{u=k*m+j; d[u]=d[u]/b[k*ih]; }
for(j=1 ;j<=ih-1 ;j++)/*系数矩阵归一化*/
{u=k*ih+j; b[u] =b[u]/b[k*ih] ; }
for(i=k+1;i<=ls;i++)
{t=b[i*ih];
for(j=0;j<=m-1;j++)/*m组常数向量消元*/
{u=i*m+j;v=k*m+j; d[u]=d[u]-t*d[v]; }
for(j=1;j<=ih-1;j++)/*系数矩阵消元,且左移一列*/
{u=i*ih+j;v=k*ih+j; b[u-1]=b[u]-t*b[v]; }
u=i*ih+ih-1;b[u]=0.0; }
if(ls!=(n-1)) ls=ls+1; }
p=b[(n-1)*ih];
if(fabs(p)+1.0==1.0) /*方程组系数矩阵奇异,错误返回*/
{printf("fail \n");return(0); }
for(j=0;j<=m-1;j++)/*计算m组解向量中的最后一个分量*/
{u=(n-1)*m+j;d[u]=d[u]/p; }
ls=1;
for(i=n-2;i>=0;i--)
{for(k=0;k<=m-1;k++)
{u=i*m+k;
for(j=1;j<=ls;j++)
{v=i*ih+j;is=(i+j)*m+k; d[u]=d[u]- b[v]*d[is]; }}
if(ls!=(ih-1)) ls=ls+1; }
return(2);}/*正常返回*/

12 个解决方案

#1


这两个double b[25][5]={{0.0,0.0,1.0,-2.0,1.0},{0.0,-1.0,3.0,z2,z1},{1.0,-4.0,u[0],v[0],w[0]},{1.0,-4.0,u[1],v[1],w[1]},    {1.0,-4.0,u[2],v[2],w[2]}, 
                  {1.0,-4.0,u[3],v[3],w[3]},  {1.0,-4.0,u[4],v[4],w[4]},    {1.0,-4.0,u[5],v[5],w[5]},    {1.0,-4.0,u[6],v[6],w[6]},    {1.0,-4.0,u[7],v[7],w[7]},  
                  {1.0,-4.0,u[8],v[8],w[8]},  {1.0,-4.0,u[9],v[9],w[9]},    {1.0,-4.0,u[10],v[10],w[10]},  {1.0,-4.0,u[11],v[11],w[11]},  {1.0,-4.0,u[12],v[12],w[12]}, 
                  {1.0,-4.0,u[13],v[13],w[13]}, {1.0,-4.0,u[14],v[14],w[14]},{1.0,-4.0,u[15],v[15],w[15]},  {1.0,-4.0,u[16],v[16],w[16]},  {1.0,-4.0,u[17],v[17],w[17]}, 
                  {1.0,-4.0,u[18],v[18],w[18]}, {1.0,-4.0,u[19],v[19],w[19]}, {1.0,-4.0,u[20],v[20],w[20]},  {0.0,-1.0,3.0,z6,z5},        {0.0,0.0,1.0,-2.0,1.0}}  ;

double d[25][1]= {{z3},{z4},{0.0},{0.0}, 
                        {0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0}, 
                        {0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0}, 
                        {0.0},{0.0},{0.0},{0.0},{0.0}}  ;后面都少了个;

#2


是25行啊,没有少奥,请您仔细给我看看,到底哪里出问题了?多谢。

#3


结尾要有分号

#4


少了个;

#5


好多错。。。建议楼主在写的时候,写一小段就测试一小段,不要写得老长老长的再改。。。

#6


加上;号之后错误更多了,if(band(25,2,5,1,b,d)>0)中的b,d未在main函数中定义

#7


5楼的大侠多指导一下,我学过好几年没有用,下载还是菜鸟级别,

#8


我遇到类似问题都是用 “每次用/*...*/临时注释掉代码的不同部分再编译看出错信息”方法最终找到真正的语法出错位置的。

#9


引用 6 楼 wqbin 的回复:
加上;号之后错误更多了,if(band(25,2,5,1,b,d)>0)中的b,d未在main函数中定义

在main前声明下函数int band(int n,int h,int ih,int m,double b[][5],double d[][1]) ;
把实现的那部分也给改成这样子的。。。
int band(int n,int h,int ih,int m,double b[][5],double d[][1])
{

}

#10


初始化语法好像不能用来赋值,改成下面:
#include <stdio.h>
int band(int n,int h,int ih,int m,double b[],double d[]) {
    int ls,k,i,j,is,u,v;
    double p,t;
    if (ih!=(2*h+1)) {/*带宽与半带宽不匹配,错误返回*/
        printf("fail \n");
        return(-2);
    }
    ls=h;
    for (k=0;k<=n-2;k++) {
        p=0.0;
        for (i=k;i<=ls;i++) {/*列选主元*/
            t=fabs(b[i*ih]);
            if (t>p) {
                p=t;
                is=i;
            }
        }
        if (p+1.0==1.0) {/*方程组系数矩阵奇异,错误返回*/
            printf("fail \n");
            return(0);
        }
        for (j=0;j<=m-1;j++) {/* m组常数向量行交换*/
            u=k*m+j;
            v=is*m+j;
            t=d[u];d[u]=d[v];d[v]=t;
        }
        for (j=0;j<=ih-1;j++) {/*系数矩阵归一化*/
            u=k*ih+j;
            v=is*ih+j;
            t=b[u];b[u]=b[v];b[v]=t;
        }
        for (j=0;j<=m-1;j++) {/*m组常数向量归一化 */
            u=k*m+j;
            d[u]=d[u]/b[k*ih];
        }
        for (j=1;j<=ih-1;j++) {/*系数矩阵归一化*/
            u=k*ih+j;
            b[u]=b[u]/b[k*ih];
        }
        for (i=k+1;i<=ls;i++) {
            t=b[i*ih];
            for (j=0;j<=m-1;j++) {/*m组常数向量消元*/
                u=i*m+j;
                v=k*m+j;
                d[u]=d[u]-t*d[v];
            }
            for (j=1;j<=ih-1;j++) {/*系数矩阵消元,且左移一列*/
                u=i*ih+j;
                v=k*ih+j;
                b[u-1]=b[u]-t*b[v];
            }
            u=i*ih+ih-1;
            b[u]=0.0;
        }
        if (ls!=(n-1)) ls=ls+1;
    }
    p=b[(n-1)*ih];
    if (fabs(p)<=0.000001) {/*方程组系数矩阵奇异,错误返回*/
        printf("fail \n");
        return(0);
    }
    for (j=0;j<=m-1;j++) {/*计算m组解向量中的最后一个分量*/
        u=(n-1)*m+j;
        d[u]=d[u]/p;
    }
    ls=1;
    for (i=n-2;i>=0;i--) {
        for (k=0;k<=m-1;k++) {
            u=i*m+k;
            for (j=1;j<=ls;j++) {
                v=i*ih+j;
                is=(i+j)*m+k;
                d[u]=d[u]-b[v]*d[is];
            }
        }
        if (ls!=(ih-1)) ls=ls+1;
    }
    return(2);
}/*正常返回*/
main() {
    int i,n=20,x1=3;
    float y1,y2,y3,y4,h,y5,y6,y7,y8,z1,z2,z3,z4,z5,z6;
    double u[21],v[21],w[21];
    double b[25][5]={
        {0.0,  0.0, 1.0, -2.0, 1.0},
        {0.0, -1.0, 3.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {0.0, -1.0, 3.0,  0.0, 0.0},
        {0.0,  0.0, 1.0, -2.0, 1.0},
    };
    double d[25][1]={
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
    };

    y1=0.508;
    y2=1.5e7;
    y3=2.1e3;
    y4=1.0e6;
    h =2.5;
    y5=1.0e6;
    y6=0.02;
    y7=210e9;
    y8=5.0e6;
    z1=1             +(y5*h*h)/(y6*y7);
    z2=-3            -(y5*h*h)/(y6*y7);
    z3=               (y8*h*h)/(y6*y7);
    z4=             (y4*h*h*h)/(y6*y7);
    z5=1 +(y5+y3*(x1+n*h))*h*h/(y6*y7);
    z6=-3-(y5+y3*(x1+n*h))*h*h/(y6*y7);

    for (i=0;i<21;i++) {
        u[i]=6.0     +(y5+y3*(x1+i*h))*h*h/(y6*y7);
        v[i]=-4.0-2.0*(y5+y3*(x1+i*h))*h*h/(y6*y7)+0.9*y2*h*h*h*h*(1.0+y1)*i*h/(y6*y7);
        w[i]=1.0     +(y5+y3*(x1+i*h))*h*h/(y6*y7);
    }

    b[1][3]=z2;
    b[1][4]=z1;
    for (i=0;i<21;i++) {
        b[2+i][2]=u[i];
        b[2+i][2]=v[i];
        b[2+i][2]=w[i];
    }
    b[23][3]=z6;
    b[23][4]=z5;

    d[0][0]=z3;
    d[1][0]=z4;

    if (band(25,2,5,1,b,d)>0) {
        for (i=0;i<=24;i++) {
            printf("x(%d)=%13.7e\n",i,d[i][0]);
        }
    }
}

#11


楼主对比一下你的和我的代码,书写格式要尽量清晰啊!

#12


还有
照顾到浮点运算的精度,不能
if(fabs(p)+1.0==1.0) /*方程组系数矩阵奇异,错误返回*/ 
而要
if (fabs(p)<=0.000001) {/*方程组系数矩阵奇异,错误返回*/

另外
用fabs要在开头加
#include <math.h>

#1


这两个double b[25][5]={{0.0,0.0,1.0,-2.0,1.0},{0.0,-1.0,3.0,z2,z1},{1.0,-4.0,u[0],v[0],w[0]},{1.0,-4.0,u[1],v[1],w[1]},    {1.0,-4.0,u[2],v[2],w[2]}, 
                  {1.0,-4.0,u[3],v[3],w[3]},  {1.0,-4.0,u[4],v[4],w[4]},    {1.0,-4.0,u[5],v[5],w[5]},    {1.0,-4.0,u[6],v[6],w[6]},    {1.0,-4.0,u[7],v[7],w[7]},  
                  {1.0,-4.0,u[8],v[8],w[8]},  {1.0,-4.0,u[9],v[9],w[9]},    {1.0,-4.0,u[10],v[10],w[10]},  {1.0,-4.0,u[11],v[11],w[11]},  {1.0,-4.0,u[12],v[12],w[12]}, 
                  {1.0,-4.0,u[13],v[13],w[13]}, {1.0,-4.0,u[14],v[14],w[14]},{1.0,-4.0,u[15],v[15],w[15]},  {1.0,-4.0,u[16],v[16],w[16]},  {1.0,-4.0,u[17],v[17],w[17]}, 
                  {1.0,-4.0,u[18],v[18],w[18]}, {1.0,-4.0,u[19],v[19],w[19]}, {1.0,-4.0,u[20],v[20],w[20]},  {0.0,-1.0,3.0,z6,z5},        {0.0,0.0,1.0,-2.0,1.0}}  ;

double d[25][1]= {{z3},{z4},{0.0},{0.0}, 
                        {0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0}, 
                        {0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0},{0.0}, 
                        {0.0},{0.0},{0.0},{0.0},{0.0}}  ;后面都少了个;

#2


是25行啊,没有少奥,请您仔细给我看看,到底哪里出问题了?多谢。

#3


结尾要有分号

#4


少了个;

#5


好多错。。。建议楼主在写的时候,写一小段就测试一小段,不要写得老长老长的再改。。。

#6


加上;号之后错误更多了,if(band(25,2,5,1,b,d)>0)中的b,d未在main函数中定义

#7


5楼的大侠多指导一下,我学过好几年没有用,下载还是菜鸟级别,

#8


我遇到类似问题都是用 “每次用/*...*/临时注释掉代码的不同部分再编译看出错信息”方法最终找到真正的语法出错位置的。

#9


引用 6 楼 wqbin 的回复:
加上;号之后错误更多了,if(band(25,2,5,1,b,d)>0)中的b,d未在main函数中定义

在main前声明下函数int band(int n,int h,int ih,int m,double b[][5],double d[][1]) ;
把实现的那部分也给改成这样子的。。。
int band(int n,int h,int ih,int m,double b[][5],double d[][1])
{

}

#10


初始化语法好像不能用来赋值,改成下面:
#include <stdio.h>
int band(int n,int h,int ih,int m,double b[],double d[]) {
    int ls,k,i,j,is,u,v;
    double p,t;
    if (ih!=(2*h+1)) {/*带宽与半带宽不匹配,错误返回*/
        printf("fail \n");
        return(-2);
    }
    ls=h;
    for (k=0;k<=n-2;k++) {
        p=0.0;
        for (i=k;i<=ls;i++) {/*列选主元*/
            t=fabs(b[i*ih]);
            if (t>p) {
                p=t;
                is=i;
            }
        }
        if (p+1.0==1.0) {/*方程组系数矩阵奇异,错误返回*/
            printf("fail \n");
            return(0);
        }
        for (j=0;j<=m-1;j++) {/* m组常数向量行交换*/
            u=k*m+j;
            v=is*m+j;
            t=d[u];d[u]=d[v];d[v]=t;
        }
        for (j=0;j<=ih-1;j++) {/*系数矩阵归一化*/
            u=k*ih+j;
            v=is*ih+j;
            t=b[u];b[u]=b[v];b[v]=t;
        }
        for (j=0;j<=m-1;j++) {/*m组常数向量归一化 */
            u=k*m+j;
            d[u]=d[u]/b[k*ih];
        }
        for (j=1;j<=ih-1;j++) {/*系数矩阵归一化*/
            u=k*ih+j;
            b[u]=b[u]/b[k*ih];
        }
        for (i=k+1;i<=ls;i++) {
            t=b[i*ih];
            for (j=0;j<=m-1;j++) {/*m组常数向量消元*/
                u=i*m+j;
                v=k*m+j;
                d[u]=d[u]-t*d[v];
            }
            for (j=1;j<=ih-1;j++) {/*系数矩阵消元,且左移一列*/
                u=i*ih+j;
                v=k*ih+j;
                b[u-1]=b[u]-t*b[v];
            }
            u=i*ih+ih-1;
            b[u]=0.0;
        }
        if (ls!=(n-1)) ls=ls+1;
    }
    p=b[(n-1)*ih];
    if (fabs(p)<=0.000001) {/*方程组系数矩阵奇异,错误返回*/
        printf("fail \n");
        return(0);
    }
    for (j=0;j<=m-1;j++) {/*计算m组解向量中的最后一个分量*/
        u=(n-1)*m+j;
        d[u]=d[u]/p;
    }
    ls=1;
    for (i=n-2;i>=0;i--) {
        for (k=0;k<=m-1;k++) {
            u=i*m+k;
            for (j=1;j<=ls;j++) {
                v=i*ih+j;
                is=(i+j)*m+k;
                d[u]=d[u]-b[v]*d[is];
            }
        }
        if (ls!=(ih-1)) ls=ls+1;
    }
    return(2);
}/*正常返回*/
main() {
    int i,n=20,x1=3;
    float y1,y2,y3,y4,h,y5,y6,y7,y8,z1,z2,z3,z4,z5,z6;
    double u[21],v[21],w[21];
    double b[25][5]={
        {0.0,  0.0, 1.0, -2.0, 1.0},
        {0.0, -1.0, 3.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {1.0, -4.0, 0.0,  0.0, 0.0},
        {0.0, -1.0, 3.0,  0.0, 0.0},
        {0.0,  0.0, 1.0, -2.0, 1.0},
    };
    double d[25][1]={
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
        {0.0},
    };

    y1=0.508;
    y2=1.5e7;
    y3=2.1e3;
    y4=1.0e6;
    h =2.5;
    y5=1.0e6;
    y6=0.02;
    y7=210e9;
    y8=5.0e6;
    z1=1             +(y5*h*h)/(y6*y7);
    z2=-3            -(y5*h*h)/(y6*y7);
    z3=               (y8*h*h)/(y6*y7);
    z4=             (y4*h*h*h)/(y6*y7);
    z5=1 +(y5+y3*(x1+n*h))*h*h/(y6*y7);
    z6=-3-(y5+y3*(x1+n*h))*h*h/(y6*y7);

    for (i=0;i<21;i++) {
        u[i]=6.0     +(y5+y3*(x1+i*h))*h*h/(y6*y7);
        v[i]=-4.0-2.0*(y5+y3*(x1+i*h))*h*h/(y6*y7)+0.9*y2*h*h*h*h*(1.0+y1)*i*h/(y6*y7);
        w[i]=1.0     +(y5+y3*(x1+i*h))*h*h/(y6*y7);
    }

    b[1][3]=z2;
    b[1][4]=z1;
    for (i=0;i<21;i++) {
        b[2+i][2]=u[i];
        b[2+i][2]=v[i];
        b[2+i][2]=w[i];
    }
    b[23][3]=z6;
    b[23][4]=z5;

    d[0][0]=z3;
    d[1][0]=z4;

    if (band(25,2,5,1,b,d)>0) {
        for (i=0;i<=24;i++) {
            printf("x(%d)=%13.7e\n",i,d[i][0]);
        }
    }
}

#11


楼主对比一下你的和我的代码,书写格式要尽量清晰啊!

#12


还有
照顾到浮点运算的精度,不能
if(fabs(p)+1.0==1.0) /*方程组系数矩阵奇异,错误返回*/ 
而要
if (fabs(p)<=0.000001) {/*方程组系数矩阵奇异,错误返回*/

另外
用fabs要在开头加
#include <math.h>