Re: [問題] 簡單的排序問題(內有程式)麻煩指教

看板Fortran作者 (法拉墨)時間14年前 (2010/07/12 19:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
我提供我以前作業的寫法如下: program main integer(kind=2),allocatable::A(:) integer(kind=2) n,i,j,temp open(10,file='student.dat') write(*,*) "有幾個值要比較?" read(*,*) n allocate(A(n)) read(10,*) (A(j),j=1,n) do i=n,1,-1 do j=1,i-1 if(A(j)<A(j+1))then temp=A(j) A(j)=A(j+1) A(j+1)=temp endif enddo enddo write(*,*) A stop end ※ 引述《tn606523 (嚕咪)》之銘言: : 我寫完跑排序由小到大的程式後,可是跑出來的值變成如下,可是我只是跑分數大小而已啊 : 怎麼會出這些數字啊?不知道有沒有人能幫我解惑!謝謝! : 157076596 : 157076520 : 134603550 : 134603542 : 134603535 : 16777216 : 16777216 : 7521472 : 7521312 : 7521312 : 2752534 : 2686998 : 2686998 : 2031707 : 2031707 : 2031707 : 720897 : 720897 : 720897 : 7609 : 92 : 92 : 63 : 5 : 1 : 1 : 1 : 1 : 1 : 1 : 1 : 1 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : -5 : -6 : 程式如下展示!我覺得是我的程式一定哪裡有錯誤!可是我卻無法理解!麻煩高手告訴我一下! : program test : implicit none : integer A(j),c,d,b,i,j : open(10,file='student.dat') : i=0 : do : read(10,*,end=999)c : i=i+1 : enddo : 999 continue : do j=1,i : read(10,*,end=998)A(j) : enddo : 998 continue : j=1 : do while(j.lt.i) : if(A(j).lt.A(j+1))then : d=A(j) : b=A(j+1) : A(j)=b : A(j+1)=d : j=0 : endif : j=j+1 : enddo : do j=1,i : write(*,*)A(j) : enddo : stop : end -- ◥◤ ◥◤ 中原人的專屬聊天園地 天南地北黑白聊 ‧天 人 物 我‧全 人 中 原‧ █▎ ◢█◣◢ ◣◢█◣█ ███◢█◣ █◢◤ █▎ ◥█◤█ █▄█ █▎ ◥█◤ ◥█◤◥█◤▄▄ █ ████◥◣ CYCU_Talk板 歡迎您 ψby zachary28 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.137.192
文章代碼(AID): #1CEmAEq9 (Fortran)
文章代碼(AID): #1CEmAEq9 (Fortran)