fortran编了一个两数组相加求和,再求输出数组的最大值的程序,怎么算出来的数字有点问题

programmainreala(3,3),b(3,3),c(3,3)integern,mprint*,'输入m'read*,mprint*,'输入n'read*,npr... program main
real a(3,3),b(3,3),c(3,3)
integer n,m
print*,'输入m'
read*,m
print*,'输入n'
read*,n
print*,'输入矩阵a'
read*,a
print*,'输入b'
read*,b
call smv(a,b,c,ld,m,n)
print*,'matrice c',c,'cmax',cmax
end
subroutine smv(a,b,c,ld,m,n)
real a(ld,m),b(ld,m),c(ld,m)
integer n,m
do i=1,m
do j=1,n
c(i,j)=a(i,j)+b(i,j)
enddo
enddo
maxc=c(1,1)
do i=1,n
do j=1,n
if (c(i,j).gt.cmax) then
cmax=c(i,j)
endif
enddo
enddo
end subroutine
我m,n都输入3,然后a=1,2,3,4,5,6,7,8,9 b=9,8,7,6,5,4,3,2,1
本来应该全是10的,可是结果是10,10,10,2.867....e-42,..(就不打了)
是哪里出错啦?
新手求助啦!!!!!!!!!!
展开
 我来答
天河流纹石
2014-02-19 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4046万
展开全部
嗯,你的 ld 都没有定义,也没有赋值。就这一点你的程序就完全没法继续看了。

Fortran 的优势就是矩阵运算。你的程序可以非常简单。

program main
real a(3,3),b(3,3),c(3,3),cmax
integer n,m
print*,'输入m'
read*,m
print*,'输入n'
read*,n
print*,'输入矩阵a'
read*,a
print*,'输入b'
read*,b
call smv(a,b,c,m,m,n,cmax)
print*,'matrice c',c,'cmax',cmax
end

subroutine smv(a,b,c,ld,m,n,cmax)
real a(ld,m),b(ld,m),c(ld,m)
integer n,m
c = a + b
cmax = maxval(c)
end subroutine

这两句代码就可以了。
我建议你看一下这个文章,关于定义数组和变量的一些常识:fcode.cn/guide-43-1.html
更多追问追答
追问

谢谢,但是教材上这个ld 呢?,教授要求不能用这个函数,得自己写
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式