发布时间:2023-10-27 07:41来源:www.sf1369.com作者:宇宇
#includestdio.h
#includemath.h
int main()
{double a[5][5]={
{28,-3,0,0,0},
{-3,38,-10,0,-5},
{0,0,-15,0,45},
{0,-10,25,-15,0},
{0,-5,0,0,30}};
double b[5]={10,0,0,0,0};
double x0[5]={1,1,1,1,1},x[5],e=0.001,s=0,c;
int Nmax,k,i,j,m=0,WAY;
printf(输入迭代次数N=);
scanf(%d,&Nmax);
printf(选择迭代方法: 1 是Jacobi迭代;2是Gauss-Seidel迭代。输入1或2 );
scanf(%d,&WAY);
if (WAY==1)
{
for(k=1;k<=Nmax;k++)
{
for(i=1;i<=5;i++)
{
for(j=1;j<=5;j++)
{
if(i!=j)
s=s+a[i][j]*x0[j];
}
x[i]=(b[i]-s)/a[i][i];
s=0;
}
c=fabs(x[0]-x0[0]);
for(i=1;i<5;i++)
{
if(c<fabs(x[i]-x0[i]))
c=fabs(x[i]-x0[i]);
}
if(c<搭戚e)
break;
for(i=0;i<5;i++)
x0[i]=x[i];
}
}
printf(经Jacobi法迭代后解向量为:\n);
for(i=1;i<=5;i++)
{x0[i]=x[i];
printf(x[%d]=%f\n,i,x0[i]);
}
if(k>Nmax){ printf(JACOBI迭代不收敛!);
printf(迭代次数k=%d,k);}
else if(WAY==1)
{
for(i=1;i<=5;i++)
x0[i]=x0[i];
for(k=1;k<=Nmax;k++)
{for(i=1;i<=5;i++)
{for(j=1;j<=5;j++)
{if(i!=j)
s=s+a[i][j]*x[j];
}
x[i]=(b[i]-s)/a[i][i];
s=0;}
c=fabs(x[0]-x0[0]);
for(i=1;i<=5;i++)
{ if(c<fabs(x[i]-x0[i]))
c=fabs(x[i]-x0[i]);
}
if(c<e) break;
for(i=1;i<=5;i++)
{ x0[i]=x[i];
}
}
printf(经核袜Gauss-Seidel法迭代后解改枝激向量为:\n);
for(i=1;i<=5;i++)
{x0[i]=x[i];
printf(x[d%]=%f\n,i,x0[i]);
}
if(k>Nmax) printf(Gauss-Seidel不收敛!);
printf(迭代次数k=%d,k);
}
}
{} 混乱else 前边} 已经和main下边的{ 对应哗贺者了,造成整个程序已经乱薯结束。你最好在编译器里。再细心整理拍闷一下{}。
if (WAY==1)和下面液察
else
if(WAY==1)
都是从悉埋贺你程序上粘下来的,肯定不对啊,if和睁派else是分支,条件不能相同
这么长?不看
不加。
如果if后面有多个语句,则是需要的;如果只有一个的话,可写可不写!例如:if(a>b) print(a); if(a>b&&b>c) {print(b);print(c);}
这种循环判断语句的时候,不加花括号就是代表只有一句有效语句,悉丛如果不加代表的就是它下面只接受第一句话,后面的语句,自动归类为非此判断的在else结束后运行。
扩罩亮展资料:
if语句的语法如下所示(if和else是C#的关键字):
if(booleanExpression)
statement-1;
else
statement-2;
如果booleanExpression(布尔表达式)求值为true,就运行statement-1;否则运行statement-2。else关键字和后续的statement-2是可选的。如果没有else子句,而且booleanExpression求值为false,那么什么也不会发生,程序继续执行if语句之后的代码。注意,布尔表睁闷樱达式必须放在圆括号中,否则无法编译。
参考资料来源:百度百科-if语句
如果else后面还是if......else....判断可以不加;岩派else后面如果只有一条语句扮郑也可不加。但为了清晰起见,最好加上,这样更明白些,省的厅枣颂出错。
是这春陵样的,如果if后面有多个语句,历森孙则是需要的;肢链如果只有一个的话,可写可不写!例如:if(a>b) print(a); if(a>b&&b>c) {print(b);print(c);}
Java 中要加。