当前位置:文档之家› fortran常见错误及其原因

fortran常见错误及其原因

fortran常见错误及其原因
fortran常见错误及其原因

常见fortran错误

1. Incrementally linked image--PC correlation disabled.

!编译终止

2. forrtl: severe (157): Program Exception - access violation

!The program tried to read from or write to a virtual address for which it does not have the appropriate access. Try recompiling with the /check:bounds and /warn:argument_checking options set, to see if the problem is an out-of-bounds memory reference or a argument mismatch that causes data to be treated as an address.

Other causes of this error include:

Mismatches in C vs. STDCALL calling mechanisms, causing the stack to become corrupted References to unallocated pointers Attempting to access a protected (for example, read-only) address

3 "forrtl: severe (64): input conversion error, unit 2, file D:\FORTRAN2\testi

!文件testi正在读写,直到读写到2时错误。举例:程序想读写整数,却碰到变量故终止。

4 error LNKZOOI : unresolved external symbol _ SN @ 4 fatal error LNKllZO : 1 unresolved externals

! 出现了未指定的外部函数符号Sn 。这是因为在函数子程序中错把函数名Sn 写成了ns 。根据错误信息中的提示,用户在编辑窗口寻找有错位置进行修改。连接错误往往出现在有函数调用或子程序调用的程序中,常见的错误性质有:未定的函数符号、找不到主程序或子程序、实参与虚参的个数不一致等。注意:连接错误只给出错误代号和错误性质,不给出具体语句的行号。

5 :: error FOR229O : implicit type for 1 detected between 1 and = C : \ abc .

: error FOR33Og : undefined label 10

编译系统提示用户:在程序的第 5 行,变量i 未经类型说明;在程序的第H 行,标号10 未定义。为了便于将output 窗口中的错误信息与程序中的有错语句对照起来检查,可以双击错误列表中的某一行,此时该行被高亮显示,同时有一个小指针在编辑窗口内指向程序中对应该行错误的语句行.

6 C : \ abc .f90( 5 ) : error FOR229O : implicit type forx

即编译系统通告用户:在程序“ C :、abc . fgo ”中的第 5 行发现了错误,错误代号为“ error F oR229o " ,错误性质是“ implicit type forx " (变量x 未经类型说明)。

7 run 一time error M6201 : MATH 一sqrt : DOMAIN error

该错误为内部函数sqrt 的定义域错误,即函数sqrt 的参数不能为负数。

8 边界点的值往区域内部移动

边界变量定义的维数小于实际维数

9 FortranPGM\EULER invisicid flow\TWODEULER.F90(737) : Warning: In the call to CUCVCUV, there is no actual argument corresponding to the dummy argument TTT.

