用fortran做两个do循环给二维数组赋值,但错误了,能详解不

programszximplicitnoneinteger,parameter::row=2integer,parameter::col=2integerrinteger... program szx
implicit none
integer,parameter::row=2
integer,parameter::col=2
integer r
integer c
integer :: m(row,col)
do r=1,2
do c=1,2
m(r,c)=(/1,2,3,4/)
write (*,"(I3,I3,/I3,I3)") m(r,c)
end do
end do
stop
end
错误原因:
D:\MSDev\MSDEV98\MyProjects\szx\szx.f90(18) : Error: The shapes of the array expressions do not conform. [M]
m(r,c)=(/1,2,3,4/)
展开
 我来答
天河流纹石
2014-04-23 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4106万
展开全部
不需要用循环的。

integer :: m(row,col) = reshape((/1,2,3,4/),(/2,2/))
就可以了。

回到你的问题,一个表达式必须左右是平衡的。
m(r,c)=(/1,2,3,4/)
这里的等号左边是数组的一个元素,而右边是整个数组。

这是不行的。还有 write 最好在enddo 的外面

integer,parameter::row=2
integer,parameter::col=2
integer :: m(row,col) != reshape((/1,2,3,4/),(/2,2/))
integer :: i = 1 , r , c
do r=1,2
do c=1,2
m(c,r)=i
i=i+1
end do
end do
write(*,*) m
end
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式