2003FORTRAN90笔试试卷

  • 格式:rtf
  • 大小:97.82 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

INTEGER TSOURCE(2, 3), FSOURCE(2, 3), AR1 (2, 3) 答案: , , 答案: 1, 3, -2 LOGICAL MASK(2, 3) TSOURCE = RESHAPE((/1, 4, 2, 5, 3, 6/),(/2, 3/)) FSOURCE = RESHAPE((/7, 0, 8, -1, 9, -2/), (/2, 3/)) MASK =RESHAPE((/.TRUE.,.FALSE.,.FALSE.,.TRUE.,.TRUE.,.FALSE./),(/2,3/)) AR1 = MERGE(TSOURCE, FSOURCE, MASK) PRINT*,AR1 END 4、下列程序运行后,输出结果为 (9) 。 、下列程序运行后, ) REAL A(3, 3), B(4) INTEGER K(4) K = (/3, 1, 1, 2/) A = 5.0 B = A(3, K) PRINT*,B END 答案: 答案: 5.0 5.0 5.0 5.0
wenku.baidu.com
5、下列程序输出的第一行为 (10) ,第二行为 (11) ,第三行为 (12) 下列程序输出的第一行为 ) ) ) INTEGER, POINTER :: arrow (:) INTEGER, ALLOCATABLE, TARGET :: bullseye (:,:) 答案:5 5 5 5 答案: ALLOCATE (arrow (1:4)) 8 1 8 1 8 arrow = 5 1 8 1 8 WRITE (*,'(1x,4I4)') arrow ALLOCATE (bullseye (1:5,3)) bullseye = 1 bullseye (1:5:2,2) = 8 WRITE (*,'(1x,5I4)') bullseye(:,2)
FORTRAN 90笔试试卷 笔试试卷
(二○○三年五月) ○○三年五月) 三年五月 一、选择题
1、关于FORTRAN90的CASE语句,下列说法中正确的是 (1) 。 、关于 语句, C 的 语句 ) A、在一个CASE结构中,CASE DEFAULT语句可出现多次 B、对于给定的CASE结构,CASE值范围可以有重叠 C、每个CASE 的值必须与表达式的类型相同 D、如果表达式为字符型,CASE 的值可以是任意长度和类型的字符 2、关于数据对象的 属性, B 、关于数据对象的INTENT属性,下列说法中不正确的是 (2) 。 属性 ) A、INTENE属性只能用于子程序中,说明虚元的意图属性 B、INTENT属性也可用于具有指针类型的虚元 C、INTENT属性只能是IN、OUT和INOUT三种之一 D、INTENT属性可用来说明多个虚元,虚元之间用逗号分开 3、关于 的续行符, D 、关于FORTRAN90的续行符,以下说法不正确的是 (3) 。 的续行符 ) A、一条语句最多有39个续行 B、在非注释行上,续行符可以出现在行尾,也可以出现在行首 C、当续行符出现在注释语句中,则失去了续行的功能 D、续行符后可以是空行 4、关于 语句, A 、关于CYCLE语句,以下说法正确的是 (4) 。 语句 ) A、CYCLE语句只能用于循环结构中 B、CYCLE语句可用于任何语句结构中 C、CYCLE语句提供了循环的出口语句 D、CYCLE语句提供了循环的入口语句 5、关于数据对象的 属性, B 、关于数据对象的OPTIONAL属性,以下说法不正确的是 (5) 。 属性 ) A、OPTIONAL属性只能用于子程序或接口块中 B、OPTIONAL可以用于任何程序单元中 C、可以用PRESENT函数测试已说明为OPTIONAL的虚元是否可用 D、说明为OPTIONAL属性的虚元可以没有实元对应 6、输出语句 A 、输出语句PRINT *,’’’’的输出结果是 (6) 。 , 的输出结果是 ) A、’ B、’’ C、’’’ D、语法错 7、设有数组定义 、设有数组定义INTEGER(1) A,B ( ) , DIMENSION A(5), (4,7) ),B( , ) ( ), 则在执行下列语句后, ( ) C 则在执行下列语句后,A(4)的值为 (7) 。 ) A=8 B=5 A=A-B(2,1:5) ( , : ) A、8 B、5 C、3 D、语法错 8、关于 语句, B 、关于USE语句,以下说法正确的是 (8) 。 语句 ) A、USE语句可以出现在程序单元的任何位置 B、一个程序内可以包含多个USE语句 C、带ONLY选项的USE语句可以访问模块中的全部实体 D、用USE语句访问的实体不能重新命名 9、关于 的派生类型, C ) 、关于FORTRAN90的派生类型,以下说法错误的是 (9) 。 的派生类型 A、派生类型是由TYPE语句定义的 B、派生类型的名字不能与任何内在类型名或其他派生类型名相同 C、派生类型的分量不可以是派生类型
D、派生类型的分量引用可以使用符号% 10、MERGE函数可以将 个同类型同形状的数组合并,其语法格式为 函数可以将2个同类型同形状的数组合并 、 函数可以将 个同类型同形状的数组合并,其语法格式为MERGE(数组 , (数组1, 数组2, ),以下说法中错误的是 D 数组 ,MASK),以下说法中错误的是 (10) 。 ), ) A、MASK应当是与数组1和数组2同形状的数组 B、函数根据MASK中某元素的逻辑值决定取数组1或数组2中对应元素的值 C、函数值是与数组1和数组2同形状同类型的数组 D、函数值是与数组1或数组2同类型的一个值 11、FORTRAN90中的数组片断(即数组的一部分),可用下标三元组形式表示。设有 中的数组片断( ),可用下标三元组形式表示 、 中的数组片断 即数组的一部分),可用下标三元组形式表示。 数组说明为B( , , ),则数组片断B( : : , , : ) ),则数组片断 ) 数组说明为 (10,6,4),则数组片断 (8:11:2,5,2:3)的结果是 (11) 。 A A、形状为(2,2)的数组 B、形状为(2,2,2)的数组 C、一维数组 D、语法错 12、关于 的指针变量, C 、关于FORTRAN 90的指针变量,以下说法不正确的是 (12) 。 的指针变量 ) A、指针变量不能再具有INTENT属性和PARAMETER属性 B、指针变量在执行指针赋值或ALLOCATE语句之前,不占据内存空间 C、指针变量可以指向任何变量 D、指针变量可以用DEALLOCATE语句释放所占据的内存空间 13、以下关于模块名的说法中,不正确的是 (13) 。 B 、以下关于模块名的说法中, ) A、模块名是全局的,所以不能和其他任何程序单元同名 B、模块名可以使用任何字符 C、模块名长度最多不能超过31个字符 D、模块名中可以包含下划线 14、以下全部属于合法的整型常数的一组是 (14) 。 ) 、 D ①32,767 ②7#65 ③+8.57 ④#2F ⑤A7#2D ⑥47_2 ⑦36_3 ⑧2#101111 A、①②③④ B、⑤⑥⑦⑧ C、①③⑤⑦ D、②④⑥⑧ 15、以下全部属于合法的实型常数的一组是 (14) 。 、 ) A ①32.7_4 ②5.0E3 ③8.57 ④2E-3_4 ⑤1,234.5 ⑥4.8E48 ⑦3.6_6 ⑧$2.4 A、①②③④ B、⑤⑥⑦⑧ C、①③⑤⑦ D、②④⑥⑧
7、插入排序(在输入过程中完成排序)。以任意次序读入20个数,先将第一个数放入数 、插入排序(在输入过程中完成排序)。以任意次序读入 个数 )。以任意次序读入 个数, 的第一个元素中, 组A的第一个元素中,以后读入的数应与已存入数组中的数进行比较,确定它在从小到大 的第一个元素中 以后读入的数应与已存入数组中的数进行比较, 的排列中所应处的位置。将该位置及其后面的元素向后推移一个位置, 的排列中所应处的位置。将该位置及其后面的元素向后推移一个位置,把新读入的数据 填入空出的位置中,这样在数组A中的数总是从小到大排列的 中的数总是从小到大排列的。 个数据处理完后输出数 填入空出的位置中,这样在数组 中的数总是从小到大排列的。20个数据处理完后输出数 组A。以下程序完成此功能。 。以下程序完成此功能。 PROGRAM main IMPLICIT NONE INTEGER,PARAMETER::n=20 REAL(4),DIMENSION(n)::a REAL(4)::x INTEGER(1)::i,num num= (16) (16) 0 ) DO i=1,n READ(*,*)x CALL insert(x,a,num) ENDDO WRITE(*,100)(a(i),i=1,n) 100 FORMAT(1x,5F7.2) CONTAINS SUBROUTINE insert(x, a, num) IMPLICIT NONE REAL(4), DIMENSION(*)::a REAL(4)::X INTEGER(1)::num, i, pos LOGICAL::search pos=1 search=.TRUE. !下列循环找出该数在数组中应处的位置 DO WHILE ( (17) .AND. pos<=num) ) IF(x<a(pos)) THEN search=.FALSE.
二、填空题
1、下列程序输出的第一行为 (1) ,第三行为 (2) 。 、 ) ) REAL, ALLOCATABLE :: A(:,:,:) LOGICAL, ALLOCATABLE :: MASK(:,:,:) INTEGER B(3), C(3) INTEGER I ALLOCATE (A(5, 4, 3)) ALLOCATE (MASK(3, 4, 5)) IF(ALLOCATED(A) .AND. ALLOCATED(MASK)) THEN B = SHAPE(A); C = SHAPE(MASK) DO I=1,3 PRINT*, B(I)+C(I) ENDDO END 答案: 答案: 8 8
arrow => bullseye (2:5,2) WRITE (*,'(1x,4I4)') arrow DEALLOCATE (arrow, bullseye) END 6、下列程序输出的第一行为 (13) ,第三行为 (14) ,第五行为 (15) 。 下列程序输出的第一行为 ) ) ) PROGRAM TEST6 IMPLICIT NONE CHARACTER*3,DIMENSION(8)::letter 答案:abcd letter=(/'abc','def','ghi','jkl','mno','pqr','stu','vwx'/) ijkl CALL test(letter) qrst END SUBROUTINE TEST(SUB_LETTER) IMPLICIT NONE CHARACTER*4,DIMENSION(5)::SUB_LETTER INTEGER(1)::i DO i=1,5 WRITE(*,100)i,sub_letter(i) ENDDO 100 FORMAT(1X,'sub_letter(',I1,')=',A4) END SUBROUTINE test
2、下列程序执行后,ARRAY(4,1)= (3) ,ARRAY(1,3)= (4) ,ARRAY 、下列程序执行后, ( , ) ) ( , ) ) 答案: (2,3)= (5) 。 , ) ) 答案: 4,11,16 , , IMPLICIT NONE INTEGER(1),DIMENSION(1:4,1:4)::ARRAY=0 INTEGER(1)::I=1,J=1,N1=1,NC=4,K DO K=1,16 ARRAY(I,J)=K IF(I<NC .AND. J==N1)THEN I=I+1 ELSEIF(I==NC .AND.J<NC)THEN J=J+1 ELSEIF(I>N1 .AND. J==NC)THEN I=I-1 ELSEIF(I==N1 .AND. J>N1+1)THEN J=J-1 IF(I==N1 .AND. J==N1+1)THEN NC=NC-1; N1=N1+1 ENDIF ENDIF ENDDO PRINT '(4X,4I3)',((ARRAY(I,J),J=1,4),I=1,4) END 3、下列程序运行后,AR1(1,1)= 下列程序运行后,AR1 。 (6 (6) , AR1(1,3)= (7 AR1 (7) ,AR1(2,3)= (8 (8)