Fortran 赋值语言数组的输入输出
本人自学的Fortran,由于是多门学科汇编到同一本书中的所以对Fortran的编程讲解很少,所以本人学起来经常似懂非懂的,请教一下会的同学,看看本人翻译的对么?另外本人...
本人自学的Fortran,由于是多门学科汇编到同一本书中的所以对Fortran的编程讲解很少,所以本人学起来经常似懂非懂的,请教一下会的同学,看看本人翻译的对么?另外本人理解的地方是否有什么错误的地方,总之麻烦大家了,题目如下:
运行程序时,输入1,2,3,4,5,6回车,写出下面程序运行结果。
INTEGER A(3,2) 本人翻译(以下不再出现):整数型数组A(3,2)
READ(*,*)((A(I,J),I=1,3),J=1,2) 写入列主序顺序,即:A(1,1),A(2,1),...A(3,2)
WRITE(*,*)A 直接写出A(不太懂这句有什么意义)
WRITE(*,100)((A(I,J),J=1,2),I=1,3) 写出行主序A(1,1),A(1,2),....A(2,3)
WRITE(*,200)((A(I,J),I=1,3),J=1,2)又写一遍列主序?
100 FORMAT(1X,2I4) 形式100的输出规定是1X换行,宽度2,场宽4(这个是我从书上查到的名词无介绍)
200 FORMAT(1X,3I4)形式200的输出规定是1X换行,宽度3,场宽4
END
运行结果如下:
1 2 3 4 5 6
1 4
2 5
3 6
1 2 3
4 5 6
以上就是题目了,本人还有些疑问
WRITE(*,100)这个是不是指特殊的输出形式?和WRITE(*,*)的区别是什么?
另外有的题目给的是A(10),是不是标示A(1)-A(10)?它和A(3,2)有什么区别?
还有我真没看出来怎么出来的这个运行结果,还请大家多多帮忙,谢谢了! 展开
运行程序时,输入1,2,3,4,5,6回车,写出下面程序运行结果。
INTEGER A(3,2) 本人翻译(以下不再出现):整数型数组A(3,2)
READ(*,*)((A(I,J),I=1,3),J=1,2) 写入列主序顺序,即:A(1,1),A(2,1),...A(3,2)
WRITE(*,*)A 直接写出A(不太懂这句有什么意义)
WRITE(*,100)((A(I,J),J=1,2),I=1,3) 写出行主序A(1,1),A(1,2),....A(2,3)
WRITE(*,200)((A(I,J),I=1,3),J=1,2)又写一遍列主序?
100 FORMAT(1X,2I4) 形式100的输出规定是1X换行,宽度2,场宽4(这个是我从书上查到的名词无介绍)
200 FORMAT(1X,3I4)形式200的输出规定是1X换行,宽度3,场宽4
END
运行结果如下:
1 2 3 4 5 6
1 4
2 5
3 6
1 2 3
4 5 6
以上就是题目了,本人还有些疑问
WRITE(*,100)这个是不是指特殊的输出形式?和WRITE(*,*)的区别是什么?
另外有的题目给的是A(10),是不是标示A(1)-A(10)?它和A(3,2)有什么区别?
还有我真没看出来怎么出来的这个运行结果,还请大家多多帮忙,谢谢了! 展开
展开全部
INTEGER A(3,2) 声明A是 3列2行 的整型数组。
READ(*,*) 。。。 从键盘以自由格式 输入数据。
WRITE(*,100) 。。。 第一个参数是文件号/设备号,用 * 表示是 屏幕,第二个参数是格式语句标号,你这里 是指 100 FORMAT(1X,2I4)
WRITE(*,*) 是向屏幕,按 自由格式(或叫默认格式)输出。
A(10) 是 一维数组。是一字长蛇阵。含10个元素,下标 1 到 10
A(3,2) 是 2维数组。是矩阵。 含 6个元素,3列2行。
-----------
WRITE(*,100)((。。。
打印出:
1 4
2 5
3 6
WRITE(*,200)((
打印出:
1 2 3
4 5 6
------------
。。。((A(I,J),J=1,2),I=1,3) -- 这叫“隐做表”,实际上是双重循环语句。
。。。((A(I,J),I=1,3),J=1,2) -- 这叫“隐做表”,实际上是另一个双重循环语句。
READ(*,*) 。。。 从键盘以自由格式 输入数据。
WRITE(*,100) 。。。 第一个参数是文件号/设备号,用 * 表示是 屏幕,第二个参数是格式语句标号,你这里 是指 100 FORMAT(1X,2I4)
WRITE(*,*) 是向屏幕,按 自由格式(或叫默认格式)输出。
A(10) 是 一维数组。是一字长蛇阵。含10个元素,下标 1 到 10
A(3,2) 是 2维数组。是矩阵。 含 6个元素,3列2行。
-----------
WRITE(*,100)((。。。
打印出:
1 4
2 5
3 6
WRITE(*,200)((
打印出:
1 2 3
4 5 6
------------
。。。((A(I,J),J=1,2),I=1,3) -- 这叫“隐做表”,实际上是双重循环语句。
。。。((A(I,J),I=1,3),J=1,2) -- 这叫“隐做表”,实际上是另一个双重循环语句。
追问
不好意思,我刚出差回来刚到家,那么write(*,100)为什么输出的数字是1 4啊?为什么不是1 2呢,怎么看出来的呢?
追答
WRITE(*,100)((A(I,J),J=1,2),I=1,3)
就是:
do i=1,3,1
do j=1,2,1
写 A(i,j)
end do
end do
所以 先输出 a(1,1) a(1,2)
它们的值 是 1 4 -- 来源于输入。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询