我正在撰寫這個小程式,將成績存盤在一個陣列中,然后對其進行平均。該程式應該最多接受10個成績,然后停止,只接受> 0和< 100的成績。以下是我的代碼:
程式Average
隱式無
character(len = 50) f_name, l_name
整數i, j, amtOfGrades
Real grade, arraySum, avg
Real, Dimension(10)::a
做i = 1, 10
如果(.not. (j .LE. 100 .AND. j .GE. 0)) 則
write(*,*)'Enter grade: '(輸入成績)
讀(*,*)a(i)
j = a(i)
arraySum = sum(a)
avg = arraySum/10
否則
avg = arraySum/(i-1)
最后,如果
結束做
我遇到的問題是在嵌套回圈部分。我不能讓我需要的兩個條件一起作業,這兩個條件是最多 10 個等級(DO 的目的)和只接受 0-100 范圍內的等級(DO WHILE 的目的)。
uj5u.com熱心網友回復:
你需要發布一個exit陳述句,在輸入最多10個成績之前退出回圈:
程式Console1
使用, 本質 :: iso_fortran_env
隱式無
! 變數
整數,引數 :: maxcount = 10
實數 :: a(maxcount), ave
整數 :: i, count
count = 0
做i = 1, maxcount
寫(*,*) '輸入成績:'
讀(*,*) a(i)
if( a(i)<=0.0 .or. a(i)>=100.0) then
退出
end if
count = count 1
最后做
ave = sum(a)/count
Write(*,*) 'The average is: ', ave
結束程式 Console1
如果你在幫助中查看,你會看到
EXIT陳述句導致DO回圈或命名結構的執行被終止。
uj5u.com熱心網友回復:
如何做到這一點將取決于你想做什么,如果一個輸入的成績不是0 <= grade <= 100。這樣的輸入是否算在10個等級的限制之內?
如果一個不好的輸入確實算在限制之內,那么你只需要從用戶那里讀取10次,但你最終可能會得到少于10個等級的總成績。所以你將需要跟蹤有多少個等級被輸入。
這樣的代碼可能看起來像:
程式平均
隱式無
integer :: i, amtOfGrades
real :: grade, arraySum, avg
real, dimension(10) :: a
amtOfGrades = 0
做i=1,10
寫(*,*) '輸入成績:'
讀(*,*) grade
如果(0<=grade .and. grade<=100) 那么
amtOfGrades = amtOfGrades 1
array(amtOfGrades) = grade
endif
end do
arraySum = sum(a(:amtOfGrades))
avg = arraySum/amtOfGrades
結束程式
如果一個錯誤的輸入不計入限制,那么你最終將總是有10個成績,但你可能要從用戶那里讀取無限次。
這樣的代碼可能看起來像:
程式平均
隱式無
integer :: i
real :: grade, arraySum, avg
real, dimension(10) :: a
做i=1,10
做
寫(*,*) '輸入成績:'
讀(*,*) grade
如果(0<=grade .and. grade<=100) 那么
array(i) = grade
退出
endif
結束
結束做
arraySum = sum(a)
avg = arraySum/10
結束程式
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/327370.html
標籤:
