program Guass1
real,dimension(:,:),allocatable::arr
real,dimension(:),allocatable::x
real a
integer i,j,k,n
!输入、输出数列
write(*,*)'请输入需要计算的系数矩阵的大小n='
read*,n
allocate(arr(n,n+1))
allocate(x(n))
write(*,*)'请以列为主次序依次输入矩阵元素(系数矩阵:常系数矩阵\n'c
read*,arr
do i=1,n
write(*,*) arr(i,:)
end do
write(*,*)'高斯消元法\n'c
!列主元的高斯消元法
do k=1,n-1 !K代表当前消元列数
!列主元
call compare(arr,k,n)
do i=k+1,n !i代表行
a=arr(i,k)/arr(k,k)
do j=k,n+1 !j代表列
arr(i,j)=arr(i,j)-a*arr(k,j)
enddo
enddo
enddo
!输出消元后矩阵
do i=1,n
write(*,*) arr(i,:)
end do
!回带求解过程
x(n)=arr(n,n+1)/arr(n,n)
do i=n-1,1,-1 !行
a=0
do j=n,i+1,-1 !列
a=a+arr(i,j)*x(j)
enddo
x(i)=(arr(i,n+1)-a)/arr(i,i)
enddo
write(*,*)'\n'c,