实验8 字符型数据的处理与派生类型的应用
1.下面程序的功能是从键盘输入一个长度不超过20的字符串STR,统计其中大写字母A的个数N。在标注行有错,请改正。 PROGRAM EXAM IMPLICIT NONE
CHARACTER(LEN=20)::STR INTEGER::I,N
READ '(I20)',STR !<==ERROR1 N=1 !<==ERROR2 DO I=1,20
IF(STR(I,I)='A') N=N+1 !<==ERROR3 END DO
PRINT '(1X,I6.2)',N END PROGRAM EXAM ERROR1处正确的语句是: ERROR2处正确的语句是: ERROR3处正确的语句是:
2.编写程序:
⑴从键盘任意输入10个长度不超过10的字符串,编程,按字典的次序输出这些字符串。 ⑵编程输出下面图形:
1 121 12321 1234321 123454321
⑶假设一个班级有10名学生,试建立一个学生成绩表,记录每个学生的学号、姓名、和五门课程的成绩,编程求出每个学生的总分,并按照总分从高分到低分输出该班级学生成绩表和各门课程的平均分。输出格式为: 名次 1 ? 10 姓名 ? ? ? 成绩1 ? ? ? 成绩2 ? ? ? 成绩3 ? ? ? 成绩4 ? ? ? 成绩5 ? ? ? 总分 ? ? ? 平均分 ? ? ?
1. READ’(A20)’,STR
N=0
IF(STR(I:I)==’A’) N=N+1 2 PROGRAM EXAM
IMPLICIT NONE
CHARACTER(LEN=10),DIMENSION(10)::STR CHARACTER(LEN=10)::T INTEGER::I,J
PRINT*,”…………………………….” READ*,STR DO I=1,9 DO J=1,10-I
IF(STR(J)> STR(J+1)) THEN T=STR(J)
STR(J)= STR(J+1) STR(J+1)=T
END IF END DO END DO
PRINT*,”……………………..” PRINT ‘(1X,10(A,2X))’,STR END PROGRAM EXAM
3. PROGRAM EXAM
IMPLICIT NONE
CHARACTER(LEN=9)::LINE INTEGER::I,J,K DO I=1,5 K=1
DO J=6-I,5
LINE(J:J)=ACHAR(K+48) K=K+1 END DO K=I-1
DO J=6,4+I
LINE(J:J)=ACHAR(K+48) K=K-1 END DO
PRINT*, LINE END DO
END PROGRAM EXAM
实验报告9
1.下面程序的功能是用超载赋值号的方法,编写一个程序,使得一个逻辑型的值能够直接赋给一个整型变量。如执行语句:I=L时(其中I是整型,L是逻辑型),若L值为.FALSE.则I的值为0,若L值为.TRUE.则I的值为1。请在画线处填空,以完成题目的要求。 程序如下: MODULE I_L
INTERFACE ___ASSIGNMENT(=)__ _______ MODULE PROCEDURE FZ END INTERFACE CONTAINS
SUBROUTINE FZ(I,L)
INTEGER,INTENT(OUT)::I LOGICAL,INTENT(IN)::L
IF_(L) THEN___ _____ I=1 ELSE I=0 END IF
END SUBROUTINE FZ END MODULE I_L PROGRAM MAIN
USE_I_L____ ___ IMPLICIT NONE INTEGER::I,J I=.TRUE. J=.FALSE. PRINT *,I,J
END PROGRAM MAIN
2.编写一个交换任意两个变量值的类属过程,其变量类型可以整型或字符型。 MODULE 3WAP_MODULE TEMP=A;a=b;b=temp IMPLZCZT NONE END SUBROUTINE SWAP_REAL INTERFACE 3WAP END MODULE SWAP_ MODULE MODULEPROCEDURE3WAP_INT,3WAP_PROGRAM TEST_SWAP REAL USE SWAP_ MODULE END INTERFACE REAL::X=1.1,Y=2.2 CONTAINS INTEGER::I=1,J=2 SUBROUTINE SWAP_INT(A,B) CALL SWAP(X,Y) INTEGER::A,B,TEMP PRZNT*X,y END SUBROUTINE SWAP_INT CALL SWAP(I,J) SUBROUTINE SWAP_REAL(A,B) PRINT*,I,T REAL::A,B,TEMP END PROGRAM TEST_SWAP
实验报告10
1.下面程序是用指针的方法实现将整型变量A、B的内容互换。在标注行有错,请改正。 程序如下:
PROGRAM EXAM1 IMPLICIT NONE
INTEGER::A,B,C !<==ERROR1
REAL,POINTER::P1,P2,P3 !<==ERROR2 READ *,A,B C=B P1=>A P2=>B
P3=B !<==ERROR3 PRINT *,A,B P2=P1 P1=P3
PRINT *,A,B
END PROGRAM EXAM1
ERROR1处正确的语句是:INTEGER,TARGET::A,B,C ERROR2处正确的语句是:INTEGER,POZNTER::P1,P2,P3 ERROR3处正确的语句是:P3=>C
2.运行下面程序: PROGRAM EXAM2 IMPLICIT NONE
INTEGER,TARGET::A=1,B=3 INTEGER,POINTER::PA,PB,T PA=>A;PB=>B
T=>PA;PA=>PB;PB=>T PRINT 100,PA,PB PRINT 100,A,B
100 FORMAT(1X,2I4) END PROGRAM TEST5 结果为:3 1 1 3
3.编写程序:
⑴ 用递归方法求FIBONACCI序列。
⑵ 用递归方法求2 的值(n为大于0的整数)。 ⑶ 用递归方法求N阶勒让德多项式的值。递归公式为:
n?1?pn(x)??x?((2n?1)?x?p(x)?(n?1)?p(x))/nn?1n?2?(1)RECUSZUE FUVCTION FIB(N) RESULT (FIB-RES)
INTEGER , INTENT(2N)::N REAL::FIB-RES IF(N<=2) THEN FIB-RES=1 ELSE
FIN-RES=FIB(N-1)+FIB(N-2) EDN IF
END FUNCTZON PROGRAM EXAM IMPLICIT NONE INTERFACE
RESURSZVE , FUNCTION FIB(N) RESULT (FIB-RES) INTEGER, INTENT(2N)::N REAL::FIB-RES END INTERFACE INTEGER::N,I READ*,I DO I=1,I N=1
PRINT*,FIB(N) EDN DO
END PROGRAM EXAM
(2)PROGRAM EXAM IMPLICIT NONE INTERFACE
RECURSIVE FUNCTION XN(N) RESULT(RES) INTEGER , INTEN(2N)::n REAL ::RES
END FUNCTION END INTERFACE INTEGER::N
PRINT*,’输入N的值’ READ*,D
PRINT*,’I的N次方为:’ PRINT*,XN(N)
n?0n?1 n?1