fortran中write什么意思

赵末摘花2022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
katti 共回答了20个问题 | 采纳率100%
你好!write就是写入的意思:
比如:
program a
implicit none
write(*,*)'I Love You!'
end
就会在DOS窗口下写上:I Love You!
希望我的回答对你有所帮助!
1年前

相关推荐

fortran中的::
gyzrd31年前1
喜欢的技巧 共回答了14个问题 | 采纳率92.9%
F90程序中的数据都有三个特征:类型、种别、属性,由类型说明语句来定义说明.其一般形式是:
类型说明[(种别说明)][,属性说明表] ::变量名表[=初值]
例:REAL(KIND=2),DIMENSION(1:10)::X,Y
说明变量X,Y都是实型,种别是2,属性是一维数组.这样X、Y实际上是两个种别参数为2的一维实型数组,各具有10个元素.在某些场合下,种别说明与属性说明可以省略,此时它的一般形式是最基本形式:
类型说明::变量名表
这个符号是在定义数据类型时所用的符号,我想你应该明白了吧
fortran求解PROGRAM exINTEGER::m(6),i,j,kDO k=1,6,1call sub1(m(
fortran求解
PROGRAM ex
INTEGER::m(6),i,j,k
DO k=1,6,1
call sub1(m(k))
ENDDO
END PROGRAM
SUBROUTINE sub1(n)
REAL::x
INTEGER::n
call random_seed ()
call random_number (x)
n=nint(x*100)
RETURN
END SUBROUTINE
为什么每次得到的m(1)~m(6)都一样?
tcl_cxx1年前1
爽哈哈 共回答了23个问题 | 采纳率82.6%
PROGRAM ex
INTEGER::m(6),i,j,k
call random_seed ()
DO k=1,6,1
call sub1(m(k))
ENDDO
END PROGRAM
SUBROUTINE sub1(n)
REAL::x
INTEGER::n
call random_number (x)
n=nint(x*100)
write(*,*) n
RETURN
END SUBROUTINE
random_seed 只需调用一次既可
fortran的一个简单程序总是出错
fortran的一个简单程序总是出错
用fortran编写一个简单的绘图程序,代码如下:
program gdemo1
use TextGraphLib
implicit none
call SetScreen( 10,10 ) 设定分辨率为10x10
call DrawLine( 1,1,10,10 ) 在(1,1)到(10,10)这两点间画一条线
call UpdateScreen() 显示绘图的结果
stop
end
编译时总是出错,提示error FOR1531:cannot find module TEXTGRAPHLIB
Error executing fl32.exe.
wilson002001sss1年前1
扶犁杖剑 共回答了22个问题 | 采纳率100%
我虽然不懂fortran,但我也看出来了:cannot find module TEXTGRAPHLIB
你第二行里用到了TextGraphLib,要引入相关文件.
fortran中e的x次方怎么表示?
lina02921年前2
baiyueguang519 共回答了18个问题 | 采纳率94.4%
如果您说的e是那个常数,那请用exp(x)
:)
如果它只是一个变量名,那请用e**x
:)
(x-y)^4的FORTRAN表达式是什么
温州女孩1年前1
nlmfh 共回答了21个问题 | 采纳率85.7%
(x-y)**4既可
4.回答下列问题.(1)什么是模块测试和集成测试?它们各有什么特点?(2)假设有一个由1000行FORTRAN语句构成的
4.回答下列问题.(1)什么是模块测试和集成测试?它们各有什么特点?(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对他进行测试期间将发现多少个错误?为什么?
(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例:
START
INPUT(A,B,C)
IF A>5
THEN X=10
ELSE X=1
END IF
IF B>10
THEN Y=20
ELSE Y=2
END IF
IF C>15
THEN Z=30
ELSE Z=3
END IF
PRINT(X,Y,Z)
STOP
xzbzs1年前1
dojin2 共回答了19个问题 | 采纳率84.2%
你是计算机1091的吧,我知道你了,你准备重修吧.
求fortran Error:Not a valid value for the char-expr in this c
求fortran Error:Not a valid value for the char-expr in this connect-spe怎么解决?
for(13) :Error:Not a valid value for the char-expr in this connect-spec.['readonly']
13行是这句 open (unit=1,file='d:cmapcmap_mon_v1101_79.txt',
access='sequential',status='readonly',form='formatted')
Error:Constants and expressions are invalid in read-only I/O lists.[RLONRAIN1]
银池雪虎1年前1
613sc_jyf 共回答了17个问题 | 采纳率76.5%
status
Character*(*).Describes the nature of the file to be opened.Can be one of the following:
●'OLD' The file must already exist.If the file exists,it is opened.If it does not exist,an I/O error occurs.
●'NEW' The file must not already exist.If the file does not exist,it is created.If it exists,an I/O error occurs.
●'SCRATCH' If you omit the file parameter when opening a file,the value of status defaults to 'SCRATCH'.Scratch files are temporary.They are deleted when the unit is closed or when the program terminates.
●'REPLACE' The file opened replaces one of the same name.If there is no existing file of the same name,a new file is created.
●'UNKNOWN' (Default) The run-time system first attempts to open the file with status equal to 'OLD',and then with status equal to 'NEW'.If the file exists,it is opened; if it does not exist,it is created.
●Using STATUS= 'UNKNOWN' avoids any run-time errors associated with opening an existing file using STATUS='NEW' or opening a nonexistent file using STATUS='OLD'.
x05Values of status affect only disk files,and are ignored for devices such as the keyboard or the printer.
没有发现'readonly'这个选项.
fortran时间函数获得的数据的单位是什么?例如cpu_time,date_and_time,system_clock
fortran时间函数获得的数据的单位是什么?例如cpu_time,date_and_time,system_clock 得到的数的单位是什么
highyb481年前1
孤心123 共回答了18个问题 | 采纳率77.8%
cpu_time返回的是一个浮点型,表示当前CPU运行时间(以秒计)
示例:
program test_cpu_time
real ::start,finish
call cpu_time(start)
!put code to test here
call cpu_time(finish)
print '("Time = ",f6.3," seconds.")',finish-start
end program test_cpu_time
date_and_time稍微复杂,但包括很多信息,包括日期,时间,时区,最后一个参数是一个大小为8的整型数组,记录了年,月,日,时区差(以分钟计),小时,分钟,秒,毫秒.
program test_time_and_date
character(8) ::date
character(10) ::time
character(5) ::zone
integer,dimension(8) ::values
!using keyword arguments
call date_and_time(date,time,zone,values)
call date_and_time(DATE=date,ZONE=zone)
call date_and_time(TIME=time)
call date_and_time(VALUES=values)
print '(a,2x,a,2x,a)',date,time,zone
print '(8i5))',values
end program test_time_and_date
system_clock用于决定处理器时钟周期.count_rate用于决定每秒CPU的时钟计数,
PROGRAM test_system_clock
INTEGER ::count,count_rate,count_max
CALL SYSTEM_CLOCK(count,count_rate,count_max)
WRITE(*,*) count,count_rate,count_max
END PROGRAM
fortran程序 第一次接触fortran语言,试着编写了一个简单的程序:program tsimplicit non
fortran程序
第一次接触fortran语言,试着编写了一个简单的程序:
program ts
implicit none
integer x
x=120
call ti(x)
end
subroutine ti(x)
real*8 x
i=x
print *,'i=',x
end
连接时会有警告:Warning:In the call to TI,actual argument #1 does not match the type and kind of the corresponding dummy argument.call ti(x)
但当我把所有的i和x交换,其他不变,就没有问题,能够的到正确的结果.
为什么fortran不能学C那样在形参前面加一个integer 就好?应该怎么改呢?
klyun20001年前1
生命的体验 共回答了14个问题 | 采纳率92.9%
错误原因如ls
至于“但当我把所有的i和x交换,其他不变,就没有问题,能够的到正确的结果.”是因为fortran的I-N规则,以字母IJKMLN开头的变量,如果没有定义,默认为整形,交换以后,虚参I是整形,所以就没有问题了
fortran rec
封印Aeacus1年前2
wsj7805 共回答了13个问题 | 采纳率84.6%
ec是用在write语句里的
格式为rec=r
表示当前访问文件中的第r个记录.
fortran 生成随机点(x,y)0
桃花桃叶渡1年前1
oliver231 共回答了14个问题 | 采纳率92.9%
program randPoint
implicit none
integer i
real ::x,y
call random_seed () !随机种子
do i=1,100
call random_number (x)
call random_number (y)
write(*,"(a,f6.3,f6.3,a)") "(",x,y,")"
end do
end program random
fortran的allocate的用法
fortran的allocate的用法
这段代码怎么有点不对
function igl(lxyz,ig,l)
implicit none
integer,parameter::integ=4
integer igl,lxyz(3),ig(3),l,i
integer,allocatable::rex(*),rey(*),rez(*),ref(*)
allocate(rex(l))
allocate(rey(l))
allocate(rez(l))
allocate(ref(3*l))
do i=1,3*l
ref(i)=0 initialize it to zero
enddo
.
还有后续的代码,提示是带allocate的所有行都有问题,我大概知道function里面好像根本不用声明allocate,直接声明integer rex(l)就可以.是不是这样啊.
斩人拔刀齐1年前1
真实的谎言_然 共回答了14个问题 | 采纳率78.6%
integer,allocatable::rex(*),rey(*),rez(*),ref(*)
改为
integer,allocatable::rex(:),rey(:),rez(:),ref(:)
如果数组的大小出现在虚参中,可以不用 allocatable,直接 integer rex(I),前提是 I 是虚参.
fortran求找错program dsdimplicit nonereal(8) ::a(2,2)data a/1,3
fortran求找错
program dsd
implicit none
real(8) ::a(2,2)
data a/1,3,2,4/
call brinv(a,2)
print*,a
end program dsd
subroutine brinv(a,n)
dimension a(n,n),is(n),js(n)
double precision a,t,d
l=1
do 100 k=1,n
d=0.0
do 10 i=k,n
do 10 j=k,n
if(abs(a(i,j)).gt.d) then
d=abs(a(i,j))
is(k)=i
is(K)=j
end if
10 continue
if(d+1.0.eq.1.0) then
l=0
write(*,20)
return
end if
20 format(1x,'err**not inv')
do 30 j=1,n
t=a(k,j)
a(k,j)=a(is(k),j)
a(is(k),j)=t
30 continue
do 40 i=1,n
t=a(i,k)
a(i,k)=a(i,js(k))
a(i,js(k))=t
40 continue
a(k,k)=1/a(k,k)
do 50 j=1,n
if(j.ne.k)then
a(k,j)=a(k,j)*a(k,k)
end if
50 continue
do 70 i=1,n
if(i.ne.k)then
do 60 j=1,n
if(j.ne.k)then
a(i,j)=a(i,j)-a(i,k)*a(k,j)
end if
60 continue
end if
70 continue
do 80 i=1,n
if(i.ne.k)then
a(i,k)=-a(i,k)*a(k,k)
end if
80 continue
100 continue
do 130 k=n,1,-1
do 110 j=1,n
t=a(k,j)
a(k,j)=a(js(k),j)
a(js(k),j)=t
110 continue
do 120 i=1,n
t=a(i,k)
a(i,k)=a(i,is(k))
a(i,is(k))=t
120 continue
130 continue
return
end
cielyciely1年前1
linghuchong001 共回答了16个问题 | 采纳率87.5%
不知道你这程序是干什么的
但感觉你里边的一个 is(K)=j 应该改成 js(K)=j
改了后可以运行
请问下面这几句FORTRAN语句是什么意思?
请问下面这几句FORTRAN语句是什么意思?
integer(Ikind),allocatable :: JE(:,:),JN(:,:) 括号中为什么要加一个IKIND?
integer(Ikind), intent(out) :: JC(6) 这句话是定义了个啥啊?
L=int(PJ(1,I),Ikind) 这句话的INT语句怎么解释额?
先谢谢大家了!
zxzdodo1年前1
甘草合计 共回答了21个问题 | 采纳率90.5%
lkind 在前面定义了,肯定是一个 integer 的 parameter 常量.
它用来表示整数的 kind.
所谓 kind ,也就是整型的长度.具体值因不同编译器而不同.大多数主流编译器,如果 kind 是 2,表示短整型,如果是 4,则表示整型(32位).如果 kind 是 8 则表示长整型.
如果写成
integer(2)
integer(4)
integer(8)
或许你会更熟悉它们一些.
之所以用 lkind 代替,是为了以后修改程序方便.试想,如果你要把整个程序的 integer(4) 改为 integer(8),是具有较大工作量的,而用 lkind代替,以后只需要修改 lkind 的值既可.
另外,如果你的代码更换为其他编译器,正如我上面所说,不同编译器,对 kind 的具体值规定不同,也需要对 lkind 进行修改.
L=int(PJ(1,I),Ikind) 也是处于同样的目的.int 函数接收第二个参数来确定转换的 kind
integer(Ikind),intent(out) ::JC(6) 这句话,我相信你能理解.定义一个kind为 lkind 的整型数组,名字叫 JC,大小是 6.
intent(OUT) 可能你理解有困难,他表示,JC 这个数组,出现在函数虚参里,而且作为该函数的一个输出参数.在该函数返回时,JC 必须赋值(因为它是一个输出参数)
fortran语句这句什么意思write(*,'(a9,i3,2(a11,i5))') 后面的这个格式哪个大神可以解释下
u655231年前1
半点阳光 共回答了21个问题 | 采纳率71.4%
F77的用法,一般用标号指向一个format(格式语句).这里合并起来写了.

(a9,i3,2(a11,i5))表示的含义应该是:
输出宽度为9的实数、宽度为3的整数、然后输出2个(宽度为11的实数、宽度为5的整数)
fortran 中 read(1,*)(TOUT(I),I=1,
最耐鬼鬼1年前1
什么叫任务未完成 共回答了17个问题 | 采纳率88.2%
从一个名为fort.1或已被打开且通道号为1的文本文件中读入6个数付给数组tout
Fortran小问题,EXTERNAL FDIMENSION X(3),Y(3)DATA X /3*0.0/B = 2.
Fortran小问题,
EXTERNAL F
DIMENSION X(3),Y(3)
DATA X /3*0.0/
B = 2.0
N=3
M=10
EPS=1.0E-5
CALL DNMTC(X,N,B,M,EPS,F,Y)
WRITE(*,*)
DO 10 I=1,N
10 WRITE(*,100) I,X(I)
WRITE(*,*)
100 FORMAT(5X,'X(',I2,1X,')=',E13.6)
END
FUNCTION F(X,N)
DIMENSION X(N)
F1=3*X(1)+X(2)+2*X(3)*X(3)-3.0
F2=-3*X(1)+5*X(2)*X(2)+2*X(1)*X(3)-1
F3=25*X(1)*X(2)+20*X(3)+12
F=SQRT(F1*F1+F2*F2+F3*F3)
END
SUBROUTINE DNMTC(X,N,B,M,EPS,F,Y)
DIMENSION X(N),Y(N)
DOUBLE PRECISION R
REAL NRND1
A=B
K=1
R=1.0D0
Z=F(X,N)
10 IF(A.GE.EPS) THEN
L=L+1
x05DO 20 I=1,N
20 Y(I)=-A+2.0*A*NRND1(R)+X(I)
Z1=F(Y,N)
K=K+1
IF(Z1.GE.Z) THEN
IF(K.GE.M) THEN
x05K=1
x05A=A/2.0
END IF
GOTO 10
ELSE
K=1
x05DO 30 I=1,N
30 X(I)=Y(I)
Z=Z1
IF(Z.GE.EPS) GOTO 10
END IF
END IF
END
运行后:
--------------------Configuration:DNMTC0 - Win32 Debug--------------------
Compiling Fortran...
D:MSDevMSDEV98MyProjectsDNMTC0DNMTC0.FOR
Linking...
DNMTC0.OBJ :error LNK2001:unresolved external symbol _NRND1@4
Debug/DNMTC0.exe :fatal error LNK1120:1 unresolved externals
Error executing link.exe.
DNMTC0.exe - 2 error(s),0 warning(s)
tiker1年前1
laoda_ice 共回答了18个问题 | 采纳率83.3%
NRND1 如果是函数,请书写它.
NRND1 如果是数组,请声明它.
一元二次方程求根 fortran
一元二次方程求根 fortran
program main
write(*,*)"a="
read(*,*)a
write(*,*)"b="
read(*,*)b
write(*,*)"c="
read(*,*)c
real::d,e,x1,x2
d=b*b-4*a*c
e=sqrt(d)
x1=(-b+e)/2.0/a
x2=(-b-e)/2.0/a
write(*,*)x1
write(*,*)x2
end
这是小弟编的求根公式的程序,不考虑虚根,能告诉一下错误在哪吗?老说有一个error~
板板9131年前1
在何处1 共回答了15个问题 | 采纳率80%
eal::d,e,x1,x2 要放在所有可执行语句之前.
write(*,*)"a=" 引号要用单引号.
fortran severe 161 数组超界问题,
fortran severe 161 数组超界问题,
program shuzhichuanre
implicit none
integer n,i
real,allocatable::a(:),b(:),c(:),d(:),g(:),q(:),o(:)
allocate(a(n),b(n),c(n),d(n),g(n),q(n),o(n))
write(*,*)'请输入控制体个数n:'
read(*,*) n
write(*,*)'请输入已知边界o(0)的值:'
read(*,*) o(0)
write(*,*)'请输入已知边界o(n)的值:'
read(*,*) o(n)
do i=1,n-1
a(i)=n**2-2*n
b(i)=2*n**2+32
c(i)=n**2+2*n
d(i)=0
enddo
d(1)=d(1)+a(1)*o(0)
g(1)=c(1)/b(1)
q(1)=d(1)/b(1)
do i=2,n-1
g(i)=c(i)/(b(i)-a(i)*g(i-1))
q(i)=(d(i)+a(i)*q(i-1))/(b(i)-a(i)*g(i-1))
enddo
10 o(n-1)=g(n-1)*o(n)+q(n-1)
n=n-1
x09if(n>1) then
x09goto 10
x09endif
write(*,*) o
end
朝发披香殿1年前1
瑞林 共回答了18个问题 | 采纳率88.9%
allocate(a(n),b(n),c(n),d(n),g(n),q(n),o(n))
这一句要放到read(*,*) n 之后
还有一个错误,fortran的数组是从1开始的,当你改正上面的错误了之后,接下来会抱错关于o(0)的问题,所以建议修改.
为啥我写的fortran结果算出来都是零,程序如下.
为啥我写的fortran结果算出来都是零,程序如下.
program ex01
use imsl
parameter(n=50,l=1,p=1,h=l/(n-1))
parameter(pi=3.1415926535)
dimension a(n-2,n),b(n-2,1),y(n,1),q(n,1)
open(1,file='naodu.dat')
y(:,:)=0
do i=1,n
q(i,1)=p*sin((i-1)*h*pi/l)
end do
do i=1,n
write(*,*) q(i,1)
end do
end
sx69881年前1
6635822 共回答了22个问题 | 采纳率95.5%
program ex01
implicit none
integer , parameter :: n=50 , l=1 , p=1
real , parameter :: h= 1.0* l / (n-1)
Real , parameter :: pi=3.1415926535
Real :: a(n-2,n),b(n-2,1),y(n,1),q(n,1)
integer :: i
y(:,:)=0
do i=1,n
q(i,1)=p*sin((i-1)*h*pi/l)
end do
do i=1,n
write(*,*) q(i,1)
end do
end program ex01h=l/(n-1) = 0
注意 l 和 n 是整数.
另外你的编程风格非常不好,建议这样写.
怎么用FORTRAN写:已知三角形三点坐标,求三角形面积?
lben656181年前1
游骑兵1015 共回答了11个问题 | 采纳率81.8%
write(*,*) ' 请输入三角形三个顶点的坐标 x1,y1,x2,y2,x3,y3:'read(*,*) x1,y1,x2,y2,x3,y3a=sqrt((x2-x1)^2+(y2-y1)^2)b=sqrt((x3-x1)^2+(y3-y1)^2)c=sqrt((x3-x2)^2+(y3-y2)^2)L=(a+b+c)/2s=sqrt(L*(L-a)*(L-b)*...
fortran中的Loaded 'ntdll.dll',no matching symbolic information
fortran中的Loaded 'ntdll.dll',no matching symbolic information found.
用FORTRAN90编程,运行到一半时,闪了一下就退出了.
提示是:
Loaded 'ntdll.dll',no matching symbolic information found.
Loaded 'C:WINDOWSsystem32kernel32.dll',no matching symbolic information found.
The thread 0xFD4 has exited with code 0 (0x0).
The program 'E:workprogramDebugsj0.exe' has exited with code 0 (0x0).
这是怎么回事啊,要怎么改啊
程序如下:
program frequency
implicit none
REAL N,ZH,ZL,F0,FB,F1,AA,BB,CC,FH,FL
REAL KAOH,KBOH,KA1H,KAOL,KBOL,KA1L
real C,B0
WRITE(*,*)"请输入N和ZH"
read(*,*) N,ZH
FH=(N*ZH)/60
write(*,*) "FH=",FH
WRITE(*,*)"请输入 B0"
read(*,*) B0
WRITE(*,*)"请输入 F0,FB,F1"
read(*,*) F0,FB,F1
C=(real(N)/60.0)**2*B0
AA=sqrt(F0**2+C)
BB=sqrt(FB**2+C)
CC=sqrt(F1**2+C)
KAOH=(AA-FH)*100/FH
KBOH=(BB-FH)*100/FH
KA1H=(CC-FH)*100/FH
write (*,*) "AA=",AA
write (*,*) "BB=",BB
write (*,*) "CC=",CC
write (*,*) "KA0H=",KAOH
write (*,*) "KB0H=",KBOH
write (*,*) "KA1H=",KA1H
WRITE(*,*)"请输入 ZL"
read(*,*) ZL
FL=(N*ZL)/60
write (*,*) "FL=",FL
KAOL=(AA-FL)*100/FL
KBOL=(BB-FL)*100/FL
KA1L=(CC-FL)*100/FL
write (*,*) "KA0L=",KAOL
write (*,*) "KB0L=",KBOL
write (*,*) "KA1L=",KA1L
end
刚学着编程,运行到 read(*,*) ZL就没了
想吃红烧肉1年前1
angel2007ml 共回答了16个问题 | 采纳率93.8%
你可能是按错工具栏的按钮了,要按那个感叹号的,或者快捷键 Ctrl+F5
你按的是调试的执行按钮,没有设置断点,所以直接正常退出了.
请问FORTRAN语言中逻辑运算符号 一题? L1=.T. L2=.F. L3=3.5 GT 7.6 L4=L2.OR.
请问FORTRAN语言中逻辑运算符号 一题? L1=.T. L2=.F. L3=3.5 GT 7.6 L4=L2.OR.L3.AND.L1 WRITE (*,*)L4
LOGICAL L1,L2,L3,L4
L4运算结果为 TRUE ,还是FALSE
我考虑的是 L4运算过程 等同于 L4= L2 .OR. (L3.AND.L1)
lskmvb1年前1
perhapsukulele 共回答了14个问题 | 采纳率78.6%
L4运算结果为FALSE
Fortran 中intent表示什么意思
随便看看_01年前1
xinye9 共回答了23个问题 | 采纳率82.6%
intent(IN) 表示这个参数是输入的
intent(OUT) 表示参数是输出的
intent(INOUT)表示这个参数同时用于两个方向的数据传递
在FORTRAN中输入任意一个数,下列程序执行后k的值为什么一定是0?Read(*,*)x k=SIN(x) WRITE
在FORTRAN中输入任意一个数,下列程序执行后k的值为什么一定是0?Read(*,*)x k=SIN(x) WRITE(*,*)k
PS:我认为k=0,或k=1
天王子1年前3
leastlazy 共回答了14个问题 | 采纳率92.9%
我估计,由于你随便输入值赋给x,不会恰好是pi/2或者-pi/2的倍数,所以运算后,-1
求fortran高手帮我看一下这段用高斯乔丹消元法解方程组的代码为什么总是得不到想要的结果
求fortran高手帮我看一下这段用高斯乔丹消元法解方程组的代码为什么总是得不到想要的结果
这里的线性方程组对应的系数矩阵是希伯特矩阵
这是我的f90文件下载地址 希望有人能回答一下这个问题 感激不尽
qirimingquan1年前1
太阳最红我最亲 共回答了23个问题 | 采纳率95.7%
主要问题:调用gaussj时,实参与虚参类型不一致.您在主程序中定义数组a和b是双精度8个字节的,而在子程序中却是默认的4个字节.我输入x(1:3)=(5.5 ,5.5, 5.5)时输出结果如下图:
SUBROUTINE gaussj(a,n,np,b,m,mp) !引入GaussJ消元法INTEGER m,mp,n,np,NMAXREAL*8 a(np,np),b(np,mp)PARAMETER (NMAX=50)INTEGER i,icol,irow,j,k,l,ll,indxc(NMAX),indxr(NMAX),ipiv(NMAX)REAL big,dum,pivinvdo 11 j=1,nipiv(j)=011continuedo 22 i=1,nbig=0.do 13 j=1,nif(ipiv(j).ne.1)thendo 12 k=1,nif (ipiv(k).eq.0) thenif (abs(a(j,k)).ge.big)then big=abs(a(j,k)) irow=j icol=kendifelse if (ipiv(k).gt.1) thenpause 'singular matrix in gaussj'endif12continueendif13continueipiv(icol)=ipiv(icol)+1if (irow.ne.icol) thendo 14 l=1,ndum=a(irow,l)a(irow,l)=a(icol,l)a(icol,l)=dum14continuedo 15 l=1,mdum=b(irow,l)b(irow,l)=b(icol,l)b(icol,l)=dum15continueendifindxr(i)=irowindxc(i)=icolif (a(icol,icol).eq.0.) pause 'singular matrix in gaussj'pivinv=1./a(icol,icol)a(icol,icol)=1.do 16 l=1,na(icol,l)=a(icol,l)*pivinv16continuedo 17 l=1,mb(icol,l)=b(icol,l)*pivinv17continuedo 21 ll=1,nif(ll.ne.icol)thendum=a(ll,icol)a(ll,icol)=0.do 18 l=1,na(ll,l)=a(ll,l)-a(icol,l)*dum18continuedo 19 l=1,mb(ll,l)=b(ll,l)-b(icol,l)*dum19continueendif21continue22continuedo 24 l=n,1,-1if(indxr(l).ne.indxc(l))thendo 23 k=1,ndum=a(k,indxr(l))a(k,indxr(l))=a(k,indxc(l))a(k,indxc(l))=dum23continueendif24continuereturn end
program mainimplicit none
integer,parameter :: row=3integer,parameter :: col=3integer nn!关于xinteger mm!关于binteger iiinteger jj integer kkreal*8:: HI(row,col) real*8 AI(row,col) !储存矩阵HI的值real*8 x(row)real*8 b(row)real*4 iii !整数型与浮点型的转换real*4 jjj
do ii=1,row,1!给H矩阵赋值do jj=1,col,1iii=iijjj=jjHI(ii,jj)=1/(iii+jjj-1)AI(ii,jj)=HI(ii,jj)!将初始矩阵H的值赋给替换矩阵Awrite(*,"(A3,I1,I1,A3,F9.4)")"H(",ii,jj,")=",HI(ii,jj)enddoenddo
write(*,*) "The substitude matrix is: " !显示替换矩阵Ado ii=1,row,1do jj=1,col,1write(*,"(A3,I1,I1,A3,F9.4)")"A(",ii,jj,")=",AI(ii,jj)enddoenddowrite(*,*) "Enter the x: " !给x赋值do nn=1,row,1read(*,*) x(nn)enddo
do mm=1,row,1!求b的值do jj=1,col,1b(mm)=b(mm)+HI(mm,jj)*x(jj)enddowrite(*,"(A3,I1,A3,F9.4)")"b(",mm,")=",b(mm)enddo!以上代码将矩阵H、解X、常数b均已确定
call gaussj(HI,row,row,b,row,row)write(*,*) ""write(*,"(A20)") "The result is : " !显示经gaussj消元法得到的矩阵Hdo ii=1,row,1do jj=1,col,1write(*,"(A3,I1,I1,A3,F9.4)")"H(",ii,jj,")=",HI(ii,jj)enddoenddo
do mm=1,row,1write(*,*)"b(",mm,")=",b(mm)enddo
do ii=1,row,1x(ii)=0enddo
write(*,*) "The solution vectors are: "!显示解do ii=1,row,1do kk=1,col,1x(ii)=x(ii)+AI(ii,kk)*b(kk)enddowrite(*,*)"x(",ii,")=",x(ii)enddo stop end
关于fortran goto 语句
关于fortran goto 语句
小白求教:
比如这个语句
go to (210,220,230,240,250,260,270,280),2
逗号后面的数字“2”表示什么意思?
人在千里1年前1
liyi315504 共回答了16个问题 | 采纳率93.8%
写2就是跳到括号里第二个标号,220
fortran 解微分方程高手来 要多少分就加多少分
haozi72213401年前1
lulushuang1023 共回答了13个问题 | 采纳率61.5%
补充:l 微分方程求解问题意大利生物学家Ancona曾致力于鱼类种群相互制约关系的研究,他从第一次世界大战期间,地中海各港口捕获的几种鱼类捕获量百分比的资料中,发现鲨鱼的比例有明显增加.为了反映在没有人工捕获的自然环境中食饵与捕食者之间的制约关系,建立一个食饵—捕食者系统的数学模型如下:①x1(t),x2(t)分别是食饵、捕食者(鲨鱼)在t时刻的数量; ②r1,r2是食饵、捕食者的固有增长率;③λ1是捕食者掠取食饵的能力,λ2是食饵对捕食者的供养能力;给定一组具体数据求解.
fortran里的这个错误什么意思,必有重谢unrecognized token '#'skip
fortran里的这个错误什么意思,必有重谢unrecognized token '#'skip
fortran里的这个错误什么意思,必有重谢unrecognized token '#'skipped paramenter(nn=40)
仙米奴儿1年前1
plki 共回答了17个问题 | 采纳率88.2%
有一个不认识的字符 # 出现在不应该出现的位置.
Fortran中开根号函数QRST的调用
Fortran中开根号函数QRST的调用
我的程序:
program examimplicit nonereal vreal sqrtopen(2,file='F:6.txt',status='replace') v=sqrt(4)write(2,*) vend
结果出错提示:
Error:This name does not have a type,and must have an explicit type.[SQRT]
Warning:Arguments' data types are incompatible with intrinsic procedure,assume EXTERNAL.[SQRT]
请问怎么调用啊?
不平氏1231年前1
GRTA 共回答了25个问题 | 采纳率92%
应该这样program exam real v open(2,file='6.txt',status='unknown') v=sqrt(4.0)write(2,*) vclose(2)call system('c:windowsnotepad.exe 6.txt')end既然V是realsqrt(4.0)中间应该是4.0
下面程序的功能是输入一组正整数,以数字-1为结尾标志,计算并输出所有数据之和.用fortran写
新浪zc6_11年前1
liyht 共回答了22个问题 | 采纳率86.4%
代码:program data_sum
implicit none
integer :: num, sum = 0

do
read (*,*) num
if (num .eq. -1) then
exit
end if
if (num .gt. 0) then
sum = sum + num
end if
end do
write (*,'(a, i6)') 'sum = ', sum

end program data_sum运行结果:1
2
3
4
5
6
-1
sum =21
谁能把每句fortran语言都给我翻译一下
谁能把每句fortran语言都给我翻译一下
integer row,i,j,k,n
real s
real,dimension(:,:),allocatable::a,l,u
real,dimension(:),allocatable::b,x,y
read*,row
allocate(a(row,row))
read*,((a(i,j),j=1,row),i=1,row)
allocate(b(row))
read*,(b(i),i=1,row)
allocate(y(row))
allocate(x(row))
do k=1,row-1
do i=k+1,row
a(i,k)=a(i,k)/a(k,k)
do j=k+1,row
a(i,j)=a(i,j)-a(i,k)*a(k,j)
end do
end do
end do
allocate(l(row,row))
do i=1,row
do j=1,row
if(i>j)then
l(i,j)=a(i,j)
elseif(i==j)then
l(i,j)=1
else if(ij)then
u(i,j)=0
end if
end do
end do
print*,'a=',((a(i,j),j=1,row),i=1,row)
print*,'l=',((l(i,j),j=1,row),i=1,row)
print*,'u=',((u(i,j),j=1,row),I=1,row)
n=10
do while(n>0)
y(1)=b(1)/l(1,1)
do i=2,row
sum=0
do j=1,i-1
sum=sum+l(i,j)*y(j)
end do
y(i)=(b(i)-sum)/l(i,i)
end do
print*,(y(i),i=1,row)
x(row)=y(row)/u(row,row)
do i=row-1,1,-1
sum1=o
do j=i+1,row
sum1=sum1+u(i,j)*x(j)
end do
x(i)=(y(i)-sum1)/u(i,i)
end do
print*,(x(i),i=1,row)
s=abs(x(1))
do j=2,row
if(abs(x(j))>s)then
s=abs(x(j))
end if
end do
do i=1,row
b(i)=x(i)/s
end do
n=n-1
end do
end
INTEGER ROW,COL,I,J,N
REAL,DIMENSION(:,:),ALLOCATABLE::B
REAL,DIMENSION(:),ALLOCATABLE::X,G
READ*,row,col
allocate(b(row,col))
read*,((b(i,j),j=1,col),i=1,row)
allocate(x(col),g(col))
read*,(x(i),i=1,col)
read*,(g(i),i=1,col)
read*,n
do while(n.ne.0)
do i=1,col
sum=0
do j=1,col
sum=sum+b(i,j)*x(j)
end do
x(i)=sum+g(i)
end do
n=n-1
print*,(x(i),i=1,col)
end do
end
scwxc1年前1
qing333 共回答了27个问题 | 采纳率96.3%
我挑了其中一些有代表性的语句进行了注释,惊叹号(!)是Fortran里的注释.
很多语句可以举一反三.
integer row,i,j,k,n
!声明了五个整型变量
real s
!声明实型变量
real,dimension(:,:),allocatable::a,l,u
!声明实型二维数组
real,dimension(:),allocatable::b,x,y
!声明实型一维数组
read*,row
!从键盘读数据row
allocate(a(row,row))
!给二维数组a分配内存空间
read*,((a(i,j),j=1,row),i=1,row)
!从键盘读数组a
allocate(b(row))
read*,(b(i),i=1,row)
allocate(y(row))
allocate(x(row))
do k=1,row-1
!循环语句,k从1循环到row-1
do i=k+1,row
a(i,k)=a(i,k)/a(k,k)
do j=k+1,row
a(i,j)=a(i,j)-a(i,k)*a(k,j)
end do
!变量j的循环体结束
end do
end do
allocate(l(row,row))
do i=1,row
do j=1,row
if(i>j)then
!判断语句,i是否大于j
l(i,j)=a(i,j)
elseif(i==j)then
l(i,j)=1
else if(ij)then
u(i,j)=0
end if
end do
end do
print*,'a=',((a(i,j),j=1,row),i=1,row)
!在屏幕上输出数组a
print*,'l=',((l(i,j),j=1,row),i=1,row)
print*,'u=',((u(i,j),j=1,row),I=1,row)
n=10
do while(n>0)
!满足n>0时循环
y(1)=b(1)/l(1,1)
do i=2,row
sum=0
do j=1,i-1
sum=sum+l(i,j)*y(j)
end do
y(i)=(b(i)-sum)/l(i,i)
end do
print*,(y(i),i=1,row)
x(row)=y(row)/u(row,row)
do i=row-1,1,-1
!i从row-1循环到1,步长是-1,也就是倒着循环
sum1=o
do j=i+1,row
sum1=sum1+u(i,j)*x(j)
end do
x(i)=(y(i)-sum1)/u(i,i)
end do
print*,(x(i),i=1,row)
s=abs(x(1))
!abs是绝对值函数
do j=2,row
if(abs(x(j))>s)then
s=abs(x(j))
end if
end do
do i=1,row
b(i)=x(i)/s
end do
n=n-1
end do
end
!最后的end代表程序结束
!这里应该是开始了一个子程序
INTEGER ROW,COL,I,J,N
REAL,DIMENSION(:,:),ALLOCATABLE::B
REAL,DIMENSION(:),ALLOCATABLE::X,G
READ*,row,col
allocate(b(row,col))
read*,((b(i,j),j=1,col),i=1,row)
allocate(x(col),g(col))
read*,(x(i),i=1,col)
read*,(g(i),i=1,col)
read*,n
do while(n.ne.0)
!.ne.是not equal的意思,也就是判断n是否不等于0
do i=1,col
sum=0
do j=1,col
sum=sum+b(i,j)*x(j)
end do
x(i)=sum+g(i)
end do
n=n-1
print*,(x(i),i=1,col)
end do
end
fortran达人帮忙改下程序,错误已指出,但我不懂改,主程序错误argument S (number 6)
fortran达人帮忙改下程序,错误已指出,但我不懂改,主程序错误argument S (number 6)
主程序
program main
external f1,f2
double precision x,y,E,a,b,f1,f2
open(9,file="v(x,y).dat",status='unknown')
a=3.14/3.0
b=2.0*3.14/3.0
do i=1,n
x=0.0-2.0+i*0.05
if(x
绝望空酒瓶1年前1
zyj168 共回答了17个问题 | 采纳率76.5%
正确程序如下:----------------------------
!主程序
program main
external f1,f2
double precision x,y,E,a,b,f1,f2,Ex,Ey
open(9,file="v(x,y).dat",status='unknown')
a=3.14/3.0
b=2.0*3.14/3.0
do i=1,n
x=0.0-2.0+i*0.05
if(x
fortran ichar(str(i:i)) .eq.0
fortran ichar(str(i:i)) .eq.0
if(ichar(str(i:i)) .eq.0) exit,if语句括号里的是什么意思?
Kelly_7751年前1
钟爱你一人 共回答了11个问题 | 采纳率72.7%
如果 str 字符串的第 i 个字母等于 0,则退出(循环)
ichar 是取字符的 ASCII 码.为 0 的字符与 C 语言的 类似.
fortran 做 函数图像 r=a*(1+cos(b))
fortran 做 函数图像 r=a*(1+cos(b))
fortran 做 函数图像 r=a*(1+cos(b)) 急用!100分 最好有每一步的解释.AFC hallo-world
密银之鹰1年前1
hotsummer990219 共回答了21个问题 | 采纳率90.5%
看不到 我小学生 看楼下怎么解释 我也学习一下
求一个fortran源程序,求出1到1000的素数.按每行十个素数输出.
gogocc1年前1
上帝de仁慈 共回答了17个问题 | 采纳率94.1%
建议认真学习 Fortran 语法.
作业是你提高的很好方式,也是锻炼自己的重要途径.
如果你连作业题都求助,让别人给你现成的,你永远不会进步.
fortran 中 if(block.eq.'gene') call rgene是什么意思.解释if格式意义就行.
hewenbo1年前1
jxhym2004 共回答了13个问题 | 采纳率92.3%
如果 block 等于 'gene',调用 rgene 函数
PYTHON里有没有和FORTRAN 里 NINT 函数等价的函数?
PYTHON里有没有和FORTRAN 里 NINT 函数等价的函数?
或者其他替代算法.
三叶草在20061年前1
ofzerg 共回答了18个问题 | 采纳率88.9%
NINT是四舍五入取整
在python中用round直接完成.
算法上其实是加0.5后再截尾取整
3.4 +0.5得3.9 ...截尾得3
3.6 +0.5得4.1 ...截尾得4
如下.fortran 原函数是要分别求大于0等于0小与0的3种情况.为什么可以程序可以用10,20,30表示
如下.fortran 原函数是要分别求大于0等于0小与0的3种情况.为什么可以程序可以用10,20,30表示
REAL X
READ*,X
IF(X)10,20,30
10 Y=X*X+1
GOTO 100
20 Y=SIN(X+1)
GOTO 100
30 Y=SQRT(X+2)
100 PRINT*,"Y=",Y
END
zeng_1571年前1
qq通缉令 共回答了19个问题 | 采纳率100%
10 20 30 是标号,分别是:
10代表 Y=X*X+1
20 代表Y=SIN(X+1)
30 代表Y=SQRT(X+2)
IF(X)10,20,30的意思是判断x的值三种情况,小于0则转到10代表的那一行,等于0则转到20,大于0则转到30那一行
一段fortran程序,用于生成随机数,哪里出问题了
一段fortran程序,用于生成随机数,哪里出问题了
real*8 function random()
implicit double precision(a-h,o-z)
common/random_s/x
x=dmod(x*1953125d0,8388593d0)
random=(x+0.1d0)/8388593d0
return
end
block data
real*8 x
common/random_s/x
data x/235621d0/
end block data
另外,问题是The type of the function reference does not match the type of the function definition.
有人说是形参和实参类型不一致,求问该怎么改动
我在调用的时候语句是a=random()
请问哪里出现什么问题了吗?
该怎么解决?
aclver1年前1
过儿的姑姑 共回答了15个问题 | 采纳率93.3%
你给出的 random 没有任何虚参,不存在类型不一致的情况.
1.随机数,Fortran 有内置的函数random_number可以实现.
2.如果你要找出你的问题,建议你给出完整代码.
fortran语言中DO S [,] i=e1,e2,[,
xin_huo1年前3
cumtzxy 共回答了19个问题 | 采纳率100%
这不是代码,而是代码的解释.[] 中的部分为可写,可不写.
意思是,可以写为:
Do s i = e1 ,e2

Do i = e1 ,e2

Do s i = e1 ,e2 ,e3

Do i = e1 ,e2 ,e3
这句是循环语句,意思是让 i 从 e1 循环到 e2,每次增加 e3(步长).如果 e3 没有写,默认为 1
s 的意思是指定结束语句.如果没有指定结束语句,则以 End Do 结束
fortran 的语句: write(6,*) 'speed of sound=',rho 是什么意思
wohenkuaile1年前1
xyhsky 共回答了20个问题 | 采纳率85%
这是一个输出语句,输出目标是 6 号文件.自由格式.
在某些编译器下,6号文件默认是显示器.
输出内容为:Speed of sound = 和 rho 的值.
假设 rho 为 10,则输出 Speed of sound = 10
这些都是Fortran最基本的赋值和函数调用语句.
我相信你的代码远远不止这一句,而这一句,也不是你全部的障碍.其他语句你肯定也看得吃力.
如果你连这个还看不明白,那么你需要的是系统的学习 Fortran.
这样断章取义的抽出一两个语句来求助,对你没有太大的帮助.
fortran 中的% DO iKey=1,inpKey%nKeys IF (inpKey%status /= mySt
fortran 中的%
DO iKey=1,inpKey%nKeys
IF (inpKey%status /= myStatus_Run) EXIT
IF (keyWord == inpKey%keys(iKey)%name) found = .TRUE.
END DO
49890241年前1
houlei1985aaa 共回答了22个问题 | 采纳率95.5%
比如 a%b 表示结构体变量 a 的 b 成员
类似于 C 语言的 a.b,结构体(struct)
inpKey%nKeys
inpKey 是一个结构体,你可以搜索一下 Type inpKey 找到它的定义
nKeys 是它的一个结构体成员.就这样
用FORTRAN判断一个整数能否被3和5整除
fitty1年前1
ourunyang 共回答了26个问题 | 采纳率84.6%
print*,mod(x,3),mod(x,5)
fortran或者其他编程高手来帮我编编这个程序~
fortran或者其他编程高手来帮我编编这个程序~
例1:盲波束形成方向图性能.两信源的Doppler频率分别为40Hz和45Hz,DOA分别为20°和-20°.由于它们的Doppler频率为5Hz,小于fs/K(200/32≈6.3Hz)用传统傅氏变换难以分辨.采用式(9)的盲波束形成方法估计得到Doppler频率后,用式(8)计算盲波束形成的权系数Ws,opt(fd),图1给出了对应于第一个信源(fd1=40Hz,θ1=20°)的盲波束形成方向图.由图1可见,方向图在θ1方向上形成主瓣,而在θ2=-20°方向上形成零点,其方向图性能非常理想,其中阵元幅相误差方差为20%,进一步的实验是将θ2向θ1方向靠近,当两方向位于差不多一个波束宽度之内时,盲波束形成的方向图在θ2方向上仍能形成深零陷,但是θ1方向并不是它的峰值点,这是由于波束形成的分辨率的限制,使得方向图在形成零陷的同时将主瓣挤偏.
Ws,opt(fd)=R-1sγs(fd) (8)
{ dl,l=1,2,…,p}=arg maxfd{?ξ(fd)=γHs(fd)R-1sγs(fd)} (9)
线性约束最小方差(LCMV)波束形成是自适应波束形成中最为常用的方法之一,传统的LCMV波束形成器要求已知目标信号的导向矢量a(θ),在导向约束最小方差准则下的最优权矢量可写作:
Wopt=μR-1sa(θ0) (3)
式中μ为任一非零常数,Rs为阵列空域相关矩阵,实际中用阵列快拍矢量来估计,即 ,当a(θ0)未知时,上述自适应波束形成难以进行.阵列信号处理中,同一传感器在一短时内的特性可认为恒定,通常假设仅空域采样有误差,而时域采样较精确,勿需考虑误差,基本符合实际.下面给出不利用导向矢量而利用Doppler信息的目标函数实现盲ADBF,从而完成DOA-Doppler稳健估计.
设N维列矢量Ws是ADBF器的加权系数,则阵列波束形成的第k次输出为
y(k)=WHsXs(k),k=1,2,…,k (4)
如果适当调整权矢量Ws,使其与除a(θl)外的所有其它方向矢量a(θj),(j≠l),都正交,且与a(θl)的内积近似等于s-1l,则y(k)与exp〔j(k-1)ψ(fdl)〕接近.因此,对如下目标函数寻优
(5)
可以求出P个局部最小点,得到P个Doppler估计 dl,l=1,2,…,P和P个空域权矢量Ws,l(l=1,2,…,P),即P个波束,由此得到P个DOA的估计值 l(l=1,2,…,P).
为了求解式(5),展开目标函数得
Fs(Ws,fd)=WHsRsWs+K-WHsγs(fd)-γHs(fd)Ws (6)
式中Rs与式(3)中的相同,而N维列矢量
(7)
式中Δl(fd)=ψ(fd)-ψ(fdl),(l=1,2,…,p);sincΔ= ,当fd已知时,由式(7)可知γs(fd)就是对阵列各单元同时作Doppler滤波后的阵列矢量.由式(6),先固定fd,则式(5)的最优权矢量
Ws,opt(fd)=R-1sγs(fd) (8)
从式(5)可知,计算自适应波束形成的权矢量Ws时,并不像常规方法(见式(3))那样要求a(θ0)已知,而仅要求目标的Doppler已知(或用后面介绍的估计得到),因此它是一个盲波束形成器(Blind beamforming).
将式(8)代入式(6),得到Doppler的估计如下
{ dl,l=1,2,…,p}=arg maxfd{?ξ(fd)=γHs(fd)R-1sγs(fd)} (9)
lightpeter1年前1
drf9ko 共回答了20个问题 | 采纳率85%
呵呵,智能天线啊.
不过这个没给参数别人没法给你编啊,你可以找论文作者要程序,前提是人家愿意给你.
波束成型其实就是些向量相乘,程序不会太难,关键是看懂算法,搞清楚物理意义啊.
我是一个FORTRAN新手,现有一个迭代公式,想拿一次迭代结果与其前一次迭代结果进行对比
我是一个FORTRAN新手,现有一个迭代公式,想拿一次迭代结果与其前一次迭代结果进行对比
如果对比结果达到要求,则迭代结束,否则继续迭代,式例(a-b)/a
风萧萧雨潇潇1年前1
我是迷茫 共回答了18个问题 | 采纳率100%
举个最简单的例子,Jacobi迭代解x+y=2,2x+3y=5
program Jacobi
integer::N,NMAX=10000
real::X,Y,X0,Y0,ERROR=0.0001
X0=0.0
Y0=0.0
do N=1,NMAX
X=2-Y0
Y=(5.0-2*X0)/3.0
if (abs((X-X0)/X0)
能不能用fortran求解带未知量的矩阵的乘法?就是两个大型矩阵相乘,其中一个带有未知量,乘完后形成一个带有未知量的矩阵
能不能用fortran求解带未知量的矩阵的乘法?就是两个大型矩阵相乘,其中一个带有未知量,乘完后形成一个带有未知量的矩阵?
张嘉佳的嘉心糖1年前1
ilovepacino 共回答了22个问题 | 采纳率90.9%
我想你的问题,可能是符号计算的问题.
一般学Fortran刚开始都是做数值计算,而不是做符号计算.数值计算在计算机实现里更容易.
如果你想做符号计算,可以用matlab,Mathematica 这类的数学工具来进行.
当然,Fortran是一门编程工具,理论上matlab能实现的他都能,他也能实现符号计算,但是恐怕需要你自己去书写大量的代码来实现.而不由语法里直接提供
我有一个复数数组,我想用fortran的write输出成6*6矩阵,format里写什么?
我有一个复数数组,我想用fortran的write输出成6*6矩阵,format里写什么?
parameter(n=6)
dimension a(n,n)
complex ::a
a(1,1)=(1.0,0.0)
a(1,2)=(1.0,2.0)
a(1,3)=(2.0,1.0)
a(1,4)=(0.0,0.0)
a(1,5)=(3.0,0.0)
a(1,6)=(2.0,0.0)
a(2,1)=(1.0,-2.0)
a(2,2)=(2.0,0.0)
a(2,3)=(2.0,0.0)
a(2,4)=(0.0,2.0)
a(2,5)=(0.0,0.0)
a(2,6)=(1.0,0.0)
a(3,1)=(2.0,-1.0)
a(3,2)=(2.0,0.0)
a(3,3)=(3.0,0.0)-w
a(3,4)=(0.0,3.0)
a(3,5)=(0.0,0.0)
a(3,6)=(0.0,0.0)
a(4,1)=(0.0,0.0)
a(4,2)=(0.0,-2.0)
a(4,3)=(0.0,-3.0)
a(4,4)=(0.0,0.0)
a(4,5)=(0.0,0.0)
a(4,6)=(0.0,0.0)
a(5,1)=(-3.0,0.0)
a(5,2)=(0.0,0.0)
a(5,3)=(0.0,0.0)
a(5,4)=(0.0,0.0)
a(5,5)=(0.0,0.0)
a(5,6)=(0.0,0.0)
a(6,1)=(-2.0,0.0)
a(6,2)=(-1.0,0.0)
a(6,3)=(0.0,0.0)
a(6,4)=(0.0,0.0)
a(6,5)=(0.0,0.0)
a(6,6)=(0.0,0.0)
write(*,643) ((a(i,j),j=1,n),i=1,n)
643 format(?)
sadfbawjk1年前1
niwawa_wx 共回答了16个问题 | 采纳率87.5%
我从来不用format语句,如果要求不高的话可以
write(*,*) ((a(i,j),j=1,n),i=1,n)
或者
do i=1,6
write(*,*) a(i,:)
enddo
如果你对格式要求很高,那么最不济的办法可以用循环并分实部和虚部来输出,这样就全是实数了.
fortran 二维数组编程题…急!
fortran 二维数组编程题…急!
一只虫子,在直角坐标系以(1,1)为第一步,移动一个坐标算一步,按照逆时针正方形顺序走向中心,如(2,1)为第二步,一直走到(1,100),再走到(100,100),再走到(1,100),再向下走到(1,2),再向右拐走到(2,2)…就这样逆时针旋转着走到中心,问在键盘输入步数,求小虫这时候坐标…
Jade_happy3121年前1
iron_buddha 共回答了16个问题 | 采纳率81.3%
#include
void main()
{
int XY[102][102];
int step[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};//走动的方向
int x,y;
for(y=0;y