Re: [問題] 簡單的排序問題(內有程式)麻煩指教
我提供我以前作業的寫法如下:
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章