📄 yl.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
void answer(int N,float *a,float *b)
{
float *ats;
float *x;
float z[100];
ats=z;
x=b;
float t,s,q;
int i,j,l,p,k;
for(j=0;j<N;j++)
for(i=0;i<N;i++)
{
if((*(a+i+j*N))<0)
*(ats+i+j*N)=-(*(a+i+j*N));
else
*(ats+i+j*N)=(*(a+i+j*N));
}
for(l=1;l<N;l++)
{
j=l-1;
t=*(a+l-1+j*N);
for(k=j;k<N;k++)
{
if((*(ats+l-1+k*N))>(*(ats+l-1+j*N)))
{
p=k;
s=*(b+k);
}
}
for(i=0;i<N;i++)
{
t=*(a+i+p*N);
*(a+i+p*N)=*(a+i+j*N);
*(a+i+j*N)=t;
}
*(b+p)=*(b+j);
*(b+j)=s;
for(j=l;j<N;j++)
{
q=(*(a+l-1+j*N))/(*(a+l-1+(l-1)*N));
for(i=l-1;i<N;i++)
{
*(a+i+j*N)=*(a+i+j*N)-(*(a+i+(l-1)*N))*q;
}
*(b+j)=(*(b+j))-(*(b+l-1))*q;
}
}
*(x+N-1)=(*(b+N-1))/(*(a+N-1+(N-1)*N));
for(l=2;l<=N;l++)
{
*(x+N-l)=*(b+N-l);
for(i=1;i<l;i++)
(*(x+N-l))-=((*(a+(N-l)*N+N-i))*(*(x+N-i)));
*(x+N-l)=(*(x+N-l))/(*(a+(N-l)*N+N-l));
}
printf("[");
for(i=0;i<N;i++)
printf("%f ",*(x+i));
printf("]");
}
void main()
{
int N;
int i;
float x[100],y[100];
float *a;
float *at;
float *b;
printf("请输入矩阵阶数\n");
scanf("%d",&N);
printf("请按行输入系数矩阵\n");
at=a=x;
b=y;
for(i=0;i<(N*N);i++)
{
scanf("%f",at);
if(i!=(N*N-1))
printf("请按行输入系数矩阵\n");
at+=1;
}
printf("请输入右端矩阵\n");
for(i=0;i<N;i++)
{
scanf("%f",b+i);
}
printf("解向量为\n");
answer(N,a,b);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -