當前位置:星座運勢大全官網 - 周易占卜 - Fortran語言考試問題

Fortran語言考試問題

程序員沒那麽便宜。

這麽少的分數,這麽多的要求,

加到200,我給妳補上

==================

有人又發了壹個帖子,反正是編的。

特編譯,如下。再也不做這種題目了。

!2008年6月14日14,cvf6.6通過調試。

程序主

隱式無

Integer,parameter::Marknum=3,Studentnum=5!多少科目(年級),多少學生,不變

型學生!定義學生類型

整數(kind=8)::ID!學生編號

Real::Mark(Marknum)=0!各科成績

real::summaryk = 0

Real::EvenMark=0!平均分數

Integer::Place=0!在比賽中獲得名次

結束類型

type(student)::student arr(student num)!有五個學生。

real::temparr(Studentnum)

real::SearchMark

integer::searchpos

整數::I,j

整數::選擇

integer::sn(Studentnum)

整數::二進制_搜索

寫(*,*)“如果選擇從文件中讀取數據並將結果輸出到文件,請輸入整數1,然後按enter!”

寫(*,*)“選擇從鍵盤輸入數據並將結果輸出到屏幕,然後輸入整數2,回車!”

讀(*,*)選擇

if(choice = = 1 . or . choice = = 2)那麽

出口

其他

寫(*,*)“所選數據輸入不正確,請重新輸入!”

寫(*,*)“要從文件中讀取數據並將結果輸出到文件,請輸入整數1,然後按enter!”

寫(*,*)“從鍵盤輸入數據並將結果輸出到屏幕,然後輸入整數2並按Enter!”

如果…就會結束

結束do

!-

if(choice==1)那麽

!從文件中讀取數據

打開(1,file= "學號和年級數據文件。txt”)

Do i=1,學生編號

讀(1,*) studentArr(i)。Id,(studentArr(i))。Mark(j),j=1,Marknum)

結束do

讀取(1,*)搜索標記

關閉(1)

其他

!從鍵盤輸入數據

寫(*,*)“壹* *有”,Studentnum,“同學們,請按照提示輸入數據。”

do i=1,學生編號

寫(*,*) " -"

寫(*,*)“數字”,我,“學生的數據”

寫(*,*)"學號(整數),回車確認:"

讀(*,*) studentArr(i)。身份證明

do j=1,3

寫(*,*)"第壹",j,"門分數(實數),回車確認:"

讀(*,*) studentArr(i)。馬克(j)

結束do

結束do

寫(*,*)“請輸入要查詢的總分(實數):”

閱讀(*,*)搜索標記

寫(*,*)“數據輸入完成”

如果…就會結束

!-

!計算總分和平均分

Do i=1,學生編號

studentArr(i)。summaryk = student arr(I)。SumMark+sum(studentArr(i))。馬克)

studentArr(i)。EvenMark=studentArr(i)。匯總/標記數

sn(i)=i

結束do

temparr=studentArr。summaryk

調用排序(temparr,sn,Studentnum)!分類

SEARCH pos = BINARY _ SEARCH(temparr,Studentnum,searchMark)!檢查點數並獲得排名。

!寫(*,*)搜索標記,搜索位置

!求排名

loop1:do i=1,Studentnum

loop2:do j=1,Studentnum

if(studentArr(i)。summaryk = = temparr(j))那麽

studentArr(i)。place=j

循環回路1

如果…就會結束

結束do循環2

結束do循環1

if(choice==1)那麽

!將結果輸出到文件

