Program Exa_Type Implicit None Integer, Parameter :: number=9, genus=5 Integer :: i Type StdType ! ÆÄ»ýÇü Type »ý¼º Integer :: code Character(len=8) :: name Real(kind=16), Dimension(genus) :: achieve Real(kind=16) :: total, mean Character(len=1) :: degree End Type StdType Type(StdType), Dimension(number) :: a ! StdTypeÀÎ Type ÀÌ¿ë Open(15,File='pp.dat') Open(16,File='pp.out') Read(15,*) ! ¾Æ¹«°Íµµ ÇÏÁö¾Ê°í ÇÑ ÁÙÀ» ³»·Á°¡¶ó Do i=1,number Read(15,"(i5,2x,A8,5f8.2)") a(i)%code, a(i)%name, a(i)%achieve ! ÀÚ·áÀÔ·Â a(i)%total=Sum(a(i)%achieve,1) ! ÇÕ°è½Ä a(i)%mean=a(i)%total/genus Call ObtainDegree(a(i)%mean,a(i)%degree) ! ÇÐÁ¡°è»ê È£Ãâ End Do Write(16,*) '¹øÈ£ ¼º¸í ¼ö ÇÐ ¼öÄ¡Çؼ® ¹ÌÀûºÐ Çؼ®ÇÐ ¿µ ¾î' Write(16,"(i5,2x,A8,7f8.2,4x,a1)") a(:number) Write(*,*) '¹øÈ£ ¼º¸í ¼ö ÇÐ ¼öÄ¡Çؼ® ¹ÌÀûºÐ Çؼ®ÇÐ ¿µ ¾î' Write(*,"(i5,2x,A8,7f8.2,4x,a1)") a(:number) Contains Subroutine ObtainDegree(s,v) Implicit None Real(kind=16) :: s Character(len=1) :: v If (s>=90) v='A' If (s<90 .AND. s>=80) v='B' If (s<80 .AND. s>=70) v='C' If (s<70 .AND. s>=60) v='D' If (s<60) v='F' End Subroutine ObtainDegree End Program Exa_Type