CALL CUCVCUV(MP1,NP1,M,N,DELX,DELY,U,V,CU,CV,CUS,CVS,&------^

!调用子程序中,存在一个不存在的哑元变量TTT,建议对其修改。

10 forrtl: severe (161): Program Exception - array bounds exceeded

Image PC Routine Line Source

TWODEULER.exe 0041CBD4 Unknown Unknown Unknown

TWODEULER.exe 0040CF57 Unknown Unknown Unknown

TWODEULER.exe 004722B9 Unknown Unknown Unknown

TWOD EULER.exe 00466264 Unknown Unknown Unknown

kernel32.dll 7C816FE7 Unknown Unknown Unknow

Incrementally linked image--PC correlation disabled.

Press any key to continue

!超出数组的维数。(即变量的个数太大)

11 --------------------Configuration: TWODEULER - Win32 Debug--------------------

Compiling Fortran...

D:\FortranPGM\EULER invisicid flow\TWODEULER.F90

TWODEULER.OBJ - 0 error(s), 0 warning(s)

!源程序编译,生成一个目标文件。这TWODEULER.OBJ 是一个二进制文件,便于机器执行。这一点是与matlab的本质区别。

12 D:\FortranPGM\EULER invisicid flow\TWODEULER.F90(5) : Error: This name cannot be assigned this data type because it conflicts with prior uses of the name. [N]

INTEGER MP1,NP1,M,N,I,J,KP,KH,KVEL

---------------------^

Error executing df.exe. TWODEULER.OBJ - 2 error(s), 0 warning(s)

! PARAMETER 中属性指定后,不能再定义成变量。

内部函数出错信息解释

[sourcefile(line)]run-time error M62××MATH

错误号函数级数学错误信息

M6201 functionnames:DOMAIN error

函数的自变量超出了约定的取值域,例如sqrt(-1)

Sqrt 定义域错误,不一定是负数,还可能是NaN,abs(NaN)依然是NaN

M6202 functionname:SING error

无意义的变量。例如log10(0)

M6203 functionname:OVERFLOW error

函数的结果值或其中一个既时计算值太大以致不能表示,例如EXP(250000.0) M6204 functionname:UNDERFLOW error

函数的结果值或其中一个既时计算值太小以致不能表示。

M6205 functionname:TLOSS error

完全丢失精度,例如COS(1E30)

M6206 functionname:PLOSS error

41 Insufficient virtual memory 虚拟内存不足

70 Integer overflow 整数溢出错误

71 Integer divide by zero 整数除0错误

72 Floating overflow 浮点数溢出错误

73 Floating divide by zero 浮点数除0错误

可能原因:可能是pde文件写的有问题,看看其中的除法运算,有没有除零的情况,改改。或者,前处理的数据,和计算时的数据不一致,如前处理化的网格是三角形,而计算时的单元类型是四边形。

74 Floating underflow 浮点数下溢错误

75 Floating point exception 浮点数异常错误

77 Subscript out of range 数组定义超出边界

95 Floating-point conversion failed 浮点数格式转换失败

146 Null pointer error 空指针错误

147 Stack overflow 堆栈溢出

148 String length error 字符串长度超出允许范围

149 Substring error 数组下标超出允许范围

150 Range error 整数值超出允许范围

151 Allocatable array is already allocated 数组重复定义

161 Program Exception - array bounds exceeded 引用数组下标超出允许范围

162 Program Exception - denormal floating-point operand 非法浮点数操作符

163 Program Exception - floating stack check 浮点数堆栈检查

164 Program Exception - integer divide by zero 整数除0错误

165 Program Exception - integer overflow 整数溢出

166 Program Exception - privileged instruction 非法执行特权指令

168 Program Exception - illegal instruction 非法指令

170 Program Exception - stack overflow 堆栈溢出

540 Array or substring subscript expression out of range 数组下标低下数组定义下界或高于数组定义上界

541 CHARACTER substring expression out of range 字符串非法表示

542 Label not found in assigned GOTO list 不属于GOTO语句引用的标号

543 INTEGER arithmetic overflow 整数运算结果出现溢出

544 INTEGER overflow on input 输入的整数值超出允许范围

545 Invalid INTEGER 非法整数值

546 REAL indefinite (uninitialized or previous error) 产生非法实数

547 Invalid REAL 非法实数

548 REAL math overflow 实数值溢出

549 No matching CASE found for SELECT CASE select case语句中缺少case项

550 INTEGER assignment overflow 整数定义超出允许范围

556 A edit descriptor expected for CHARACTER 字符型数据的格式化输入和输出需要A编辑符

557 E, F, D, or G edit descriptor expected for REAL 实数型数据的格式化输入和输出需要E,F,D,G编辑符

558 I edit descriptor expected for INTEGER 整数型数据的格式化输入和输出需要I编辑符

559 L edit descriptor expected for LOGICAL 逻辑型数据的格式化输入和输出需要L编辑符

568 Multiple radix specifiers 输入或输出语句重复说明

582 Array already allocated 数组已分配

583 Array size zero or negative 数组大小为0或负数

585 Array not allocated 没有被分配的数组

610 Invalid argument 非法参数

616 Invalid number in input 输入非法数字

617 Invalid string in input 输入非法字符串

618 Comma missing in COMPLEX input 输入的多个表达式之间缺少逗号

619 T or F expected in LOGICAL read 输入的逻辑值必须是T或F

622 Illegal character in hexadecimal input 输入非法的十六进制数

637 Integer expected in format 格式语句中要求的整数

638 Initial left parenthesis expected in format 格式语句中多余的左括号

639 Positive integer expected in format 格式语句中要求用正整数

641 Integer expected preceding H, X, or P edit descriptor 在H、X、P编辑符前要求用整数

644 '.' expected in format 在D、E、F、G编辑符中w和d域之间用'.'分隔

645 Unexpected end of format 格式语句没有结束

646 Unexpected character in format 格式语句中的非法字符

647 M field exceeds W field in I edit descriptor 在I编辑符中M域的值大于W域的值

648 Integer out of range in format 格式语句中的整数值超出允许范围

650 Separator expected in format 格式语句中需要分隔符

663 Out of range: substring starting position 'pos' is less than 1 子字符串的起始位置小于1

664 Out of range: substring ending position 'pos' is greater than string length 'len' 子字符串的终止位置大于字符串长度

672 Out of memory 内存不足

718 Cannot allocate temporary array -- out of memory 由于内存不足不能分配临时数组

727 Cannot ALLOCATE allocatable array -- out of memory 由于内存不足不能分配数组

729 DEALLOCATE failure: ALLOCATABLE array is not ALLOCATED 释放没有被分配的数组

fortran调试经验

FORTRAN调试程序的时候注意的问题 调试程序的时候注意的问题。 程序编好,能够直接运行而且完全正确,基本不可能,这就有调试程序的问题。主要有一下几个方面: 其一,在每个子程序被调用的时候留个心眼,写个输出语句,表示程序已经运行到了这里。这样一个小提示会给调试带来巨大的方便,如果程序运行出错,至少你可以知道它是在运行到哪里出的错,这样,直接去检查那个程序就可以了。不必重头开始检查。 其二,注意对中间计算结果的输出。有时候,而且是很多的时候,程序编译成功,运行也没有问题,就是结果不对,这肯定是计算原理有问题,此时,输入一些重要步骤的中间结果,往往可以检查出问题所在。同时,就算查出了问题所在,也可以不删除这段输出中间计算结果的代码,有可能后面还会有用处,此时,在每行输出语句前加一个感叹号,把代码变成注释的绿体字就可以了。等到再次需要输出的时候,直接删除一个“!”比再写一遍输出代码,当然要简单的多。 其三,对WATCH功能的应用,FORTRAN提供的这个功能很实用,可以查很多问题,尤其是程序中间计算值,这个和上述的中间结果的输出有点相似。但两者的不同是前者可以进行中间结果的输出控制,就是只有符合了某个条件的才能被输出,这样可以便捷程序的调试,同时对中间结果输出后可以直接用STOP停止程序的运行,这样对于大型程序来说,节省了很多后面继续计算的时间——因为前面的结果已经不对了,后面的算也是白算。 其四,对中间结算结果输出形式的控制,一般来说,FORTRAN计算结果可以输出到文件里面和计算界面两个地方。对较大的计算结果,可以输出到文件里面,反之较少的结果可以直接输出到屏幕上,为了增强数据的可读性,最好进行有格式的数据输出,以利于相同性质的数据的比较。输出到屏幕上的结果直接用WRITE(6,*)就可以(无格式),对于输出到文件里面的数据,可以省些事情,直接用WRITE(X,*)就可以,其中X是一个任意的正整数,最好大于10,也不用事先对这个X设备进行说明,程序会将结果输出到一个FORT.X的文件里面,例如10,就是FORT.10,此时,用NOTEPAD或者ULTRA-EDIT都可以把它打开——FORT.10实质上就是一个.DAT的文件,你可以把它重命名。 3.对数据计算时的误差控制。 以前觉得小数点后的误差不是那回事,没有太在意,可经过实战,终于明白了小小的误差完全可以改变整个计算的结果。因此,如果程序能够输入结果而不正确时,除了寻找算法的问题,不要忽略的误差。一般认为,FORTRAN的REAL变量小数点后8位数字误差定义已经足够,而事实上,这个精度可能在一些情况下不满足,这个时候,需要用更精确的变量类型——REAL(8),同理,当要判断两个数是否相等的时候,一定要慎用相等判断(.EQ.)这个比较运算符,因为任何数据,别看着在现实中它们一定相等,在程序中就不一定了。一旦经过了计算,就不可避免的产生了舍入误差,对于整数和有限几位循环的有理数都问题不大,可一旦是一个无理数或者无限循环的小数,只有在判断了小数点后的每一位都相等的时候,程序才判断为相等成立。这个相等的标准是非常苛刻的,所以一般情况下,可行的方法是将

华测静态数据处理流程

静态数据处理 一.静态测量的准备工作(简单介绍) (2) 二.数据下载: (3) 安装主机USB驱动: (3) 打开下载软件hcloader: (3) 输入测站信息: (3) 下载数据: (3) 三.数据处理操作过程 (4) 软件安装: (4) 安装软件狗驱动: (4) 数据处理过程 (4) 文件>新建项目 导入观测数据 查看,设置坐标系 基线处理 网平差 成果报告 附C、D、E 级GPS测量手簿记录格式 (6)

一.静态测量的准备工作(简单介绍) 在室内选点的时候要注意控制网的网形:正三角形是最好的网形(如上图),特长或特短边的出现(如下图)都会使误差增大。 在野外勘测时,尽量选择周围无遮挡、无高压线、无强电磁干扰的地方进行定点,观测,这样不仅可以保证精度,也可以减少内业处理的很多麻烦。 在外业测量时,切换到静态后,要查看数据记录指示灯(黄灯)是否有规律闪烁(间隔5秒),否则重新启动接收机,重新切换到静态。 外业观测时记录数据要全面(仪器号、点号、开机时间、关机时间、仪器高、等)。 已知控制点 未知待定点

二.数据下载: 安装主机USB驱动: 当第一次使用主机USB下载数据时,电脑会提示发现硬件,出现驱动程序安装向导, 选择驱动的保存路径(默认在COMP SS的安装路径下有`river/USB),点“下一步”即可完成安装; 打开下载软仦hcloader: 开始>娋序>华测静态处理>文件下载,点击即可。 设置连接端口:connection>settings>com选择USB、band rate选115200。 列表框里就会显示主机里有的文件(如果没有可以点击Update,稍等即可): 输入测站信息: 根据野外记录输入测站名(不超过4个字符,一般为?下端的4位仪器号)、时段(在同一点上不同时间观测的数据,目的是区别文件名)、天线高(野外实地所量测的仪器高,一般为仪器的斜高),选择文件类型(一般默认),确认即可。 下载数据: 选择需要下载的数据文件(可多选),右击鼠标数据导出,数据自动导出到之前指定的下载路径中。 下载完毕关闭软件即可。

一些 免费的fortran编译器

一些免费的fortran编译器 https://www.doczj.com/doc/e8242323.html,/node/8 Free Fortran Compilers 取自https://www.doczj.com/doc/e8242323.html,/compilers/fortran.shtml This page lists free Fortran compilers for various operating systems. Some of the compilers are compliant with the ANSI Fortran 77 specifications, others with Fortran 95, and so on. Some of them may also come complete with debuggers, editors and an integrated development environment (IDE). If you need a book on Fortran, you may want to check out the selection of books available at https://www.doczj.com/doc/e8242323.html,. Disclaimer The information provided on this page comes without any warranty whatsoever. Use it at your own risk. Just because a program, book or service is listed here or has a good review does not mean that I endorse or approve of the program or of any of its contents. All the other standard disclaimers also apply. Free Fortran Compilers and IDEs Sun Studio Compilers and Tools Sun Studio Compilers and Tools for Linux and Solaris OS on Sparc and x86/x64 platforms includes command line tools as well as a NetBeans-based IDE for developing, compiling and debugging C, C++ and Fortran programs. It also includes performance analysis tools. Intel Fortran Compiler for Linux

fortran常见问题解决

楼主为了减少重复回答问题,特编此帖,并不定期添加和更新内容。 错误难免,欢迎讨论,仅供参考。 很多人问哪里可以找到Fortran编译器,有不少热心学友提供网址,特汇集在这里。虽然俺检验过这些链接,但是它们不一定总有效。 Fortran编译器下载: CVF? FTN95(License:Freeforpersonaluse) 以下操作,如无特别说明,都是以为例。 1.如何加大Stacksize? 选Project=>Settings=>Link=>Category:Output=>? Stackallocations Reserve:这里填新值(默认为1M,若需要10M,则填) 2.如何用Fortran批量生成文件? 设要生成4000个文件,文件名为AA1-AA4000,如何写循环生成文件,而不用写4000次write 命令呢? 用内部文件: character(len=80)::filename,form integer::i doi=1,4000 selectcase(i) case(1:9) write(form,'(i1)')i case(10:99) write(form,'(i2)')i case(100:999) write(form,'(i3)')i case(1000:9999) write(form,'(i4)')i endselect write(filename,*)"AA",trim(form),".TXT" open(10,file=filename) write(10,*)i close(10)

enddo? stop end 3.如何用Fortran动态生成输出格式? 设有一个数组data(100),输出时,希望每行输出num个数,而num由用户输入,如何实现? 用内部文件: character(len=80)::form real::data(100) integer::i,num data=(/(i,i=1,100)/)/ read(*,*)num write(form,*)"(",num,"" write(*,form)data stop end 4.MS是不是很垃圾? 是垃圾,其中Bug太多,多到不可用的地步! 在这个主题里,换了CVF后问题就没了的人已有相当的数目。 如果你用,遇到莫名其妙的错误,建议换,这是一个比较成熟的编译器。 5.如何用F90/95生成随机数? 注意: 现在计算机产生的随机数都是伪随机数。 random_number(x)产生一个0到1之间的随机数(x可以是向量),但是每次总是那几个数。用了random_seed()后,系统根据日期和时间随机地提供种子,使得随机数更随机了。 programrandom implicitnone real::x callrandom_seed()!系统根据日期和时间随机地提供种子 callrandom_number(x)!每次的随机数就都不一样了 write(*,*)x stop endprogramrandom 6.函数/子程序超载的例子

华测常见问题解决办法

华测常见问题解决办法 一、蓝牙问题:手簿显示打开端口失败 1、点击配置——手簿端口配置——配置,查看蓝牙是否打开。 2、点击配置——手簿端口配置,查看连接类似是否是蓝牙,端口是否是COM8 或者是COM9,再点击确定就能连上。 3、手簿和移动站的距离太远了,手簿靠近移动站2米内的距离,点击配置—— 手簿端口配置——确定。 4、通过以上操作还是显示打开端口失败的话,就把移动站主机关机开机下,等 待10秒后,点击配置——手簿端口配置——确定,就可以连上蓝牙了。 5、通过关机开机还是显示打开端口失败的话,开机查看是否显示所有灯都同时 闪3次,然后红色灯是否单独闪3次,如果是红色灯有闪3次表示蓝牙启动起来;否则蓝牙未启动起来。蓝牙未启动情况,请拨打技术电话联系厂家技术员。 二、仪器的问题:手簿一直显示正在搜星。 1、点击仪器——仪器接收机复位下,稍等会便可以固定了。 2、把仪器关机开机下,稍等会便可以固定了。 3、如果以上操作还是不行,请联系厂家技术员。 三、点校正的问题:点校正里面找不到所测量的GPS点。 1、在配置——移动站参数——移动站选项里,把使用VRS打上勾,便可以在点 校正里找到所测量的GPS点。 六、点校正计算后,水平残差和垂直残差超出误差范围,水平残差很大。(水平 残差大于0.02,垂直残差大于0.03) 1、检查坐标系统和中央子午线是否输错,一般坐标系统用北京54或西安80, 福建这边中央子午线(宁德,福州,莆田的中央子午线是120,南平,三明,龙岩的中央子午线输117,厦门输118.30),关于工程设计资料上都有提供的,请翻阅查看。 2、检查输入的已知点坐标是否正确。 3、检查实际测量的GPS点是否正确,会不会在实地测量测错了。 4、检查点校正时,是否不小心把对应的点对应错了,已知点和测量的GPS点要 一一对应起来。 点校正时的注意事项: 1、已知点最好要分布在整个作业区域的边缘,能控制整个区域,并避免短边控制长边。例如,如果用四个点做点校正的话,那么测量作业的区域最好在这四个点连成的四边形内部; 2、一定要避免已知点的线形分布。例如,如果用三个已知点进行点校正,这三

ABAQUS常见错误与警告信息汇总

*************************错误与警告信息汇总************************* --------------简称《错误汇总》 %%%%%%%%%%%%%%% @@@ 布局 @@@ &&&&&&&&&&&&&&&&&&&&&& AB系列:常见错误信息 C系列:常见警告信息 D系列:cdstudio斑竹总结的fortran二次开发的错误表 E系列:网格扭曲%%%%%%%%%%%%%%%%% @@@@@@ &&&&&&&&&&&&&&&&&&&&&&&&& 模型不能算或不收敛,都需要去monitor,msg文件查看原因,如何分析这些信息呢?这个需要具体问题具体分析,但是也存在一些共性。这里只是尝试做一个一般性的大概的总结。 如果你看见此贴就认为你的warning以为迎刃而解了,那恐怕令你失望了。不收敛的问题千奇万状,往往需要头疼医脚。接触、单元类型、边界条件、网格质量以及它们的组合能产生许多千奇百怪的警告信息。企图凭一个警告信息就知道问题所在,那就只有神仙有这个本事了。一个warning出现十次能有一回参考这个汇总而得到解决了,我们就颇为欣慰了。 我已霸占2楼3楼4楼,以便分类并续加整理。 斑竹可随意编辑或者添加你们觉得合适的条目和链接,其他版友有warning方面的疑问请回复到这个帖子,大家集思广益,斑竹们也可以集中讨论并定期汇总到1-4楼。 类似于: Fixed time is too large Too many attamps have been made THE SOLUTION APPEARS TO BE DIVERGING. CONVERGENCE ISJUDGED UNLIKELY. Time increment required is less than the minimum specified 这样的信息几乎是无用信息(除了告诉你的模型分析失败以外,没有告诉你任何有用的东西)。宜再查找别的信息来考察。根据经验,改小增量步也不一定能收敛,虽然也有人报告过改好的先例,我是从来没有遇到过,也从来没有那个奢望。所以我一般从模型的设置入手。原则上本贴只欢迎以下回帖: 1)你出现了已经解决的错误信息or解决不了的错误信息,可以回帖附上信息,并对模型和症状加以描述(斑竹会酌情加分); 2)你发现某个帖子有已经解决的错误信息or解决不了的错误信息, 可以提供链接(斑竹会加分); 3)你发现某一条错误信息可能还存在别的情况or别的应对方案, 可以回帖说明(斑竹会加分) 必须说明的是:Error和warning的性质是完全不同的。Error意味着运算失败,but出现warning可能还能算,而且有些运算必定会出现warning(比如接触分析必定出“负特征值”,下有详述)。很多警告只是通知性质的,或者只是说明一下而已,不一定都是模型有问题。比如以下warning完全可以忽略: xxxxx will (not)printed,这种只是通知你一声,某些玩意儿不输出了。还有: The parameter frequency cannot be used with the parameter field. It will be ignored(都说某某被ignored了).

Fortran95程序设计课后习题答案(word版方便)

第四章 1.program main implicit none write(*,*) "Have a good time." write(*,*) "That's not bad." write(*,*) '"Mary" isn''t my name.' end program 2.program main real, parameter :: PI=3 implicit none.14159 real radius write(*,*) "请输入半径长" read(*,*) radius write(*,"(' 面积='f8. 3)") radius*radius*PI end program 3.program main implicit none real grades write(*,*) "请输入成绩" read(*,*) grades write(*,"(' 调整后成绩为'f8.3)") SQRT(grades)*10.0 end program 4.integer a,b real ra,rb a=2 b=3 ra=2.0 rb=3.0 write(*,*) b/a ! 输出1, 因为使用整数计算, 小数部分会无条件舍去write(*,*) rb/ra ! 输出1.5 5.p rogram main implicit none type distance real meter, inch, cm end type type(distance) :: d write(*,*) "请输入长度:" read(*,*) d%meter d%cm = d%meter*100 d%inch = d%cm/2.54 write(*,"(f8.3'米='f8.3'厘米='f8.3'英寸')") d%meter, d%cm, d%inch end program 第五章 1.program main implicit none integer money real tax write(*,*) "请输入月收入" read(*,*) money if ( money<1000 ) then tax = 0.03 else if ( money<5000) then tax = 0.1 else tax = 0.15 end if write(*,"(' 税金为'I8)") nint(money*tax) end program 2.program main implicit none integer day character(len=20) :: tv write(*,*) "请输入星期几" read(*,*) day select case(day) case(1,4) tv = "新闻" case(2,5) tv = "电视剧" case(3,6) tv = "卡通" case(7) tv = "电影" case default write(*,*) "错误的输入" stop end select write(*,*) tv end program 3.program main implicit none integer age, money real tax write(*,*) "请输入年龄" read(*,*) age write(*,*) "请输入月收入" read(*,*) money if ( age<50 ) then if ( money<1000 ) then tax = 0.03 else if ( money<5000 )then tax = 0.10 else tax = 0.15 end if else if ( money<1000 ) then tax = 0.5 else if ( money<5000 )then tax = 0.7 else tax = 0.10 end if end if write(*,"(' 税金为'I8)") nint(money*tax) end program 4.program main implicit none integer year, days logical mod_4, mod_100, mod_400 write(*,*) "请输入年份" read(*,*) year mod_4 = ( MOD(year,4) == 0 ) mod_100 = ( MOD(year,100) == 0 ) mod_400 = ( MOD(year,400) == 0 ) if ( (mod_4 .NEQV. mod_100) .or. mod_400 ) then days = 366 else days = 365 end if write(*,"('这一年有'I3'天')") days stop end program 第六章 1.program main implicit none integer i do i=1,5 write(*,*) "Fortran" end do stop end program 2.program main implicit none integer i,sum sum = 0 do i=1,99,2 sum = sum+i end do write(*,*) sum stop end program 3.program main implicit none integer, parameter :: answer = 45 integer, parameter :: max = 5 integer weight, i do i=1,max write(*,*) "请输入体重" read(*,*) weight if ( weight==answer ) exit end do if ( i<=max ) then write(*,*) "猜对了" else write(*,*) "猜错了" end if stop end program 4.program main implicit none integer, parameter :: max=10 integer i real item real ans ans = 1.0 item = 1.0 do i=2,max item = item/real(i) ans = ans+item

fortran课后习题答案

第一章 FORTRAN程序设计基础第15页 1、2 1.简述程序设计的步骤。 “程序设计”:反映了利用计算机解决问题的全过程,通常要经过以下四个基本步骤:(1)分析问题,确定数学模型或方法;(2)设计算法,画出流程图;(3)选择编程工具,编写程序;(4)调试程序,分析输出结果。 2. 什么是算法?它有何特征?如何描述算法? 解决问题的方法和步骤称为算法。 算法的五个特征:(1) 有穷性。 (2) 确定性。 (3) 有效性。 (4) 要有数据输入。(5) 要有结果输出。 算法的描述有许多方法,常用的有:自然语言、一般流程图、N-S图等。 第二章顺序结构程序设计 第29页 1、2、3、4、5、6、7、8、9 1.简述符号常量与变量的区别? 符号常量在程序运行过程中其值不能改变。变量在程序运行过程中其值可以改变。 2. 下列符号中为合法的FORTRAN 90标识符的有哪些? (1) A123B (2) M%10 (3) X_C2 (4) 5YZ (5) X+Y (6) F(X) (7) COS(X) (8) A.2 (9) ‘A’ONE (10) U.S.S.R. (11) min*2 (12) PRINT 3. 下列数据中哪一些是合法的FORTRAN常量? (1) 9,87 (2) .0 (3) 25.82(4) -356231 (5) 3.57*E2 (6) 3.57E2.1 (7) 3.57E+2(8) 3,57E-2 4. 已知A=2,B=3,C=5(REAL);且I=2,J=3(INTEGER),求下列表达式的值: (1) A*B+C 表达式的值: 11 (2) A*(B+C) 表达式的值: 16 (3) B/C*A 表达式的值: 1.2 (4) B/(C*A) 表达式的值: 0.3 (5) A/I/J 表达式的值: 0.33 (6) I/J/A 表达式的值: 0 (7) A*B**I/A**J*2 表达式的值: 4.5 (8) C+(B/A)**3/B*2. 表达式的值: 7.25 (9) A**B**I 表达式的值: 512 5. 将下列数学表达式写成相应的FORTRAN表达式: (1) 1E-2 (2)(-B+SQRT(B*B-4*A*C)/(2*A) (3) 1+X+X*X/2+X**3/2/3 (4) COS(ATAN((A**3+B**3)**(1.0/3)/(C*C+1))) (5) EXP(A*X**2+B*X+C) (6) COS(X*Y/SQRT(X*X+Y*Y))**3 6. 用FORTRAN语句完成下列操作: (1) 将变量I的值增加1。I=I+1 (2) I的立方加上J,并将结果保存到I中。 I=I**3+J (3) 将E和F中大者存储到G中。G=Max(E,F) (4) 将两位自然数N的个位与十位互换,得到一个新的数存储到M中(不考虑个位为0的情况) M=MOD(N,10)*10+N/10 第三章选择结构程序设计第43页 1、2、3、5、6、7、9 1.分析下列程序运行结果 (1) LOGICAL P INTEGER I,I1,I2,I3 P=.FALSE. READ*,I I1=MOD(I,10) I2=MOD(I/10,10) I3=I/100

ADINA常见问题解答

ADINA常见问题解答 一般问题 Q:怎样改进ADINA-AUI 中实体的显示效果? A:在某些情况下,ADINA-AUI 显示的实体在边界上不光滑,这仅仅是显示的问题,并不影响几何尺寸的精确度。为了改进显示的效果, 1 点击Modify Mesh Plot 。 2 点击Line Depiction 。 3 将ADINA-M Chord Angle 由默认的0.4改为0.1 并且点击OK。 4 点击Surface Depiction 。 5将ADINA-M Chord Angle 由默认的0.4改为0.1 并且点击OK。 6 点击OK,关闭Modify Mesh Plot 对话框。 Q:为什么AUI 的图形功能在我的计算机上不能正常的工作? A:有些计算机的显卡在Open GL 图形系统中不能正常的工作。请切换到Windows GDI 图形系统,在Edit 菜单中,点击Graphics System ,然后选择Windows GDI 图形系统。 Q:当我从ADINA-AUI 打印文件时,为什么打印不出来任何结果? A:注意只有Windows 版本才会发生这样的问题。 当使用Open GL 图形方式时,有的打印机会出现上述问题。为解决该问题,当打印的时候,选择Windows GDI 图形方式。从菜单Edit > Graphics System…中选择Windows GDI 作为图形系统,然后开始打印。注意打印结束后,可以将图形系统切换回Open GL 以便获得更快的图形效果。 Q:为什么安装了浮动License(Floating Industry或者Floating Educational)后,Adina无法启动? A:如果安装过程正确,而且电脑上的防火墙不阻止Adina读取服务器上的License,那么这样的问题一般是由于计算机使用了中文名。不论是Adina的服务器还是Adina客户端,都不允许使用中文计算机名。 Q:如何将壳单元厚度显示出来? A:在Display-->Geometry/Mesh Plot-->Modify打开的窗口中点击Element Depiction,在新打开的窗口中的Shell Element Attributes域中选择Top/Bottom(默认是Mid-Surface)。 有关界面启动 Q:怎样在Windows 版本中以批处理的方式运行ADINA? A:在Windows 版本中,ADINA 常常是在交互方式下运行。然而,有时为了连续进行几项作业,则必须在批处理方式下运行。 以批处理方式运行ADINA-AUI 的命令为: ...\aui.exe -b -m [b|w] .[in|plo] 这里…\ 是指aui.exe 的全路径名。 值可以用bytes(b) 或者 words(w) 来定义。1 word = 4 bytes 。 例如,在批处理方式下运行prob02.in 文件,并且分配20Mb 内存(假设aui.exe 安装在c:\adina\bin) ,命令行就是: c:\adina\bin\aui.exe -b -m 20mb prob02.in 注意在定义 值时,m 可以是m(Mega)、k(Kilo)、g(Giga) 。 选项-b的含义是用adina-aui读一遍命令流,但是不打开adina-aui(如果命令流中有生成dat文件的命令行,则会自动生成一个dat文件。)。如果不用-b选项,会看到打开adina-aui,并且打开模型。批处理方式下运行ADINA 求解器的命令行是: ...\.exe -b -s -m [b|w] -M [b|w] -t <#cpu> .dat 这里.exe 是adina、adinaf、adinat、adfsi或者adtmc ,…\ 是指.exe 的全路径名。 是分配给sparse solver 内存值,<#cpu> 定义了cpu 的数目。 例如,在批处理方式下运行prob02.dat 文件,分配10Mw 的内存给ADINA求解器,分配100Mw 的内存给sparse solver ,使用2个cpu ,命令行如下所示(假设adina.exe 安装在c:\adina\bin ): c:\adina\bin\adina.exe -b -s -m 10mw -M 100mw -t 2 prob02.dat 选项-b和-s是为了保证求解完成后自动关掉求解器窗口。 以下是当ADINA安装在c:\adina目录下时,顺序求解两个模型(prob02.in和prob03.in)的批处理文

fortran常见错误

FAQ之常见错误 2014-02-02 13:45:35 来源:Fcode研讨团队评论:2点击:4419 本文从编译错误,链接错误,运行时错误,计算结果错误等四个方面介绍了常见的错误及解决思路。适合初学者阅读。 首先应该明确:错误有哪几种?我们当前遇到的是何种错误? 阐述这些问题前,我们先讨论一下常规的应用程序开发的过程: 1>>编写代码,使用一个或多个源代码文件。 2>>对第一步的每一个源代码文件执行编译操作。得到一个或若干个目标代码。 3>>将目标代码,运行时库(Run-time Library)和其他使用到的函数库链接起来。得到一个可执行文件(EXE 或其他) 4>>编写程序的说明书,必要的(输入)数据文件 5>>将上述得到的结果发布给用户。(发布的方式可以是刻录成光盘,销售,放在网站上供别人下载,或者其他) 6>>用户得到程序后,运行,输入数据,得到计算结果。 对于很多 Fortran 程序员来说,可能用户就是自己,也可能仅仅是自己教研室的同事同学。所以第4,5,6步骤很多时候不明显。而如果使用集成开发环境(IDE)进行开发,第1,2,3步骤又可以一键完成。因此,很多初学者就认为,写程序就是:输入代码,运行,得到结果。这样的理解太狭义。 不管我们面对什么使用者来写代码,程序开发应该是上述的过程。我们的编译器,编译环境,也是为这个过程而设计的。 于是,我们将错误分为四种: 一. 编译错误(发生在第2步) 编译错误,一般是源代码书写格式不正确,不符合语法要求。 二. 链接错误(发生在第3步) 链接错误,一般是源代码结构不完整,运行时库或函数库使用不合理。 三. 运行时错误(发生在第6步) 运行时错误,一般是执行代码时,遇到了事先未料及的错误。比如内存不足了,磁盘空间不够了,输入文件格式不对了,输出文件写入失败了等等。 四. 计算结果不符合预期(程序代码不规范,或不符合你的设想) 计算结果不符合预期,可能性就很多了。语法与你的想法不一致,超出函数库的适用范围,执行流程控制不当等等。 这四种错误,其排查难度依次增大。也就是,编译错误最容易排查和修改,而计算结果不正确,最让人头疼。

华测静态数据处理流程

静态数据处理 一.静态测量得准备工作(简单介绍) ............................................................................................... 2 二.数据下载: (3) 安装主机USB 驱动: ................................................................................................................ 3 打开下载软件hcloader: ........................................................................................................... 3 输入测站信息:.......................................................................................................................... 3 下载数据: ................................................................................................................................. 3 三.数据处理操作过程 . (4) 软件安装: ................................................................................................................................. 4 安装软件狗驱动:...................................................................................................................... 4 数据处理过程 (4) 文件>新建项目 导入观测数据 查瞧,设置坐标系 基线处理 网平差 成果报告 附 C 、D 、E 级GPS 测量手簿记录格式 (6) 一.静态测量得准备工作(简单介绍) (如上图),特长或特短边得出现(如下图)都会使误差增大。 在野外勘测时,尽量选择周围无遮挡、无高压线、无强电磁干扰得地方进行定点,观测,这样不仅可以保证精度,也可以减少内业处理得很多麻烦。 在外业测量时,切换到静态后,要查瞧数据记录指示灯(黄灯)就是否有规律闪烁(间隔5秒),否则重新启动接收机,重新切换到静态。 已知控制点 未知待定点

fortran中批处理实现

********************************************* fortran中批处理命令的实现函数: 利用systemqq命令(需要调用DFLIB 数据库) ********************************************* 例1: USE DFLIB character*100 CMD LOGICAL(4) res CMD="dir/a-d/b/s "//trim(fPath)//" >"//trim(outPut) res=SYSTEMQQ(CMD) 例2: USE DFLIB LOGICAL(4) result result = SYSTEMQQ('copy e:\dir.txt e:\test\dir.txt') !将e:\dir.txt 复制到e:\test\dir.txt文件中。!****************实例3:复制文件************************* 例3: programmain_pro USE DFLIB implicit none integer,parameter::sta_num=123 character(5),dimension(sta_num)::sta_ID character(500)::filein,fileout character(5000)::cmd logical(4)::judge

integer::status,is open(1,file='山东.txt',status='old',action='read',iostat=status) read(1,*) do is=1,sta_num read(1,*) sta_ID(is) filein='Z:\data\降水逐小时数据-戴至修\precip_data\'//sta_ID(is)//'_precip.txt' open(2,file= filein,status='old',action='read',iostat=status) if(status/=0) goto 1000 fileout='Z:\data\降水逐小时数据-戴至修\山东省-降水数据\'//sta_ID(is)//'_precip.txt' cmd='copy '//filein//' '//fileout judge=SYSTEMQQ( cmd) 1000 continue enddo end program

计算机程序设计语言(FORTRAN语言)

计算机程序设计语言(FORTRAN语言) 1. 编译程序能将高级语言编写的源程序转换成。 A.解释程序 B.汇编程序 C.映象程序 D.目标程序 答案:D 2. 一个完整的FORTRAN源程序。 A.至少包括一个主程序 B.至少包括一个主程序和一个子程序 C.由一个主程序与一个以上的子程序组成 D.由一个主程序与一个子程序组成 答案:A 3. 语句函数定义语句在程序内合法的位置是。 A.在程序块开头语句之后,END语句之前 B.在程序块开头语句之后,可执行语句之前 C.在说明语句之后,END语句之前 D.在说明语句之后,可执行语句之前 答案:D 4. 下列关于函数子程序虚实参数的错误说法是。 A.可以没有形参数 B.虚实结合的数组长度可以不同

C.实参表与虚参表类型可以不同 D.函数名可以作为虚参 答案:C 5. 下列叙述中正确的是。 A.FORTRAN程序块中,无名公用语句只能有一个 B.FORTRAN子程序中,至少应有一个RETURN语句 C.FORTRAN程序块中,最后一行必须是END语句 D.FORTRAN程序块中,必须有变量说明语句 答案:C 6. 运行下面的程序时得不到所需的结果,其主要原因是。 INTEGER X(11) DATA X/9,8,7,6,5,4,3,2,1,0,-1/ DO 10 1=1,X(1) ,-1 WRITE(*,*)1.0/SQRT(25.0-REAL(X(1) )* * 2) 10 CONTINUE END A.没有给X(11) 赋初值 B.发生除以零的情况 C.发生负数开平方的情况 D.循环参数设置错误 答案:D 7. 下列数据中,不符合FORTRAN常量表示法的是。 A.-25.6 B.2.758D3

Fortran常见错误

fortran运行常用错误(转) (2006-11-1010:18:44) 转载▼ 分类:分子动力学 41Insufficient virtual memory虚拟内存不足 70Integer overflow整数溢出错误 71Integer divide by zero整数除0错误 72Floating overflow浮点数溢出错误 73Floating divide by zero浮点数除0错误 74Floating underflow浮点数下溢错误 75Floating point exception浮点数异常错误 77Subscript out of range数组定义超出边界 95Floating-point conversion failed浮点数格式转换失败 146Null pointer error空指针错误 147Stack overflow堆栈溢出 148String length error字符串长度超出允许范围 149Substring error数组下标超出允许范围 150Range error整数值超出允许范围 151Allocatable array is already allocated数组重复定义 161Program Exception-array bounds exceeded引用数组下标超出允许范围162Program Exception-denormal floating-point operand非法浮点数操作符163Program Exception-floating stack check浮点数堆栈检查 164Program Exception-integer divide by zero整数除0错误 165Program Exception-integer overflow整数溢出 166Program Exception-privileged instruction非法执行特权指令 168Program Exception-illegal instruction非法指令 170Program Exception-stack overflow堆栈溢出

fortran问题

imsl7.0中用use linear_operators这句话是会出错的,当时intel论坛上也有人问,后来intel 给出了个X64 imsl的补丁,但是32位的没有。 要使用包含在linear_operators这个库中的函数时,要用use+原函数 例如:上面那个例子把use linear_operators改成use operation_xt即可 另外,imsl7.0引用函数和以前版本不一样的 补充一点: linear_operators这个文件是这样子的(一看就知道原因了): modulelinear_operators usecond_int usedet_int usediag_int usediagonals_int usefft_int useifft_int useeye_int uselin_eig_self_int uselin_sol_self_int usenorm_int useoperation_i useoperation_ix useoperation_t useoperation_h useoperation_tx useoperation_hx useoperation_x useoperation_xi useoperation_xt useoperation_xh useorth_int userand_int userank_int usesvd_int useunit_int useeig_int usechol_int useisnan_int end module 1. 如何加大Stack size? 选Project => Settings => Link => Category: Output =>

相关主题
文本预览
相关文档 最新文档