打開(2,file="★結果文件。txt”)

寫(2,“(A5,4x,A4,7x,3 (A5,5x),A4,7x,A6)”)“排名”,“學號”,“年級1”,“年級2”,“年級3”,“總分”,“平均分”。

Do i=1,學生編號

寫(2,"(1x,i3.3,2x,i10,5x,5(f6.2,4x))") studentArr(i)。地方,studentArr(i)。id & amp;

& amp(studentArr(i)。Mark(j),j=1,Marknum),studentArr(i)。SumMark,studentArr(i)。EvenMark

結束do

寫(2,*)“-”

寫(2,*)“得分最高的項目是:”

寫(2,“(A5,4x,A4,7x,3 (A5,5x),A4,7x,A6)”)“排名”,“學號”,“年級1”,“年級2”,“年級3”,“總分”,“平均分”。

do i=1,學生編號

if(studentArr(i)。place==1)那麽

寫(2,"(1x,i3.3,2x,i10,5x,5(f6.2,4x))") studentArr(i)。地方,studentArr(i)。id & amp;

& amp(studentArr(i)。Mark(j),j=1,Marknum),studentArr(i)。SumMark,studentArr(i)。EvenMark

如果…就會結束

結束do

寫(2,*)“-”

如果(Searchpos==0)那麽

寫(2,*)“未找到總分”,搜索標記。

其他

寫(2,*)"總分",SearchMark,"學號:",student arr(sn(search pos))ID。

如果…就會結束

關閉(2)

寫(*,*)“請打開結果文件。txt來查看結果”

其他

!將結果輸出到屏幕上

寫(*、"(A5、4x、A4、7x、3 (A5、5x)、A4、7x、A6)")"排名"、"學號"、"年級1 "、"年級2 "、"年級3 "、"總分"、"平均分"。

Do i=1,學生編號

寫(*,"(1x,i3.3,2x,i10,5x,5(f6.2,4x))") studentArr(i)。地方,studentArr(i)。id & amp;

& amp(studentArr(i)。Mark(j),j=1,Marknum),studentArr(i)。SumMark,studentArr(i)。EvenMark

結束do

寫(*,*) " -"

寫(*,*)“得分最高的項目是:”

寫(*、"(A5、4x、A4、7x、3 (A5、5x)、A4、7x、A6)")"排名"、"學號"、"年級1 "、"年級2 "、"年級3 "、"總分"、"平均分"。

do i=1,學生編號

if(studentArr(i)。place==1)那麽

寫(*,"(1x,i3.3,2x,i10,5x,5(f6.2,4x))") studentArr(i)。地方,studentArr(i)。id & amp;

& amp(studentArr(i)。Mark(j),j=1,Marknum),studentArr(i)。SumMark,studentArr(i)。EvenMark

如果…就會結束

結束do

寫(*,*) " -"

如果(Searchpos==0)那麽

寫(*,*)“未找到總分”,SearchMark。

其他

寫(*,*)"總分",SearchMark,"學號:",student arr(sn(search pos))ID。

如果…就會結束

如果…就會結束

暫停“程序結束,進入並退出!”

結束程序

!半搜索法程序

整數函數BINARY_SEARCH(A,N,KEY)

隱式無

整數::N

real::A(N),KEY

integer:: L!初始位置

整數R!端位置

整數M!中間位置

L=1

R=N

M=(L+R)/2

如果((KEY & gtA(L))或.(KEY & ltA(R)))然後

BINARY_SEARCH = 0

返回

如果…就會結束

do while(L & lt;= R)

if(KEY-A(M)& lt;-0.01)

!If鍵

L=M+1

M=(L+R)/2

else if ( KEY-A(M)>0.01)

!如果key >中間值,則數據落在下半部分。

R=M-1

M=(L+R)/2

else if(ABS(KEY-A(M))& lt;=0.01)那麽

BINARY_SEARCH = M

返回

如果…就會結束

結束do

BINARY_SEARCH = 0

返回

結束功能

!排序。

子程序排序(Arr,sn,len)

隱式無

整數::長度

整數::序列號(長度)

real::arr(len),臨時

integer::i,j,itemp

if (len==1)返回

do i=1,len-1

do j=1,len-1

if(arr(j)& lt;arr(j+1))然後

temp=arr(j)

arr(j)=arr(j+1)

arr(j+1)=temp

itemp=sn(j)

sn(j)=sn(j+1)

sn(j+1)=itemp

如果…就會結束

結束do

結束do

結束子程序排序

數據文件名是:

學號和成績數據文件。文本文件(textfile)

裏面的數據是:

123456781 79 67 62.80

123456782 46.94 30.29 85.68

123456783 78.12 2.59 94.92

123456784 90 75 86

123456785 81.23 77.58 88

162.91

生成的結果文件是:

★結果文件。文本文件(textfile)

內容是:

排名學號分數1分數2分數3總分平均值。

003 123456781 79.00 67.00 62.80 208.80 69.60

005 123456782 46.94 30.29 85.68 162.91 54.30

004 123456783 78.12 2.59 94.92 175.63 58.54

001 123456784 90.00 75.00 86.00 251.00 83.67

002 123456785 81.23 77.58 88.00 246.81 82.27

-

最高分是:

排名學號分數1分數2分數3總分平均值。

001 123456784 90.00 75.00 86.00 251.00 83.67

-

總分162 438+000的學號是:102。