FORTRAN90习题
- 格式:pdf
- 大小:251.96 KB
- 文档页数:45
FORTRAN90试题_3_计算机基础部分单项选择题(每题1分,共⼗分)(⼀)微型机的性能指标主要取决于 1 。
1.A) 内存 B) 中央处理器 C) 硬盘 D) 显⽰卡(⼆)与⼗进制数35等值的⼆进制数为 2 。
2.A) 100011 B) 110001 C) 11101 D) 101011 (三)硬盘⼯作时,应尤其注意防⽌ 3 。
3.A) 空⽓潮湿 B) 空⽓中的尘埃 C) 光线直射 D) 强烈震动(四)下列选项中, 4 不属于系统软件。
4.A) C 语⾔编译程序B)Windows C) Unix D)Office (五)计算机联⽹的主要⽬的是 5 。
5.A) 数度快 B) 资源共享 C) 精度⾼ D) 容量⼤(六)下列⽹络的IP 地址中, 6 正确的是。
6.A) 202.245.101.201 B) 204.256.9.101 C) 202.155.98.C D) 249.220.258.202(七)在多媒体计算机系统中,不能⽤于存储多媒体信息的是 7 。
7.A) 光缆 B)光盘 C) 硬盘 D) 磁带(⼋)计算机病毒不能通过 8 传播。
8.A) 硬盘 B) 优盘 C) D 打印机 D) ⽹络(九)在Windows 98中,将⼀个应⽤程序窗⼝最⼩化后,该应⽤程序 9 。
9.A) 任在后台运⾏ B) 暂时停⽌运⾏ C) 完全停⽌运⾏ D) 从任务栏退出(⼗)在Windows 环境下,若要将当前窗⼝存⼊剪贴板,则可以按 10 。
10.A) Ctrl + Print Screen B) Alt + Print Screen C) Shift + Print Screen D) Print ScreenFORTRAN90语⾔⼀、语⾔基础单项选择(每题2分,共20分)(⼀) 下⾯程序段中,错误的语句是 1 。
1. A) REAL,PARAMETER :: S = 1.73B) REAL :: X = 3 C) S = S + XD) PRINT *, S, X(⼆) ⼀个梯形的上底长为A,下底长为B,⾼为H,正确计算这个梯形⾯积的FORTRAN90表达式为 2 。
FORTRAN90 程序设计复习资料(2)一、选择题1.FORTRAN 90规定,变量类型声明的优先顺序是。
A.隐含约定(I-N规则)、IMPLICIT声明、类型声明B.类型声明、隐含约定(I-N规则)、IMPLICIT声明C.类型声明、IMPLICIT声明、隐含约定(I-N规则)D.IMPLICIT声明、类型声明、隐含约定(I-N规则)2.表达式15/4/2.0的值是。
A.整数2 B.实数1.5 C.实数2.25 D.实数1. 33.数组声明语句为:INTEGER,DIMENSION(-5:-1,-3:3,11:15) ::num ,数组共有个元素。
A.175 B.150 C.120 D.174.下列语句函数声明中,正确的是。
A.F1(I,I)=5*I-10*I**2 B. F2(MAT(5),A)=5*A+MAT(5)C. F3(X,Y,5.0)=X**2+Y**2+5.0**2D.F4(X,Y)=SQRT(X**2+Y**2+5.0**2)5.下列关于子程序的有关说法中,不正确的是。
A.对于无参子例行程序,调用时子例行程序名后的括号可取消B.对于无参函数子程序,调用时函数名后括号可取消C.对于有参子程序,形式参数可以是子程序名对于有参子程序,形式参数可以是星号“*”6.以下不是算法的特征。
(A) 灵活性(B)确定性(C)可行性(D)有穷性7.以下是FORTRAN 90源程序的扩展名。
(A)MDP (B)MAK (C)OBJ (D)F908.下列是正确的变量名。
(A)3SI (B)SI—3 (C)SI 3 (D)SI#39.若S为整型变量,且有S=1.25+11/4,则S的值为。
(A)3(B)3.25 (C)4 (D)4..2510.表达式MOD(5,6)+9/2**3/2的值为。
(A)37 (B)1 (C)5 (D)3211.已知a=3.0,b=9.0,c=5.0,d=7.0,逻辑表达式a+b/=c. and .a>=d的值为。
FORTRAN90 程序设计复习资料(2)一、选择题1.FORTRAN 90规定,变量类型声明的优先顺序是。
A.隐含约定(I-N规则)、IMPLICIT声明、类型声明B.类型声明、隐含约定(I-N规则)、IMPLICIT声明C.类型声明、IMPLICIT声明、隐含约定(I-N规则)D.IMPLICIT声明、类型声明、隐含约定(I-N规则)2.表达式15/4/2.0的值是。
A.整数2 B.实数1.5 C.实数2.25 D.实数1. 33.数组声明语句为:INTEGER,DIMENSION(-5:-1,-3:3,11:15) ::num ,数组共有个元素。
A.175 B.150 C.120 D.174.下列语句函数声明中,正确的是。
A.F1(I,I)=5*I-10*I**2 B. F2(MAT(5),A)=5*A+MAT(5)C. F3(X,Y,5.0)=X**2+Y**2+5.0**2D.F4(X,Y)=SQRT(X**2+Y**2+5.0**2)5.下列关于子程序的有关说法中,不正确的是。
A.对于无参子例行程序,调用时子例行程序名后的括号可取消B.对于无参函数子程序,调用时函数名后括号可取消C.对于有参子程序,形式参数可以是子程序名对于有参子程序,形式参数可以是星号“*”6.下列关于外部子程序的说法中,正确的是。
A.外部子程序可与主程序单元放在一个源程序文件中,但必须放在PROGRAM语句之前B.外部子程序可与主程序单元放在一个源程序文件中,但必须放在END语句之后C.外部子程序允许单独放在一个源程序文件中,并与主程序分别编译D.外部子程序允许单独放在一个源程序文件中,并与主程序单元一起编译7.关于FORTRAN90的派生(即自定义)类型,以下四种说法中错误的是。
A.派生类型定义从“TYPE 派生类型名”开始到“END TYPE'’结束B.派生类型名不得和系统内定类型同名,在同一程序单位内也不得重复定义 C.派生类型的分量(或称成员)不能是派生类型名,即派生类型不允许嵌套定义D.引用派生类型变量的成员可用“%”号或“.”号,例如abc%a,或abc.a均可8.指针声明语句为:INTEGER,POINTER ::A1,A2目标变量声明语句为:INTEGER,TARGET ::M=20,N=30下列语句执行后,M、N的值分别为。
2002FORTRAN90笔试试卷(二○○二年六月)一、选择题1.指出下列符号中,哪些是合法的FORTRAN90变量名?C ①shanghai②gh3.5③sum_1④#3a⑤abc3d⑥12⑦_m⑧a-1A.①②③④ B.⑤⑥⑦⑧C.①③⑤⑦ D.②④⑥⑧2.以下数组说明语句正确的是?A①REAL(8)A(10)②DIMENSION A(10)③REAL A(2:3,-1:-5,0:3)REAL A(10)④REAL,DIMENSION(5)::A(10)⑤REAL DIMENSION(10),PARAMETER::A=3.0⑥READ*,MREAL,DIMENSION(M)::AA.①③⑤B.②④⑥C.①②③D.④⑤⑥3.当输入123456789时,下列程序段的输出为?A INTEGER A,B,CA=2READ(*,'(I1,I<A>,I<A>)')A,B,CPRINT*,A,B,CA.123B.12345C.123456D.12345674.一个FORTRAN90源程序和工作间的文件扩展名是?D A.FOR和TXT B.FOR和LIBC.OBJ和EXED.F90和MDP5.表达式10/4/2.0的值是?B A.1 B.1.0C.1.25D.1.36.若有语句:INTEGER B(-1:-2,3:7),则数组B中所包含的元素个数为?CA.12B.10C.0D.217.设A=.TRUE.,B=.FALSE.,C=.FALSE.,D=.TRUE.,E=.EALSE.,则语句PRINT*,.NOT.A.EQV.B.OR.C.NEQV.D AND.E的结果为?C A.TRUE B.FALSEC.TD.F8.如有数组定义:TYPE STUDENTINTEGER NUMCHARACTER(8)NAMELOGICAL SEXINTEGER BIRTHDAYEND TYPETYPE(STUDENT),DIMENSION(10)::ST1则数组ST1占据多少字节的内存单元?BA.140B.200C.180D.1609.给复型变量F赋初值2.4+5.6i(i是虚数单位)的DATA语句是?AA.DATA F/(2.4,5.6)/B.DATA F/CMPLX(2.4,5.6)C.DATA F/2.4,5.6/D.DATA F/COMPLEX(2.4,5.6)/10.设有程序段:CHARACTER*14ACHARACTER*5CA=’abcdefghijklmn’C=A(:5)A(:5)=A(3:7)A(3:7)=CPRINT*,A输出结果为:DA.abcdefghijklmnB.jklmnfghiabcdeC.fghijabcdeklmnD.cdabcdehijklmn二、填空题1.以下程序运行后,输出的第一行为(1),第二行为(2),第三行为(3)。
FORTRAN90语言部分一、 语言基础单项选择(每题2分,共20分)(一)下面的函数计算中,错误的是 1 。
A) SQRT(9) B) REAL(9) C) ABS(9) D) MOD(9,2)(二)运行下面的程序时(P,W,X,Y 都是实型变量), READ(*,10) P,W,X,Y WRITE(*,20)X,Y10 FORMAT(1X,F3.1,3(1X,F4.2)) 20 FORMAT(1X,F4.1,3(1X,F5.2)) END如果从键盘输入数据:12345678901234567890,则输出结果为 2 。
A) 1.23 56.78 B) 12.3 67.89 C) 12.3 45.67 D) 34.5 67.89(三)数学式a acb x 24sin 22-+的FORTRAN 表达式为 3 。
A) SIN(X**2)+SQRT(B*B-4*A*C)/2/A B) SIN(X)**2+ SQRT(B*B-4*A*C)/2/AC) (SIN(X**2)+SQRT(B*B-4*A*C))/(2*A) D) (SIN(X)**2+SQRT(B*B-4*A*C))/(2*A)(四)表示条件“A 加B 大于C 并且C 大于等于D ”的FORTRAN90逻辑表达式是 4 。
A) A+B>C >=D B) (A+B)>C >=DC) A+B>C.AND. C>=DD) (A+B)>C.OR. C>=D(五)通过下面的赋值,字符变量LINE 的值是 5 。
表示空格。
CHARACTER(LEN=4)::LINE LINE=’10’A) 10 B) 1000 C) ‘10’ D) ’10 ’(六)下面对二维数组的说明语句中,正确的语句是 6 。
A) 显式形状数组的说明:REAL,DIMENSION(10,:) ::AB) 动态数组的说明方式:REAL,DIMENSION(:,:), ALLOCATE ::A C) 假定形状数组的说明:REAL,DIMENSION(10,:) ::A D) 指针数组的说明:POINTER,DIMENSION(1:3,2:4) ::A (七)下面的模块中,错误的语句是 7 。
Fortran90试题Fortran 复习题⽬类型:1、选择题2、填空题3、简答题4、编程题样题⼀、选择题1.下列名称中,符合FORTRAN 90命名规则的是。
A. a-b-cB. $123C. length_1D. date.year 2.关于FORTRAN 90程序单元,以下四种说法中正确的是。
A.⼀个FORTRAN 90程序由多个程序单元组成,其中有⼀个且只能有⼀个主程序单元B. ⼀个FORTRAN 90程序由多个程序单元组成,其中有⼀个且只能有⼀个模块单元C. ⼀个FORTRAN 90程序允许有多个程序单元,但每类程序单元只能有⼀个D. ⼀个FORTRAN 90程序允许有多个程序单元,但主程序单元和模块单元只能有⼀个3.关于FORTRAN 90的CASE结构,以下说法中正确的是。
A. CASE结构内必须取DEFAULT作为情况选择器的最终值B. CASE结构的情况表达式不能是字符类型C. CASE结构的情况表达式和情况选择器的取值类型必须相同D. CASE结构的不同情况选择器取值可以重复4.已知数组说明REAL A(20:22,0:9,-3:-1),数组A的数组元素个数是。
A.164 B.360 C.450 D.90 5.⼦程序的形式参数(虚拟变元或哑元)可以是。
A.变量名、数组名、过程名B.变量名、数组名、过程名和符号常量名C.变量名、数组名、数组⽚段、过程名D.任意符号名6. 语句OPEN(3,FILE=’ABC’,ACCESS=’DIRECT’,RECL=40)打开的是⽂件。
A.有格式顺序存取B.⽆格式顺序存取C.有格式直接存取D.⽆格式直接存取7、下列关于"SUBROUTINE MAP(X,Y)"语句⾏的叙述中,不正确的是( )A) 这是⼦程序的第⼀个语句 B) 字符串"MAP"是⼦程序名C) 变量X是⼦程序的形参D)⼦程序执⾏后,MAP将返回整型数据8、 FORTRAN表达式"2/4+0.5"的值是( )A) 0.5 B) 1 C) 1.0 D) 09、阅读下列FORTRAN程序:PI=3.14159265WRITE(*,'(F7.4) ')PIEND程序运⾏后输出结果是( )A) 3.142 B) 3.1415 C) 0.31416 D) 3.141610、圆的直径存放在整型变量K之中,下列计算圆⾯积的表达式中正确的是( )A) 3.1415926*K*K/4 B) 3.1415926*(K*K/4)C) 3.1415926*(K/2)**2 D) 3.1415926*(K/2)*(K/2)⼆、填空题1、下列FORTRAN函数⼦程序的功能是⽤以下公式计算⼀组数据Z1,Z2,…,Zn的标准差σ:σ2=(Z12 +Z22+…+Zn2)/n-[(Z1+Z2+…+Zn)/n]2请在程序中的下划线处填⼊合适的内容。
第一、二章 Fortran90基础知识考核知识点1.字符集:58个⑴A~Z(a~z)程序中不区分大小写26个⑵0~9 10个⑶_(下划线) 1个⑷空格= + - * / (),:·$ …” ;!& % > < ?21个注意:除字符常量外,不区分大小写;字符常量、注释内容可是任意字符2.各种标记:(1)注释标记:!(感叹号)后的所有字符都被编译器忽略;可独占一行,可在其它语句之后,空行为注释行(2)续行标记:&(放在尾部),但如为关键字,首尾均加&。
(3)分行标记:一行可以写多个语句,用“;”(分号)分隔3.独立程序单位种类及个数(1)主程序(个数:1)单位定义语句为PROGRAM名字(2)外部子程序(个数:0-n):外部函数子程FUNCTION;外部子例行子程序SUBROUTINE (3)模块(个数:0-n)单位定义语句为MODULE名字(4)数据块程序单元(个数:0-n)注意:可执行程序一定含有一个主程序单位主程序单位定义语句当单位结束语句为END或ENDPROGRAM时可省略。
子程序单位定义语句不可省略4.语句分类及判定:语句行:参与编译可执行语句:输入语句、输出语句、赋值语句、程序控制语句非执行语句:类型说明语句、接口块、模块中的语句非语句行(注释行):(1)无继续行(2)不参与编译、运行(3)可出现在任何位臵上(4)空行为注释行5.名字的命名规则:一般要知名达意(1)字母、数字、下划线组成(2)字母开头(3)长度1~31(4)名字中不能含有空格同步练习一、选择题1.以下独立程序单位中有时可省略单位定义语句的是______。
A. 主程序单位 B.外部函数辅程序单位 C.外部子例行程序单位 D.模块单位2.fortran90程序有若干个独立的程序单位组成,以下四组中均不是独立的程序单位的是______。
A.系统提供的内部函数、接口块、内部子程序过程B.函数辅程序单位、主程序单位C.模块、子程序辅程序单位、内部函数过程D.函数辅程序单位、子程序辅程序单位3.下列说法中正确的是:______。
第二部分 FORTRAN90程序设计一、选择题(用答题卡答题,答案依次填在21~30答题号内)21. 以下几组FORTRAN90关键字中,全部用于描述(数据)属性的是 21 .A. DIMENSION、ALLOCATE、POINTERB. INTENT、DEALLOCATE、TARGETC. PARAMETER、USE、MODULED. ALLOCATABLE、EXTERNAL、INTENT22. 以下描述各种功能的程序块中,不属于FORTRAN90独立程序单位的是 22 .A.PROGRAM main ………… END PROGRAM mainB.INTERFACE OPERATER(……) …… END INTERFACEC.SUBROUTINE sub(……) …… END SUBROUTINE subD.MODULE abc ………… END MODULE abc23.某程序单位的开头有如下四条说明语句,编译时错误将出现在语句 23 .① IMPLICIT NONE② PARAMETER (r=12.2)③ REAL,PARAMETER:: pi=3.1415926④ REAL(4),PARAMETER:: s=pi*r*rA. ①B. ②和④C. ③D. ④24.自定义逻辑运算符.XOR.(异或):仅当a、b之一是真时a.XOR.b为真.以下程序段输出结果为 24 .INTEGER:: i=1,j=2,k=3,m=4PRINT*,i+j>k .XOR. k+j>=mA. TRUEB. FALSEC. TD. F25.欲定义符号名a为二维、实型、动态数组,以下说明语句中正确的是 25 .A. REAL(4),DIMENSION(:,:),ALLOCATABLE::aB. REAL(4),DIMENSION(:,:),ALLOCATE::aC. REAL(4),DIMENSION(:),ALLOCATABLE::aD. REAL(4),DIMENSION(:),ALLOCATED::a26.自定义(派生)类型staff如下:TYPE staffCHARACTER (LEN = 20)::first_name,surnameINTEGER::age,working_yearsEND TYPE staff以下能将变量staff_person说明为staff类型的说明语句是26 .A. staff::staff_personB. TYPE(staff)::staff_personC. TYPE staff::staff_personD. staff TYPE::staff_person27.若过程说明中有:SUBROUTINE sub(a,result)REAL::a(2,2,2),result主调程序单位中有语句:REAL::x(7),resultCALL sub(x,result)则在过程调用时实元数组的元素x(7)对应于哑元数组a的元素 27 .A. a (1,1,1)B. a (2,2,1)C. a (2,1,2)D. a (1,2,2)28. 要认定数组a和b形状相同,必须符合条件: 28 .4 / 8A. 维数、各维的长度相同、维界不必相同B. 维数、各维的长度相同、维界也必须相同C. 维数、总长度相同、各维维界不必相同D. 维数、总长度相同、各维长度不必相同29. 关于过程和模块,以下说法中错误的是 29 .A.过程是可执行的独立程序单位,模块是不可执行的独立程序单位B.外部过程是可执行的独立程序单位,模块是不可执行的独立程序单位C.模块内可定义内部过程,外部过程内也可定义内部过程,D.模块内的变元可供使用它的程序单位共享,外部过程内变元(局部于过程)不能共享30. 以下带有控制信息表的读写语句中,错误的是30 .A. READ(FMT=*,UNIT=2,IOSTAT=ios)a,b,c,i,j,kB. READ(UNIT=2,FMT=’(3A6,3I4)’,REC=number)a,b,c,i,j,kC. WRITE(UNIT=*,FMT=’(3A6,3I4)’,REC=number)a,b,c,i,j,kD. WRITE(IOSTAT=ios,UNIT=3,REC=number)a,b,c,i,j,k二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)1. 以下程序执行后,输出的第二行是(1) , 第三行是 (2) , 第四行是 (3) .PROGRAM half_fibo_matrixINTEGER,DIMENSION(1:4,1:4)::fiboINTEGER::i,j,k,summafibo=0DO i=1,4DO j=1,4IF(j==i) fibo(i,j)=1IF(j==i-1) fibo(i,j)=2ENDDOENDDODO i=3,4DO j=1,i-2summa=0DO k=1,i-1summa=summa+fibo(k,j)IF(i==k+1) summa=summa+fibo(k,j)ENDDOfibo(i,j)=summaENDDOENDDOPRINT '(1X,4I3)',((fibo(i,j),j=1,4),i=1,4)END PROGRAM half_fibo_matrix2 . 以下程序执行后,输出的第一行是 (4) ,第二行是 (5) .PROGRAM recursiveIMPLICIT NONEPRINT'(I4)',f(3),f(5)5 / 8CONTAINSRECURSIVE FUNCTION f(n) RESULT(m)INTEGER,INTENT(in)::nINTEGER::mIF(n==0 .OR. n==1) THENm=2ELSEm=f(n-1)+2*f(n-2)-1ENDIFEND FUNCTION fEND PROGRAM recursive3. 以下程序执行后,输出的第一行是(6),第二行是(7) .PROGRAM mainIMPLICIT NONEINTEGER::ar1(2,2),ar2(4),ar3(2,4),i,jar1=RESHAPE((/1,2,3,4/),(/2,2/))ar2=RESHAPE(ar1,(/4/))ar3=RESHAPE((/ar2,(/5,6,7,8/)/),(/2,4/))PRINT '(2X,4I3)',((ar3(i,j),j=1,4),i=1,2)END PROGRAM main4. 以下程序执行后,输出的第一行是 (8) ,第二行是 (9) .PROGRAM procedureIMPLICIT NONEREAL::c,s,t,x,pi=3.1416INTEGER::funcs=0.5; t=2.5; x=2.7func=INT(x)CALL sub(t,s*SIN(pi/6),c,func)PRINT '(F5.2)',cCALL sub(s*t,x,c,INT(x))PRINT '(F5.2)',cCONTAINSSUBROUTINE sub(a, b, c, func)INTEGER::funcREAL::a,b,cc=a**func+b**funcEND SUBROUTINE subEND PROGRAM procedure5. 以下程序执行后,输出的第一行是(10) ,第二行是(11) . PROGRAM mainINTERFACE OPERATOR (.c.)6 / 8FUNCTION cent(x)REAL,INTENT(in)::xREAL::centEND FUNCTION centEND INTERFACEREAL::a,bCHARACTER(len=50)::fmtfmt='(" Convert ",f7.4," to percent:",f8.2,"%")'a = 0.5678; b=12.321WRITE (*,fmt) a, .C.aWRITE (*,fmt) b, .C.bEND PROGRAM main!FUNCTION cent(x) RESULT(cent_value)IMPLICIT NONEREAL,INTENT(in)::xREAL::cent_valuecent_value=x*100.0END FUNCTION cent6. 以下程序执行后,输出的第一行是(12),第二行是(13) . PROGRAM dysTYPE studentCHARACTER(len=8)::nameINTEGER::ageEND TYPE studentINTEGER::iTYPE(student),DIMENSION(3)::ss(1)=student('Mary',19)s(2).name ='Jhon's(2).age=20s(3).name='Jack's(3).age=18WRITE (*,'(A,I5)')(s(i),i=1,3)END PROGRAM dys7. 以下程序执行后,输出的第一行是(14),第四行是(15) . PROGRAM ptrIMPLICIT NONETYPE rowINTEGER,DIMENSION(:),POINTER::r7 / 8END TYPEINTEGER,PARAMETER::n=4TYPE(row),DIMENSION(n)::tINTEGER::iDO i=1,nALLOCATE(t(i)%r(1:i))t(i).r(1:i)=iCALL print(t(i))ENDDOCONTAINSSUBROUTINE print(t)TYPE(row)::tPRINT '(4I4)',t.rEND SUBROUTINE printEND PROGRAM ptr8.完善以下程序.【算法与功能提示】求非线性方程f(x)=0的实根的Stefensen 法如下:假定已经找到所求根附近的一个近似值x0;用下述公式来修正近似值:xn+1=xn-f(xn)/g(xn),n=0,1,2,3,……,其中g(x)=(f(x+f(x))-f(x))/f(x)当f(x n+1)的绝对值小于1E-6时,可取x n+1为近似根.程序中将求根过程定义成递归函数过程,其内f(x)是哑过程,必须对它作外部过程的说明,xtry记录逐次修正的结果,rt是根的近似值.本程序求f(x)=(x/2)2-cosx-e x=0的一个实根.PROGRAM mainIMPLICIT NONEREAL,EXTERNAL::yREAL:: (16)READ(*,*)x0 !input –2.5rt=root(x0,y) !the approximate root is –1.36183WRITE(*,'('' root='',F8.5)')rtEND PROGRAM main!RECURSIVE FUNCTION root(x0,f) RESULT(rt)IMPLICIT NONEREAL::x0,x,xtry,ftry,gtry,eps=1E-6REAL,EXTERNAL::fx=x0DO WHILE( (17) )ftry=f(x)gtry= (18)xtry=x-ftry/gtry8 / 8IF( (19) )THENrt=xtry; EXITELSEx=xtryrt= (20)ENDIFENDDOEND FUNCTION root!FUNCTION y(x) RESULT(u)REAL::x,valueu=(x/2)**2-cos(x)-exp(x)END FUNCTION y9.完善以下程序.【算法与功能提示】将元素已经按升序排列的数组a和b进行重组:a、b中所有较小的元素按升序集中放在a数组,所有较大元素按升序集中放在b数组.方法是:将a中的每个元素从小到大逐个与b(1)比较,若某个元素大于b(1),则交换两元素的内容,此时新的b(1)在数组b中不一定最小,因此,将数组b的元素自b(1)开始,相邻元素两两比较,当出现需要交换两元素的内容以保持b的有序性时,立即交换,此过程重复进行到b的末尾元素;然后再取a数组下一个元素与b(1)比较.内部子程序过程swap用于交换两个数组元素内容.PROGRAM MainIMPLICIT NONE(21) ::m=5,n=10REAL(4),DIMENSION(:),ALLOCATABLE::a,b ! a和b 是动态数组(22)a=(/2.33,4.55,6.77,8.99,10.99/)b=(/1.25,2.36,3.47,4.58,5.69,6.70,7.89,8.91,9.22,10.98/)CALL Merge(a,b,m,n)WRITE(*,FMT='(1X,"Merge ARRAY="/(5F6.2))')a,bEND PROGRAM Main!SUBROUTINE Merge(a,b,m,n)IMPLICIT NONEINTEGER(2)::i,j,k,m,nREAL(4)::a(m),b(n)out: DO i=1,mIF( (23) )THENCALL swap(a(i),b(1))DO j=1,n-1IF( (24) )THENCALL swap(b(j),b(j+1))ELSE9 / 8CYCLE outENDIFENDDOENDIFENDDO outCONTAINSSUBROUTINE swap(x,y)REAL(4)::x,y,temptemp=xx=y(25)END SUBROUTINE swapEND SUBROUTINE Merge10.完善以下程序.【算法与功能提示】判断一段英文(或单词)是否回文.这里所指回文(palindrome)是指一段文字(或单词)不论从左向右读,还是从右向左读,其意义相同(忽略字母大小写的区别和空格).例如,Radar是回文, r adar也是回文.为此,先将一段文字的所有英文字母压缩在一起(去掉全部空格),再判断新的字符串是否是回文.以下程序中外部逻辑函数Palindrome用来判断line是否回文,内部子程序过程compress用于压缩一段文字.PROGRAM MainCHARACTER(len=50)::tmp,line='Able was I ere I saw Elba'! 要按原样输出!LOGICAL(1)::Palindrometmp=lineIF( (26) ) THENWRITE(*,FMT='(A," is a palindrome")')TRIM(line)ELSEWRITE(*,FMT='(A," is not a palindrome")')TRIM(line)ENDIFEND PROGRAM Main!FUNCTION Palindrome(line) RESULT(palindrome_result)IMPLICIT NONELOGICAL(1)::palindrome_resultCHARACTER(len=*)::lineINTEGER(1)::left,right,i,kCALL compressk=LEN_TRIM(line)Palindrome_result=.TRUE.DO i= (27)left=ICHAR(line(i:i))right=ICHAR( (28) )IF(left/=right .AND.ABS(left-right)/=32)THEN10 / 8Palindrome_result= (29) ; EXITENDIFENDDOCONTAINSSUBROUTINE compressINTEGER::i,j,k,countk=LEN_TRIM(line); i=1; count=0 !i标记空格位置,count记录空格个数out: DOIF(line(i:i)/=' ') THENi=i+1; CYCLEELSEIF(line(i:i)==' ') THENcount= (30)DO j=i,k-countline(j:j)=line(j+1:j+1)ENDDOIF(i>=k-count+1) EXIT outline(k-count+1:k-count+1)=' 'ENDIFENDDO outEND SUBROUTINE compressEND FUNCTION Palindrome11 / 8。
试卷1下面程序的功能是用指针的方法将整型变量A,B的内容互换,请改错。
PROGRAM EXIMPLICIT NONEINTEGER::A,B,C !<==ERROR1 integer,target::a,b,cINTEGER,POINTER::P1,P2,P3READ *,A,BC=BP1=>C !<==ERROR2 p1=>aP2=>BP3=B !<==ERROR3 p3=>cPRINT *,A,BP2=P1P1=P3PRINT *,A,BEND下面程序的功能是用折半法查找方法在给定的一维有序数组(升序)中查找给定的元素X,返回该元素在数组中的下标。
如果数组中没有该元素,则返回‘NO FOUND’,请填空。
PROGRAM EXIMPLICIT NONEINTEGER, DIMENSION(6)::AINTEGER::X,K,J,L,SREAD *,XA=(/2,4,6,9,15,24/)K=1J=6DO WHILE (K<=J)L=(K+J)/2IF (A(L)==X) THEN !<==BLANK1S=LEXITELSE IF (A(L)>X) THENJ=L-1ELSEK= L+1 !<==BLANK2ENDIFENDDOIF (K<=J) THEN !<==BLANK3PRINT *, SELSEPRINT *,'NO FOUND'END IFEND编程,求500-700之间各位数字之和等于12的整数的个数及和。
PROGRAM TESTIMPLICIT NONEINTEGER::N,S !N是存放个数的变量,S是存放和的变量!!考生做题开始!!************ BEGIN *******************INTEGER::A,B,C,IS=0;N=0DO I=500,700A=I/100B=MOD(I/10,10)C=MOD(I,10) THENN=N+1S=S+IEND IFEND DOPRINT*,N,S!!************ END *******************CALL OUTPRINT(N,S) !N为符合条件的结果!!考生做题结束,以下部分请勿修改CONTAINSSUBROUTINE OUTPRINT(X,Y)CHARACTER (LEN =10):: FILENAMEINTEGER:: X,YFILENAME ='RESULT.TXT'OPEN(UNIT = 1 ,FILE = FILENAME ,ACCESS = 'SEQUENTIAL' , STATUS ='REPLACE') WRITE(1,"(1X,'N=',I4,3X,'S=',I6)") X,YENDFILE(UNIT=1)CLOSE(UNIT=1)END SUBROUTINE OUTPRINTEND !程序结束试卷2下面程序的功能是从键盘输入任意10个整型数,使其按从小到大的鼠须排列并输出(冒泡法),请改错。