Fortran语言编程练习题

合集下载

fortran编程习题答案

fortran编程习题答案

fortran编程习题答案Fortran编程习题答案Fortran是一种古老而强大的编程语言,广泛应用于科学计算和工程领域。

在学习Fortran编程的过程中,解决习题是一种非常有效的方法。

本文将为您提供一些Fortran编程习题的答案,帮助您更好地理解和掌握这门语言。

1. 习题一:编写一个Fortran程序,计算并输出1到100之间所有整数的平方。

程序代码如下:```fortranprogram squareimplicit noneinteger :: ido i = 1, 100print *, i, i**2end doend program square```2. 习题二:编写一个Fortran程序,计算并输出斐波那契数列的前20个数。

程序代码如下:```fortranprogram fibonacciimplicit noneinteger :: i, n, fib(20)fib(1) = 0fib(2) = 1do i = 3, 20fib(i) = fib(i-1) + fib(i-2)end dodo i = 1, 20print *, fib(i)end doend program fibonacci```3. 习题三:编写一个Fortran程序,计算并输出一个给定整数的阶乘。

程序代码如下:```fortranprogram factorialimplicit noneinteger :: i, n, resultprint *, "请输入一个整数:"read *, nresult = 1do i = 1, nresult = result * iend doprint *, n, "的阶乘为:", resultend program factorial```4. 习题四:编写一个Fortran程序,计算并输出一个给定整数是否为素数。

程序代码如下:```fortranprogram primeimplicit noneinteger :: i, n, countprint *, "请输入一个整数:"read *, ncount = 0do i = 2, n-1if (mod(n, i) == 0) thencount = count + 1end ifend doif (count == 0) thenprint *, n, "是素数"elseprint *, n, "不是素数"end ifend program prime```5. 习题五:编写一个Fortran程序,计算并输出一个给定整数的所有因子。

fortran程序案例题汇编(14道)-推荐下载

fortran程序案例题汇编(14道)-推荐下载
6.用函数子程序的方法设计一个判断某个数是否是素数的程序,统计 100~1000 内的素数 的个数。 logical function prime(n) logical t t=.true. do i=2,n-1 if(mod(n,i)==0)then
t=.false. exit endif enddo prime=t end
1
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置2试时32卷,3各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并25工且52作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

fortran95期末考试题及答案

fortran95期末考试题及答案

fortran95期末考试题及答案FORTRAN95期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个是FORTRAN95中的合法变量名?A. 123abcB. _123abcC. 123D. variable-name答案:B2. 在FORTRAN95中,以下哪个语句用于定义数组?A. DIMENSIONB. DEFINEC. ARRAYD. DECLARE答案:A3. 下列哪个是FORTRAN95中的内建数据类型?A. INTEGERB. FLOATC. DOUBLED. STRING答案:A4. 在FORTRAN95中,以下哪个语句用于实现循环?A. IFB. DOC. THEND. ELSE答案:B5. 在FORTRAN95中,以下哪个语句用于条件判断?A. IFB. DOC. SELECTD. CASE答案:A6. 下列哪个是FORTRAN95中的文件打开语句?A. OPENB. CLOSEC. READD. WRITE答案:A7. 在FORTRAN95中,以下哪个语句用于实现模块化编程?A. MODULEB. FUNCTIONC. SUBROUTINED. PROGRAM答案:A8. 下列哪个是FORTRAN95中的参数传递方式?A. PASS BY VALUEB. PASS BY REFERENCEC. BOTH A AND BD. NEITHER A NOR B答案:C9. 在FORTRAN95中,以下哪个语句用于定义常量?A. DEFINEB. CONSTANTC. PARAMETERD. EQUIVALENCE答案:C10. 下列哪个是FORTRAN95中的文件关闭语句?A. OPENB. CLOSEC. READD. WRITE答案:B二、简答题(每题5分,共30分)1. 简述FORTRAN95中模块化编程的优点。

答案:模块化编程允许程序被分解成独立的模块,每个模块可以独立编译和测试,提高了代码的可读性和可维护性。

Fortran练习经典题目

Fortran练习经典题目

Fortran练习经典题目a, 输入一个年、月、日并计算它是本年度的第几天。

b.输入任意一年份,给出该年出生人的属相,如1945年出生的人的属相为“鸡”。

c.显示输出2000~2099年的任何一年的某一月的月历,所要显示的年月有键盘输入。

如2002年5月的月历形式如下;5月2002年日一二三四五六1 2 3 4 5 6 78 9 10 11 12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 2829 30 31d.显示输出2000~2099年的任何一年的年历,并写入一文本文件中。

e.以上功能都应从菜单中选择执行。

提示:a中若y为年份,d是该年的某月某日从1月1日开始经过的天数,则s=(y-1)*1.2425+d。

若s除以7后所得的余数取整后为0,则为周日,为1则周一。

program firstquestionimplicit noneinteger::q,i,ldayinteger::year,month,day,days,mday,dscharacter(len=2),dimension(1:37)::tem! 这个程序可以同时在屏幕和文本中输出计算结果。

为了计算不同的问题,引入变量q,当q=1时,计算某年月日是此年的第几天;! 当q=2时,计算某年的属相;当q=3时,计算月历;当q=4时,计算年历;当q=0时,退出此程序。

此外,此程序还设置了对输入! 年、月、日的判断,判断其是否合法。

print *,'when q=1,this program can resolve the question thatwhich day some day is in some year! this is the question one.' print *,'when q=2,this program can obtain the shengxiao of some year! this is the question two.'print *,'when q=3,this program can obtain the calendar of some month of some year(2000-2099)! this is the question three.' print *,'when q=4,this program can obtain the Almanac of some year(2000-2099)! this is the question four.'print *,'If you want to exit from this program,please input q=0.'doprint *,'input the number of q:'read *,qif(q==0) exitif (q==1) then2000 print *,'input the year, the month and the day:'read *,year,month,dayif (month>12.or.month<0) print *,'you input wrong month.' if (month>12.or.month<0) goto 2000call leapday(year,month,day,lday)if (lday==0) print *,'you input wrong day.'if (lday==0) goto 2000call numday(year,month,day,days)print '(a14,i3,a18)','The day is the',days,' day of this year.'open(25,file='days.dat',status='unknown')write(25,'(a14,i3,a18)') 'The day is the',days,' day of this year.' close(25)else if (q==2) thenprint *,'input the year:'read *,yearcall shengxiao(year)else if (q==3) then2001 print *,'input the year(2000-2099) and the month:'read *,year,monthif (year>2099.or.year<2000) print *,'you input wrong year,please input the year between 2000 and 2099.'if (year>2099.or.year<2000) goto 2001if (month>12.or.month<0) print *,'you input wrong month.' if (month>12.or.month<0) goto 2001open(27,file='yueli.dat',status='unknown')call nyli(year,month,mday,ds,tem)write(27, "(26x,i2,'月',3x,i4,'年')")month,yearwrite(27, '(18x,7a4)')'日','一','二','三','四','五','六'write(27, '(18x,7a4)')(tem(i),i=1,mday+ds)write(27,*)close(27)else if (q==4) then2002 print *,'input the year(2000-2099):'read *,yearif (year>2099.or.year<2000) print *,'you input wrong year,pleade input the year between 2000 and 2099.' if (year>2099.or.year<2000) goto 2002open(28,file='nianli.dat',status='unknown')do month=1,12call nyli(year,month,mday,ds,tem)write(28, "(26x,i2,'月',3x,i4,'年')")month,yearwrite(28, '(18x,7a4)')'日','一','二','三','四','五','六'write(28, '(18x,7a4)')(tem(i),i=1,mday+ds)write(28,*)end doclose(28)elseprint *,'you input the wrong number of q.' end ifend doend program firstquestionsubroutine shengxiao(year)implicit noneinteger::year,m,nm=year-1945if (m>=12.or.m<=-12) thenn=mod(m,12)elsen=mend ifopen(26,file='shengxiao.dat',status='unknown') if (n==0) thenprint *,'The shengxiao of this year is:鸡'write(26,*)'The shengxiao of this year is:鸡' else if(n==1.or.n==-11) thenprint *,'The shengxiao of this year is:狗'write(26,*)'The shengxiao of this year is:狗' else if(n==2.or.n==-10) thenprint *,'The shengxiao of this year is:猪'write(26,*)'The shengxiao of this year is:猪' else if(n==3.or.n==-9) thenprint *,'The shengxiao of this year is:鼠'write(26,*)'The shengxiao of this year is:鼠' else if(n==4.or.n==-8) thenprint *,'The shengxiao of this year is:牛'write(26,*)'The shengxiao of this year is:牛'else if(n==5.or.n==-7) thenprint *,'The shengxiao of this year is:虎'write(26,*)'The shengxiao of this year is:虎' else if(n==6.or.n==-6) thenprint *,'The shengxiao of this year is:兔'write(26,*)'The shengxiao of this year is:兔' else if(n==7.or.n==-5) thenprint *,'The shengxiao of this year is:尨'write(26,*)'The shengxiao of this year is:尨' else if(n==8.or.n==-4) thenprint *,'The shengxiao of this year is:蛇'write(26,*)'The shengxiao of this year is:蛇' else if(n==9.or.n==-3) thenprint *,'The shengxiao of this year is:马'write(26,*)'The shengxiao of this year is:马' else if(n==10.or.n==-2) thenprint *,'The shengxiao of this year is:羊'write(26,*)'The shengxiao of this year is:羊' else if(n==11.or.n==-1) thenprint *,'The shengxiao of this year is:猴'write(26,*)'The shengxiao of this year is:猴' end ifclose(26)end subroutine shengxiaosubroutine nyli(year,month,mday,ds,tem) implicit noneinteger::year,month,days,mday integer::i,m,ds,dts,qreal::scharacter(len=2),dimension(1:37)::temcall numday(year,month,1,days)call monday(year,month,mday)s=(year-1)*1.2425+daysds=int(s-int(s/7)*7)do i=1,37tem(ds+1)='1';tem(ds+11)='11';tem(ds+12)='12';tem(ds+2)='2';tem(ds+13)='13';tem(ds+14)='14';tem(ds+3)='3';tem(ds+15)='15';tem(ds+16)='16';tem(ds+4)='4';tem(ds+17)='17';tem(ds+18)='18';tem(ds+5)='5';tem(ds+19)='19';tem(ds+20)='20';tem(ds+6)='6';tem(ds+21)='21';tem(ds+22)='22';tem(ds+7)='7';tem(ds+23)='23';tem(ds+24)='24';tem(ds+8)='8';tem(ds+25)='25';tem(ds+26)='26';tem(ds+9)='9';tem(ds+27)='27';tem(ds+28)='28';tem(ds+10)='10';tem(ds+29)='29';tem(ds+30)='30';tem(ds+ 31)='31'; print "(26x,i2,'月',3x,i4,'年')",month,yearprint '(18x,7a4)','日','一','二','三','四','五','六'print '(18x,7a4)',(tem(i),i=1,mday+ds)print *end subroutine nylisubroutine numday(year,month,day,days)implicit noneinteger::year,month,day,days,nlogical::leapcall leapyear(year,leap)n=int(month/2)if (month<=8) thenif (mod(month,2)/=0) thendays=30*n+31*n+dayelsedays=30*(n-1)+31*n+dayend ifelseif (mod(month,2)/=0) thendays=30*(n-1)+31*(n+1)+dayelsedays=30*(n-1)+31*n+dayif(month>2) thenif (leap) thendays=days-1elsedays=days-2end ifend ifend subroutine numdaysubroutine monday(year,month,mday) implicit none integer::year,month,mday logical::leapcall leapyear(year,leap)select case (month)case (4,6,9,11)mday=30case (1,3,5,7,8,10,12)mday=31case (2)for_feb:select case (leap)case (.true.)mday=29case (.false.)mday=28end select for_febcase defaultend selectend subroutine monday subroutine leapyear(year,leap)implicit noneinteger::yearlogical::leapif (mod(year,4)/=0) thenleap=.false.else if (mod(year,100)/=0) thenleap=.true.else if (mod(year,400)/=0) thenleap=.true.elseleap=.false.end ifend subroutine leapyearsubroutine leapday(year,month,day,lday) implicit none integer::year,month,day,lday logical::leapcall leapyear(year,leap)select case (month)case (4,6,9,11)if (day>30.or.day<1) thenlday=0elselday=1end ifcase (1,3,5,7,8,10,12)if (day>31.or.day<1) thenlday=0elselday=1end ifcase (2)for_feb:select case (leap)case (.true.)if (day>29.or.day<1) thenlday=0elselday=1end ifcase (.false.)if (day>28.or.day<1) thenlday=0elselday=1end ifend select for_febcase defaultend selectend subroutine leapday素数是只能被1与其本身整除的数,下面给出一种寻找素数的方法:a生存一个数组,将其所有的元素初始化为1b 从数组下标为2的元素开始,每次寻找数值为1 的数组元素。

fortran程序案例题汇编(14道)

fortran程序案例题汇编(14道)

1. Fibonacci数列定义如下:F1=1 F2=1F n=F n-1+F n-2 (n>2)求Fibonacci数列的前30项。

integer f(30),i f(1)=1 f(2)=2 do i=3,30 f(i)=f(i-1)+f(i-2) enddo print*,f end2.输入10个学生的总分,求每个学生的名次integer s(10),a(10),i,jdo i=1,10read*,s(i)enddo do i=1,10a(i)=1do j=1,10if(s(i)<s(j)) a(i)=a(i)+1enddoenddodo i=1,10print*,s(i),a(i)enddoend3.给定一组数,按照从小到大的顺序输出。

integer a(10) integer p do i=1,10 read *,a(i) enddo do j=1,9 p=j do i=j+1,10 if (a(i)<a(p)) p=i enddo if (p/=j) thent=a(p);a(p)=a(j);a(j)=t endif enddo print *,(a(i),i=1,10) end4.输入若干名学生的学号和三门课程 (语数英) 的成绩,要求从键盘输入一个学生的学号,能打印出该学生的三门功课成绩和总分。

character*6,dimension(:),allocatable::xueinteger,dimension(:,:),allocatable::g integer,dimension(:),allocatable::zong integer i,j,n character*6,xhprint *," 请输入学生的个数"read *,nallocate(xue(n))allocate(g(n,3))allocate(zong(n))do i=1,nread *,xue(i),(g(i,j),j=1,3)enddodo i=1,nzong(i)=0do j=1,3zong(i)=zong(i)+g(i,j)enddoenddoprint *," 请输入你要打印的学生的学号"read *,xhdo i=1,nif(xue(i)==xh)thenprint *,(g(i,j),j=1,3),zong(i)exitendifenddoend5.编写一个函数子程序计算所输入两个整数m、n 的最大公约数。

FORTRAN习题答案

FORTRAN习题答案

FORTRAN习题答案习题⼆⼀、问答题1. 给出下⾯变量名称,哪些是合法变量?哪些是⾮法变量?说明原因。

Count 、num_2、x&y 、4x+5y 、china-suzhou 、$us 、AbCdE 、Mr.bai 、t5、_another 、school_class_25、#125、2002Y 、π、β、A01/02、alpha 、date(1) 1. 判定下⾯整数,指出哪些是合法整数,哪些是⾮法整数?说明原因。

-0、+ 215、$125、3,245,895、5.3245、5#384、-524_3、#5DFE 、23-345、16#1A2B 、38#ABCD 、8#275_2、+327890、4 #3212. 判定下⾯实数,指出哪些是合法实数,哪些是⾮法实数?说明原因。

-0E2、45.2345E3.5、-5489E25_8、-.2345E-35、$185.45E 、+ 2.753425E24_3、 58D85、+0.E-0、-00000.001E5、5,443,223.44、-12 34E+2、+ 18.5E 18、2.5E42习题三⼀、选择题1.下⾯是V isual Fortran 中正确的表达式是。

(A )A*COS(X)+∣B ∣(B )2*EXP(2*X)/SQRT(16.0)(C )B 2-4AC (D )MOD (24.5,0.5)2.下⾯算术赋值语句中正确的语句是。

(A )M*N=(X-Y)/Z (B )+R=A+B/C(C )X=Y=Z-1.0 (D )Y=A*B/C/D3.算术表达式1/3+2/3的值为。

(A )0 (B ) 1 (C ) 0.99999999 (D )值不确定⼆、问答题1. 将下列代数式⽤Visual Fortran 表达式描述:①②③ 4sin 3A-3sinA+sin3A ④ 2.执⾏下列赋值语句后,变量中的值。

变量的类型遵循I —N 规则。

fortran考试题及答案分开

fortran考试题及答案分开

fortran考试题及答案分开1. 以下哪个选项是Fortran语言中正确的整型变量声明?A. INTEGER xB. REAL xC. COMPLEX xD. LOGICAL x答案:A2. Fortran程序中,哪个关键字用于定义数组?A. ARRAYB. LISTC. VECTORD. DIMENSION答案:D3. 在Fortran中,以下哪个选项是正确的条件语句?A. IF (x > 0) THENPRINT *, 'x is positive'B. IF x > 0 THENPRINT *, 'x is positive'C. IF (x > 0)PRINT *, 'x is positive'D. IF x > 0PRINT *, 'x is positive'答案:A4. Fortran中用于循环结构的关键字是什么?A. LOOPB. ITERATEC. DOD. FOR答案:C5. 如何在Fortran程序中包含另一个文件?A. 使用INCLUDE语句B. 使用IMPORT语句C. 使用INCLUDE关键字D. 使用IMPORT关键字答案:A6. Fortran中,哪个函数用于计算数组元素的总和?A. SUMB. TOTALC. AGGREGATED. ACCUMULATE答案:A7. 在Fortran中,如何声明一个具有默认值的变量?A. INTEGER :: x = 0B. INTEGER x = 0C. INTEGER x DEFAULT 0D. INTEGER x = DEFAULT 0答案:A8. Fortran程序中的主程序必须以哪个关键字开始?A. PROGRAMB. MAINC. PROCEDURED. FUNCTION答案:A9. 在Fortran中,如何声明一个二维数组?A. INTEGER :: matrix(10, 10)B. INTEGER :: matrix[10][10]C. INTEGER :: matrix(10)(10)D. INTEGER :: matrix(10,10)答案:A10. Fortran中用于计算数组元素平均值的函数是什么?A. AVGB. MEANC. AVERAGED. SUM答案:C。

Fortran练习题

Fortran练习题

● 1.输出a,b,c的值,其中a=28,b=34,c=60.5integer a,b,c定义整型integera=28;b=34;c=60.5‘=’为赋值符号,把右赋给左print*,'a=',a,'b=',b,'c=',c输出格式:print*,’文字内容’,该输出变量end结束必须以end作结● 2.输出x和y的值real x,y定义实型realprint*,'输入x和y:'read*,x,y读入格式:read*,读入变量print*,x,yend● 3.求三个数的和及平均值real sum,averead*,a,b,csum=a+b+cave=sum/3print*,'和为',sumprint*,'平均值为',aveend● 4.现有长1500m宽1000m的地块要拍卖建造住宅小区,地块中央有一半径为100m的圆形公共绿地不属于拍卖范围,每平方米地价为0.5万元,编写程序计算该地块拍卖总价,并输出。

real area,moneyread*,a,b,rarea=a*b-3.14*r**2a b为a**bmoney=area*0.5print*,'总价为',money,'万元'print*,'地长为',aprint*,'地宽为',bprint*,'绿地半径为',rend● 5.求三个数中的最大数与最小数real max_x,min_xread*,a,b,cmin_x=aif(b<min_x)then if循环:if(条件)then换行运行式1 min_x=bend if if后必有end if作结if(c<min_x)thenmin_x=cend ifmax_x=aif(b>max_x)thenmax_x=bend ifif(c>max_x)thenmax_x=cend ifprint*,'最大值:',max_xprint*,'最小值:',min_xend● 6.输入学生成绩,评价成绩的优、良、中、及格和不及格,并输出read*,sif(s<60)thenprint*,'该生成绩为不及格'else if(s<70)then else if表示另一个if,但是条件已将if的条件去除print*,'该生成绩为及格'else if(s<80)thenprint*,'该生成绩为中'else if(s<90)thenprint*,'该生成绩为良'else else表示在if,else if所包含的条件以外的情况时print*,'该生成绩为优'end ifend●7.求2到100之内的素数,并输出integer n,w,in=3do while(n<=100)do while循环表示在满足括号内条件时运行的循环w=0;i=2do while(i<=(n-1).and.w==0).and.表示逻辑条件和,两个前后两个条件同时满足if(mod(n,i)==0)then mod(a,b)函数表示求余,a÷b=c……d的d为结果w=1elsei=i+1end ifend do do,do while后跟end do作结if(w==0)then‘==’表示相等print*,n,'不是素数'elseprint*,n,'是素数'end ifn=n+1end doend●8.判断一个整数N能否被3和5整除read*,nif(mod(n,3)==0.and.mod(n,5)==0)thenprint*,n,'能被3和5整除'elseprint*,n,'不能被3和5整除'end ifend●9.求s=∑n!(20)integer::n,i,k,sum=0在integer/real等后跟::可在后直接对变量赋值do n=1,20do i=j,k,l,j表示i的初值,k表示末值,l表示间隔(为1可省略)循环次数即为(k-j)/l+1 k=1do i=1,nk=k*iend dosum=sum+kend doprint*,'前20个自然数的阶乘和为:',sumend●10.求1-1/2+1/3-1/4+…+1/99-1/100real s,ms=0m=1do while(m<=100)s=s+(-1)**(m+1)/mm=m+1end doprint*,send●11.判断2000-2500年中每一年是否为闰年,并打印判断结果、闰年的条件是:年份能被4整除,但不能被100整除,或者能被100整除又能被400整除integer ss=2000do while(s<=2500)if(MOD(s,100)==0.and.MOD(s,400)==0)thenprint*,s,'是闰年'else if(mod(s,4)==0.and.mod(s,100)/=0)thenprint*,s,'是闰年'elseprint*,s,'不是闰年'end ifs=s+1end doend●12.输入一个班30名学生的成绩,求平均分、最高分、不及格人数和不及格率dimension G(3)定义数组dimension G(n)n为数组内元素个数read(*,*)(g(j),j=1,3)g(i)同G(i),fortran中大小写无差别s=0.0;x=0赋值为0.0时已默认该变量为实型max_x=G(1)G(1)为数组G的第一个元素do i=1,3s=s+G(i)if(G(i)<=59)thenx=x+1end ifif(G(i)>=max_x)thenmax_x=G(i)end ifend doave=s/30k=x/30print*,'平均分为',aveprint*,'最高分为',max_xprint*,'不及格人数为',xprint*,'不及格率为',kend●13.输入8个数,求最大值,并判断最大值是否唯一,输出最大值及是否唯一的结论dimension G(8)read(*,*)(G(j),j=1,8)n=0max_x=G(1)do i=2,8if(G(i)>max_x)thenmax_x=G(i)else if(G(i)==max_x)thenn=n+1end ifend doif(n==0)thenprint*,'无'elseprint*,'有'end ifprint*,'max=',max_xend●14.求R1、R2、R3并联电阻值real i,rread*,r1,r2,r3,ur=1/(1/r1+1/r2+1/r3)i=u/rprint*,'电流值为',iend●15.计算2000年末人口数,人口增长率为r人口1950年人口数为p0real pnread*,p0,r,npn=p0*(1+r)**nprint*,'2000年末人口数为',pnend●16.计算虚温real tv,q,eread*,t,p,uwes=6.11*2.718**(17.27*(t-273.16)/(t-35.86))e=es*uwq=0.64*e/(p-0.378*e)tv=(1+0.608*q)*tprint*,tvend●17.输出绝对值最大的数real max_x,i,jdimension G(5),H(5)read(*,*)(g(j),j=1,5)do i=1,5h(i)=ABS(g(i))ABS(i)函数为绝对值函数max_x=max(h(1),h(2),h(3),h(4),h(5))max(a,b,c)为最大值函数,结果为最大值end doprint*,max_xend●18.求火车速度与行驶路程real(8)v0,t1,t2,v,x,t,av0=60*1000.0/3600t=(50-10)*60a=100*1000.0/3600.0/3600.0v=v0+a*tx=v0*(t+10*60)+0.5*a*t**2v=int(v*100.0+0.5)/100.0(x*100.0+0.5)/100.0可将得数四舍五入并精确到三位小数x=int(x*100.0+0.5)/100.0print*,'火车的速度为',vprint*,'行驶的路成为',xend●19.输出三个站点的总雨量和平均雨量输入3个气象站5个月(汛期)雨量数据,统计每个气象站总雨量和平均雨量,计算五月、六月、七月、八月、九月的平均雨量,输出每个气象站每个月的雨量、总雨量和平均雨量,以及五月、六月、七月、八月、九月的平均雨量站名汛期各月雨量(毫米)5月6月7月8月9月江阴气象站76.8176.5308.141.069.6定波闸71.5208.5352.147.262.6肖山65.5200.0239.744.363.0program rainwrite(*,"(27x,'5月6月7月8月9月')")write(*,"(1x,'输入江阴气象站的雨量数据:',\)")1x表示一个空位read(*,100)s11,s12,s13,s14,s15write(*,"(1x,'输入定波闸站的雨量数据:',\)")\为换行符read(*,100)s21,s22,s23,s24,s25write(*,"(1x,'输入肖山气象站的雨量数据:',\)")read(*,100)s31,s32,s33,s34,s35total11=s11+s12+s13+s14+s15;av11=total11/5total21=s21+s22+s23+s24+s25;av21=total21/5total31=s31+s32+s33+s34+s35;av31=total31/5av1=(s11+s21+s31)/3;av2=(s12+s22+s32)/3av3=(s13+s23+s33)/3;av4=(s14+s24+s34)/3av5=(s15+s25+s35)/3write(*,"(20x,'5月6月7月8月9月总雨量平均雨量')")write(*,200)s11,s12,s13,s14,s15,total11,av11write(*,x)该输出结果都按x格式write(*,300)s21,s22,s23,s24,s25,total21,av21write(*,400)s31,s32,s33,s34,s35,total31,av31write(*,500)'5月',av1,'6月',av2,'7月',av3,'8月',av4,'9月',av5100format(f4.1,2x,f5.1,2x,f5.1,2x,f4.1,2x,f4.1)f4.1表示共占四位,一位小数(小数点也占一位)200format(1x,'江阴气象站的雨量:',f4.1,2x,f5.1,2x,f5.1,2x,f4.1,2x,f4.1,2x,f5.1,2x, f5.1)x format()表示上文中x的格式300format(1x,'定波闸站的雨量:',f4.1,2x,f5.1,2x,f5.1,2x,f4.1,2x,f4.1,2x,f5.1,2x, f5.1)400format(1x,'肖山气象站的雨量:',f4.1,2x,f5.1,2x,f5.1,2x,f4.1,2x,f4.1,2x,f5.1,2x, f5.1)500format(1x,a5,'平均雨量:',f5.1,'毫米')end20.输出九九乘法表integer a(9,9)forall(i=1:9,j=1:9)a(i,j)=i*j forall循环表示逐一且同时循环write(*,*)'************九九乘法表************'write(*,*)'123456789'write(*,*)'----------------------------------------'do i=1,9write(*,100)i,(a(i,j),j=1,i)end dowrite(*,*)'----------------------------------------'100format(10i4)●21.输入整数,判断能否被3或5整除,如能整除,则输出此数,否则不输出。

fortran 编程练习题

fortran 编程练习题
if(a(s)<=b(k).and.s<=m)then c(i)=a(s) s=s+1 else if(a(s)>b(k).and.k<=n)then c(i)=b(k) k=k+1 else if(s>m)then c(i)=b(k) k=k+1 else if(k>n)then c(i)=a(s) s=s+1 end if end if end if end if end do write(*,*)"排列整合后的数列为:" write(*,"(1x,7f10.4)")(c(i),i=1,m+n) end
program main implicit none real a(1:25),b(1:25),c(1:50) integer i,s,k,m,n write(*,*)"输入数组a元素个数m=" read(*,*)m write(*,*)"输入数组a各元素:" read(*,*)(a(i),i=1,m) write(*,*)"输入数组b元素个数n=" read(*,*)n write(*,*)"输入数组b各元素:" read(*,*)(b(i),i=1,n) s=1 k=1 do i=1,m+n
3.输出所有水仙花数(水仙花数是指一个三位正整数,其各位数字的 立方和等于该数本身)。
program main implicit none integer a,b,c,d do 5 d=100,999 a=mod(d/100,10) b=mod(d/10,10)
c=mod(d,10) if (d==a**3+b**3+c**3) then write(*,15) 15 format(1x,i3,"为a水仙花数" ) else write(*,25) 25 format(1x,i3,"不为水仙花数" ) endif 5 d=d+1 stop end

FORTRAN程序设计复习题

FORTRAN程序设计复习题

FORTRAN程序设计复习题一、选择题(1) 下列各FORTRAN表达式中合法的是A) S+T*2P >= 0.0 B) .NOT. (A*B+C)C) A2+B2/(C+D) <= 0.0 D) (A+B).NOT.A*B >0.0(2) 数学式(3/5)e x+y的FORTRAN表达式是A) 3*EXP(X+Y)/5 B) 3*E* *(X+Y)/5.0C) (3/5)*EXP(X+Y) D) (3.0/5.0)EXP(X+Y)(3) 下列FORTRAN表达式中不合法的是A) A > B.EQV.C > D B) A.AND.B.AND.C.AND.DC) .NOT.(X <= 0.0) D) A < B < C < D(4) 下列叙述中不正确的是A) FORTRAN子程序可以单独编译B) 对一个FORTRAN源程序进行编译和连接无误后可生成可执行文件C) 即使编译和连接都正确无误,FORTRAN程序运行时仍可能出错D) FORTRAN连接的主要任务是把函数库中的函数翻译成机器指令(5) 在下列FORTRAN77运算符中,优先级最高的是A) .AND. B) .NOT. C) .OR. D) ==(6) FORTRAN表达式“6/5+9/2**3/2”的值为A) 33 B) 1 C) 5 D) 3(7) 下列FORTRAN 表达式中,合法的是A) 0.0 <= X .AND..NOT. X>=10.0 B) 0.0 >= X < 10.0C) 0.0 < X >= 10.0 D) 10.0 <= X .OR..AND.X > 0.0(8) 关于编译一个FORTRAN源程序文件,下列说法中错误的是A) 允许编译只有一个主程序而没有子程序的源文件B) 允许编译有多个子程序的源文件C) 允许编译只有一个子程序而没有主程序的源文件D) 允许编译有多个主程序的源文件(9) 在FORTRAN77源程序中,续行标志符必须放在A) 第1列 B) 第1-6列 C) 第6列 D) 第5列(10) 下列关于"SUBROUTINE MAP(X,Y)"语句行的叙述中,不正确的是A) 这是子程序的第一个语句 B) 字符串"MAP"是子程序名C) 变量X是子程序的形参 D) 子程序执行后,MAP将返回整型数据(11) FORTRAN表达式"2/4+0.5"的值是A) 0.5 B) 1 C) 1.0 D) 0(12)FORTRAN表达式"MOD(4.9,1.3)"的值是A)1.3 B)0.0 C)4.9 D)1.0(13)下列FORTRAN运算符中,优先级最低的是A)逻辑运算符.AND. B)算术运算符* C)关系运算符 >= D)算术运算符+(14)下列语句函数的定义中正确的是A)F(X,Y)=(X+Y)/(X*Y)+7.0B )FUNCTION FUN(I ,J ,K)=3*I +2*J +0.5*KC )H(A ,B ,C(I))=SIN(A)+SIN(B)+C(I) D)S(A ,B ,C)=A*B +S(A*A ,B ,C)(15)下列标识符中,不属于FORTRAN 常量的是A ).TRUE.B )FALSEC )ˊROOT =ˊD )ˊ123.0ˊ (16)"整型变量M 能被整型变量K 整除"的FORTRAN77表达式是A )MOD(M ,K)=0B )M -M/K*K .EQ. 0C )MOD(K ,M)=0D )MOD(M ,K)=0 == .TRUE.(17)设有下列数组说明语句:REAL:: A(1:10,-1:10)该数组说明语句定义了数组A 中的元素个数为A )100B )110C )120D )121 (18) 按隐含规则,语句 IP=3.1415926 执行之后,IP 的值是A) 3 B) 3.1416 C) 3.141592D)3.141593(19) 下列数据中,不符合 FORTRAN 常量表示法的是A) -25.6 B) 2.758D3 C)‘FOOT’‘=’ D) TRUE (20) 设C 是复型变量,A 与B 为有定义的实型变量,下列赋值语句中合法的是 A) C=A+B B) C=(3.5,1.5**2) C) C=(2.0,3D-2) D) C=(A +B,A-B)(21) 有矩阵(数组) ⎥⎦⎤⎢⎣⎡=22221111B 下列DATA 语句中正确的是A) DATA B/4*1.0,4*2.0/B) DATA((B(I,J), J=1,4), I=1,2)/4*1.0, 4*2.0/ C) DATA B/4*(1.0,2.0)/D) DATA((B(I,J),I=1,2), J=1,4)/4*1.0, 4*2.0/(21) 在使用DO 循环及循环嵌套时,下列叙述中正确的是A) 不着可以从循环体内转到循环体外,也可以从循环体外转到循环体内 B) 外循环与内循环的DO 循环控制变量可以不同.也可以相同C) 可以从循环体内转到循环体外,但不能从循环体外转到循环体内 D) DO 循环控制变量在循环体内可以再赋值,也可以被引用 (22) 在FORTRAN 表达式中,各种运算的顺序是A) 逻辑运算,关系运算,算术运算 B) 算术运算,关系运算,逻辑运算 C) 关系运算,逻辑运算,算术运算 D) 关系运算,算术运算,逻辑运算 (23) 赋值语句X=4**(6/12) 执行后,实型变量X 的值是A) 2 B) 2.0 C) 1 D) 1.0 (24) 为了保证正确出数据,格式编辑符Ew.d 中w 与d 的关系应该是A) w>d B) w>d+2 C) w>d+4 D) w>d+6 (25) 设下列各语句中用到的数组都已定义,则下列语句中正确的是A) READ(*,*)(I,A(I),I=1,10) B) READ(*,*)(B,(I,J),I=1,10,J=1,10) C) READ(*,*)N,(A(I),I=1,N) D) READ(*,*)(I=1,10,A(I))(26) 下列DO语句中,不正确实现循环的是A) DO 10 S=-1.6,-5.3,-0.4 B) DO 10 K=-1.6,-5.3,-0.4C) DO 10 S=-5.3,-1.6,-0.4 D) DO 10 K=1.6,5.3,-1.4(27) 下列说法中正确的是A) 块IF结构中的THEN块或ELSE块不能是空块B) 块IF结构中至少有一个ELSE IF 语句或ELSE语句C) 每个ELSE IF 语句要有一个对应的END IF语句D) 一个块 IF 结构中只能有一个END IF语句(28) 下列数组说明语句中正确的是A) INTEGER A(-1:5,0:6) B) REAL M(10:5)C) DOUBLE Y(1:N+1) D) DOUBLE Z(14)(29) 设有一个FORTRAN77子程序如下: SUBROUTINE SS(X,Y,S,T)S=X+Y T=X*Y End调用上述子程序的正确语句是A) CALL SS(2.4,W*W,5,5.9,Z) B) CALL SS(0.0,4.2,P,Q,R)C) CALL SS(F,G,7.2,5.1) D) CALL SS(4.4*I,5.8*J,C,D)(30) 在下列语句函数的定义中正确的是A) F(X,Y)=(X+Y)/(X*Y)+7.0 B) FUNCTION(I,J,K)=3*I+2*J+0.5*KC) H(A,B,C(I))=SIN(A)+SIN(B)+C(I) D) S(A,B,C)=A*B+S(A*A,B,C)(31) COMMON语句的功能是A) 给同一程序模块中的若干变量分配同一存储单元B) 给不同程序模块中的变量分配相同的存储单元C) 给程序中任意两个变量分配相同的存储单元D) 给同一程序模块中的不同变量分配相同的存储单元(32) 下列表达式中值为整数4的是A) SQRT(16.0) B)27/6 C) 16**0.5 D) 4*1.0(34) 语句K=2+3.0**2/2执行后,整型变量 K的值是A) 6.5 B) 5 C) 6 D) 7(36) 适用于字符型 I/O的 FORTRAN77格式编辑将是A) Fw.d B) Iw.d C) A D) Gw.d(37) 给定子例行程序如下SUBROUTINE SUB(K,A) B=K+2 A=A+B END下列调用语句中正确的是A) CALL SUB(N,N) B) CALL SUB(X,X)C) CALL SUB(N+2,X) D) CALL SUB(N,X+3)(38) 下列FORTRAN语句中,正确的是A) READ(*,*) (N,A(K),K=1,N) B) WRITE(*,*) (M(K,J),K=1,10, J=1,10)C) WRITE(*,*) (10,A(K),K=1,10) D) DATA A,B,C/2*0.0/(39) 对于下列给定的FORTRAN说明和赋初值语句:INTEGER A(2,2)DATA A/3,4,5,6/数组元数A(2,1)的初值为A) 3 B) 5 C) 4 D) 6(40) 下列对公用区的说明语句中错误的是A) COMMON A(5), B B) COMMON/AB/ A(5), B C) COMMON AB/A(5), B/ D) COMMON//A(5), B(41) 下列各逻辑IF语句中正确的是A) IF(X<0.0) THEN 10B) IF(X>=0.0).AND.(X.LT.1.0)Y=2*X+1.0C) IF(0.0>=X<=1.0) Y=2*X+1.0D) IF(X >= 0.0.AND.X <=1.0) Y=2*X+1.0二、阅读题program examplereal a,b,ca=1.0b=2.0c=3.0write(*,"(3(F5.2))") a,b,cend程序运行的结果是:4、阅读下列FORTRAN程序:program exampleimplicit nonereal a,b,anscharacter operatorread(*,*) aread(*,"(A1)") operatorread(*,*) bselect case(operator)case('+')ans = a+bcase('-')ans = a-bcase('*')ans = a*bcase('/')ans = a/bcase defaultwrite(*,"('Unknown operator ',A1)")operatorstopend selectwrite(*,"(F6.2,A1,F6.2,'=',F6.2)")a,operator,b,ansstopend运行上述程序时,如果从键盘输入100<回车>?<回车>200<回车>则最后输出的结果为:7、阅读下列FORTRAN程序:program exampleimplicit noneinteger :: dest = 6integer floordo floor=1, destif ( floor==2 .or. floor==4 ) cycle write(*,*) floorend dostopend程序运行的结果是:8、阅读下列FORTRAN77程序:program exampleimplicit noneinteger, parameter :: limit=10integer counterinteger :: ans = 0counter = 1do while( counter <= limit )ans = ans + countercounter = counter + 2end dowrite(*,*) ansstopend程序运行的结果是:9、阅读下列FORTRAN程序:program exampleimplicit noneinteger, parameter :: students = 5integer :: student(students) = (/ 80, 90, 85, 75, 95 /)integer iwrite(*,*) "Query:"read(*,*) iif ( i<=0 .or. i>students ) exitwrite(*,*) student(i)end dostopend运行上述程序时,如果从键盘输入3<回车>则最后输出的结果为:12、阅读下列FORTRAN程序:program exampleimplicit nonereal :: a=1.0call ShowInteger(a)call ShowReal(a)stopendsubroutine ShowInteger(num)implicit noneinteger :: numwrite(*,*) numreturnendsubroutine ShowReal(num)implicit nonereal :: numwrite(*,*) numreturnend程序运行的结果是:13、阅读下列FORTRAN程序:program exampleimplicit noneinteger, parameter :: row = 2integer, parameter :: col = 2integer :: m(row, col)integer rinteger cdata ((m(r,c), r=1, 2), c=1,2) /1,2,3,4/write(*,"(I3,I3,/,I3,I3)") (( m(r,c), c=1,2 ), r=1,2) stopend14、阅读下列FORTRAN程序:program ex0805implicit noneinteger :: a = 1integer :: b = 2write(*,*) a,bcall add(a)call add(b)write(*,*) a,bstopendsubroutine add(num)implicit noneinteger :: numnum = num+1returnend程序运行的结果是:15、阅读下列FORTRAN程序:program exampleimplicit noneinteger, parameter :: size=10integer::a(size)=(/ 5,3,6,4,8,7,1,9,2,10 /)integer :: i,jinteger :: tdo i=1, size-1do j=i+1, sizeif ( a(i) > a(j) ) thent=a(i)a(i)=a(j)a(j)=tend ifend dowrite(*,"(10I4)") astopend程序运行的结果是:18、阅读下列FORTRAN程序:module globalimplicit nonereal a,bcommon a,bend moduleprogram exampleuse globalimplicit nonea=1.0b=2.0call sub()end programsubroutine sub()use globalimplicit nonewrite(*,*) a,breturnend subroutine程序运行的结果是:23、阅读下列FORTRAN程序:CHARACTER(LEN=10) ACHARACTER(LEN=6) BDO I=1,10A(I:I)=' 'END DOA(1:5)='ABCDE'B='FGHIJK'A(4:9)=BWRITE(*,100) A100 FORMAT(1X,A)END程序运行结果是:26、阅读下列FORTRAN程序:COMMON /COM/M(5),N(4)CALL FIBWRITE(*,'(1X,4I3)') NENDSUBROUTINE FIBCOMMON /COM/J(5),K(4)DO I=1,4K(I)=J(I+1)-J(I)END DOENDBLOCK DATACOMMON /COM/K(5),L(4)DATA K/8,7,10,4,13/END程序运行的结果是:27、阅读下列FORTRAN程序:N=0DO K=30,0,-2DO L=-10,10,1N=N+1END DOEND DOWRITE(*,*) NEND程序运行结果是::29、阅读下列FORTRAN程序:DIMENSION M(3,4)DATA M/4*2,4*1,4*-1/N=0DO K=1 ,4N=N+M(1,K)END DOWRITE(*,*) NEND运行上述程序后,输出的N的值为30、阅读下列FORTRAN77程序:READ(*,*) YIF (Y.LE.0.0) THENZ=0 .0ELSE IF ((Y < 5.0).AND.(Y /= 2.0)) THENZ=1/(Y+2)ELSE IF (Y <= 10.0) THENZ=1/YELSEZ=10.0END IFWRITE (*,*)ZEND在执行上述程序时,由键盘输入2.0最后输出的Z值为三、编程题教科书中:第四章—第九章的习题,以及上机练习题。

Fortran平时编程练习及答案(上)

Fortran平时编程练习及答案(上)

1:编程找出并输出100—150之间和400—450之间能被9整除的数。

程序:program ex0401implicit noneinteger ido i=100, 150if(mod(i,9).eq.0) thenwrite(*,10) i10 format(i3)end ifend dodo i=400, 450if(mod(i,9).eq.0) thenwrite(*,20) i20 format(i3)end ifend doend运行结果:2:回文数是指正读与反读都一样的数。

如:232,编程求100到999之间的回文数。

程序:program ex0402implicit noneinteger ainteger cinteger ido 10 i=100,999a=i/100 !百位上的数字c=mod(i,10) !个位上的数字if(a.eq.c) thenwrite(*,20) i20 format(i8)endif10 continueEnd运行结果:3:输出所有水仙花数(水仙花数是指一个三位正整数,其各位数字的立方和等于该数本身)编程:program ex0403implicit noneinteger ainteger binteger cinteger iwrite(*,*)'水仙花数:'do 10 i=100,999a=i/100 !百位上的数字b=mod(i,100)/10 !十位上的数字c=mod(i,10) !个位上的数字if(i.eq.a**3+b**3+c**3) thenwrite(*,20)i,a,b,c20 format(5x,i3,'=',i2,'^3+',i2,'^3+',i2,'^3')endif10 continueend运行结果:4:编程输出如下图形** * ** * * * ** * * * * * ** * * * ** * **编程:program ex0404implicit noneinteger i,jcharacter a(7)do i=1,7 !输入数组a(i)='*'end dodo j=1,4 !前四行write(*,'(<3*(4-j)>x,10a3)')(a(i),i=1,2*j-1)end dodo j=3,1,-1 !后三行write(*,'(<3*(4-j)>x,10a3)')(a(i),i=1,2*j-1)end doend运行结果:5:输入n个数,找出所有大于n个数的平均值的那些数及最小数。

大学FORTRAN语言试题

大学FORTRAN语言试题

大学FORTRAN语言试题一、选择题(15×1分=15分)1.Fortran程序设计语言允许使用的专用字符集是。

A.(),.;[]+-*/=:空格B.(),.αβ+-*/=:空格C.(),.+-*/$'=:空格D.{},.;?+-*/=:空格2.按隐含规则确定变量的数据类型,Fortran表达式(A112/BC1+15.123456789.0_8)-(1000.0_4/3.0+ABI*ABJ)的值的数据类型为。

A.复型B.整型C.实型(种别为8)D.实型(种别为4)3.执行循环语句DO I=0.5,4.5,1.5,正常退出循环后,循环执行的次数和循环变量I的值分别为。

A.4和4.5 B.5和5 C.4和6 D.5和64.语句A(M(I))=MOD(I,7)是。

A.函数定义语句B.赋值语句C.非法语句D.说明语句5.下列不合法的是:_____A.A<B<C<D B..NOT.(X<0) C.A>B.EQV.C>D D.A.AND.B.AND.C6.若数组说明符ARRAY(-5:5,-10:0)的元素个数为。

A.144 B.121 C.110 D.1007.设循环初值、终值和增量分别为M1,M2和M3,循环次数的计算公式是。

A.INT((M2-M1)/M3)B.INT((M2-M1)/M3)+1C.MAX(INT(M2-M1+M3)/M3,0) D.MIN(INT(M2-M1+M3)/M3,0)8.下列字符表达式中正确的是。

A.’ABCD’+’MN’’D’B.’ABCD’//’MN’’D’C.CHAR(65)+’N’//’CH’D.’123 45’-’5’9.语句integer,dimension(1:-1)::a,下列说法中正确的是:_____A.a数组的元素个数为0 B.a数组的元素个数为3C.a数组的元素个数为1 D.该说明语句是错误的10.子程序的虚元可以是:A.变量名、数组名、过程名B.变量名、数组名、过程名和符号常量名C.变量名、数组名、数组片段、过程名D.任意符号名11.c为复型量,下列正确的是:A.c=(1/2,1/5) B.c=sqrt((0.1,4.5)) C.c=1.0+4i D.c=(x,y)12.数学式的FORTRAN表达式是()A.2/3*SIN(3.14/4)B.2SIN(3.14/4)/3C.2.0*SIN( /4.0)/3.0 D.2*SIN(3.14/4)/313.执行下列赋值语句后,变量X的值为()X=4+36**(7/14)A.10.0 B.5.0 C.10 D.514.下列不合法的是:A.A<B<C<D B..NOT.(X<0) C.A>B.EQV.C>D D.A.AND.B.AND.C15.执行下列程序时由键盘输入13579.2468,输出结果为:READ’(2(F4.1,2X))’,A,BPRINT’(2(F4.1,2X))’,A,BA.135.7 246.8 B.13.5 24.6 C.**** **** D.*** ****二、填空题(15×1分=15分)1.FORTRAN90自由格式的程序续行标记为______字符,一般写在_____位置;自由格式的程序注释标记为____字符。

FORTRAN90练习题

FORTRAN90练习题

一.选择题1.语句OPEN(3,FILE=‘ABC’)打开的是文件。

A.有格式顺序存取B.无格式顺序存取C.有格式直接存取D.无格式直接存取2.调用子程序时,假设实参可以是常数、内在函数及表达式,其相应形参是。

A.变量名B.数组名C.过程名D.*3.下列数据中,不符合FORTRAN90常量表示的是。

A.-25.6 B.3.2344D0 C.’BOOT’’=’D.TRUE4.圆心在原点的两个同心圆,半径分别为2和4。

描述点(X,Y)在小圆外,大圆内(包括在两圆周上)的表达式是。

A.ABS(X)<=4.0 .AND. ABS(Y)>=2.0 B.2.0>=SQRT(X*X+Y*Y)<=4.0C.X*X+Y*Y<=16.0 .AND. X*X+Y*Y>=4.0 D.(X.OR.Y)>=2.0 .AND. (X .OR.Y)<=4.05.下列字符串中可用作FORTRAN90变量名的是。

A.ABC B. A-BCD C. 2ABC D. AB.C6.下列数据中不符合FORTRAN90常数表示的为。

A. 21.50B. +0.0D0C. .TRUE.D. $10007.表达式:-B+SQRT(B*B-4.0*A*C).LE.3E-5值的类型是。

A. 逻辑型B. 整型C. 实型D. 字符型8.按隐含约定,设X=2.5,Y=1.0,Z=3.0, 执行赋值语句I=X+Y/Z后I的值为。

A. 2.0B. 2C. 3D. 3.09.下列语句中那个语句是错误的是。

A. READ(*,*)XB. READ*,XC. PRINT(*,*)XD. PRINT *,X10.说明语句REAL A(1:2,-1:10)说明数组A的元素个数为。

A. 11B. 12C. 22D. 2411.M能被N整除的FORTRAN表达式为。

A. (M/M)=0B. (M MOD N).EQ.0C. (M/N).EQ.0D. MOD(M,N).EQ.012.以下关于FORTRAN90中有关虚参、实参的说法中,不正确的是。

大学FORTRAN考试试题样题

大学FORTRAN考试试题样题

《高级语言程序设计 (FORTRAN)》考试样题一、选择题(每小题 2 分,共 40 分)1. 下列标识符中不能作为 FORTRAN 的合法变量名的是_____D_____。

A) A_1 B) A1 C) A1A D) A+12. 在 FORTRAN 的变量类型说明语句中没有 BA) REAL 语句B)CHAR 语句C)INTEGER 语句 D)LOGICAL 语句3.FORTRAN90 源程序的扩展名是 C 。

A. TXTB. FC. F90D. FOR4.下列关于符号常量的说法正确的是___C____。

A.符号常量的定义应该放在所有语句之前B.符号常量不可以是字符型常量C.在一个程序单位中定义一个符号常量后,不能再改变它的值D.符号常量定义语句与赋值语句一样,是可执行语句5、在下列写法中, __D______不是 FORTRAN 常量。

A. .TRUE.B.1E-2C. (0.0,2.4)D.1,000,0006.表达式 15/4/2.0 的值是 B 。

A.整数 2 B.实数 1.5 C.实数 2.25 D.实数 1. 37. 下列不是 FORTRAN 赋值语句的是 _____D______。

A) X=.TRUE. B) X=X*X C) X=X**2**2 D) X=X++8. 梯形的上底为 A,下底为 B,高为 H,计算其面积的 FORTRAN 表达式中错误的是____A____。

A)1/2*(AB)*H B)(A+B)*H/2 C)(A+B)/2*H D)0.5*(A+B)*H9. 要选拔身高 T>1.7 米且体重W<62.5 公斤的人,FORTRAN 的逻辑表达式是__C_____。

A)T.ce.1.7.AND.w.le.62.5 B)T.le.1.7.OR.w.ge.62.5C)T.gt.1.7. AND.w.lt.62.5 D)T.gt.1.7.OR.w.lt.62.510.FORTRAN 90 规定,变量类型声明的优先顺序是 C 。

Fortran语言编程练习题

Fortran语言编程练习题

平面驻点流动方程数值解1问题描述自编程序完成平面驻点流动方程:012=+'''+'''ϕϕϕϕ- 的数值解。

边界条件为⎩⎨⎧='∞=='==100ϕηϕϕη;,, 式中:y a ⋅=νη。

2求解过程由于上述方程是非线性方程,可采用MA TLAB 7.0软件来求解,步骤如下: 第一步:将方程化为一阶常微分方程组。

边界条件为⎩⎨⎧=∞====1)2(0)2(,0(1)0f f f ;,ηη 第二步:建立ode.m 和lbc.m 两个M 文件。

ode.m 文件程序如下:function dfdx=ode(x, f)dfdx=[f(2);f(3);-f(1)*f(3)+f(2)^2-1]; lbc.m 文件程序如下: function res=lbc(f0,finf) res=[f0(1);f0(2);finf(2)-1]; 第三步:求解方程。

在MA TLAB 7.0工作窗口输入程序: infinity=4;solinit=bvpinit(0:0.4:infinity,[0 0 0]); sol=bvp4c(@ode,@lbc,solinit); x=0:0.4:infinity⎪⎪⎩⎪⎪⎨⎧-+⨯-====1)2()3()1()3()3()2()2()1()1(2f f f df f df f df f ϕf=deval(sol,x)plot(x,f(1,:),'ob',x,f(2,:),'rp',x,f(3,:),'b*') /*绘图命令*/ xlabel('轴\it \eta');ylabel('轴\it \phi')legend('平面驻点流动\phi 曲线','平面驻点流动d\phi/d\eta 曲线','平面驻点流动d^2\phi/d\eta^2曲线')title('平面驻点流动的数值解')3结果分析平面驻点流动数值解的计算结果见表1,图1是平面驻点流动数值解的散点图。

FORTRAN笔试

FORTRAN笔试

一、判断题(共20分,每题1分,√表示对,×表示错)1.FORTRAN源程序的一条语句无法在一行内写下时,在行末用续行标志“!”,表示下一行是当前行的继续。

2.语句X=X+1的含义是将内存中名为X+1的存储单元的值赋给变量X。

3.如果程序单元中有说明语句PARAMETER(A=2.1),则不允许在该程序单元中改变A的值。

4.主程序和子程序可以储存到不同的文件中。

5.即使编译和连接都正确无误,FORTRAN程序运行时仍可能出错。

6.在数据块子程序中,可以调用另一个数据块子程序。

7.设有如下输入语句READ '(1X, F5.2)' , X若由键盘输入:12.3456789,则变量Y的值为12.34。

8.如果有以下程序段CHARACTER::A=’FORTRAN’则A内存储的实际值是’F’。

9.M=2000,为了在屏幕上输出□□***2000*** (其中□表示空格)。

则应使用的语句为:WRITE(*,100)M100 FORMAT(2X,’***’,I4,’***’)10.模块可用USE引用,也可用CALL调用。

11.语句函数定义语句在程序内的位置是:在程序块开头语句之后,END语句之前。

12.若有以下程序段:INTEGER,POINTER ::P1, P2INTEGER,TARGET::I=20, J=30P1=>I; P2=>J; P1=>P2; P2=>P1运行程序,I、J的值都为20。

13.COMMON语句的功能是给不同程序模块中的若干变量分配同一存储单元。

14.设C是复型变量,A、B是实型变量。

把A 的值赋给C的实部,把B的值赋给C的虚部的赋值语句是C=CMPLX(A,B)。

15.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的。

16.A2B的FORTRAN表达式为A**2*B。

17.程序中说明了变量a具有POINTER属性,若a=>b,则b应具有PARAMETER属性。

fortran考试试题(A)有答案版

fortran考试试题(A)有答案版

课程名称:Fortran语言程序设计;试卷编号:A 卷;考试时间:120分钟学院1.Fortran语言中有:整数型逻辑型字符型实数型复数型五种基本数据类型。

2.Fortran程序的书写格式有两种固定格式自由格式。

3. 字符型常数’this”s’的字符长度为64. 下列程序运行结果为125。

Program mainImplicit noneInteger::floor=5,iDo i=1, floorIf(i==3)cycleIf(i==4)cycleWrite(*,*)iEnd doend5. 下列程序的运行结果为76.0,2.0。

Program mainImplicit noneReal :: a, b, mA=2.0B=76.0If(a<b)thenM=aA=bB=mEnd ifWrite(*,*) “a=”,a “b=”,bend6. 下列程序的运行结果是10302。

Program testImplicit nonesum=0.0do i=1,203,2sum=sum+iend dowrite(*,*) iend7.下列程序的运行结果是12000。

Program testImplicit noneInteger::iInteger::a(5)=(/ (i, i=1,5) /)Integer::b(5)=0Where (a<3)b=aEnd whereWrite(*,”(5(i3,1x))”) bend8.下列程序的运行结果是30。

Program testImplicit noneInteger,parameter:: limit=10Integer counterInteger:: ans=0Counter=2do while(counter<=limit)ans=ans+countercounter=counter+2end doWrte(*,*)ansend9.下列程序的运行结果是2,3。

Fortran模拟试卷1-8

Fortran模拟试卷1-8

FORTRAN90模拟测验一(笔试部分)一.选择题(从4个可选答案中选择一个正确答案添入空白处)1.FORTRAN 90规定程序中名称的长度不能超过个字符。

A.8 B.15 C.31 D.632.关于FORTRAN 90程序单元,以下四种说法中正确的是。

A.一个FORTRAN 90程序由多个程序单元组成,其中有一个且只能有一个主程序单元B.一个FORTRAN 90程序由多个程序单元组成,其中有一个且只能有一个模块单元C.一个FORTRAN 90程序允许有多个程序单元,但每类程序单元只能有一个D.一个FORTRAN 90程序允许有多个程序单元,但主程序单元和模块单元只能有一个3.FORTRAN 90程序中允许使用的三个通用标志符是。

A.!% & B.@ , ; C.! ; & D.; & *4. 下列中,所指的FORTRAN 90表达式都是正确的。

①∣A*x+B*y+C*z∣② b*b+4*a*c③ .NOT. .TRUE. .AND. .FALSE. ④‘A’<= ch <= ‘Z’⑤ X>100 = = .TRUE. ⑥ SQRT(A2+B2)⑦π*R**2 ⑧‘HAPPY ’+‘NEW ’+‘YEAR.’A. ①②⑤B.②③④⑧C.②③⑤D.②⑤⑥⑦5. FORTRAN 90规定,变量类型声明从高到低的优先顺序是。

A.隐含约定(I-N规则)、IMPLICIT声明、类型声明B.类型声明、隐含约定(I-N规则)、IMPLICIT声明C.类型声明、IMPLICIT声明、隐含约定(I-N规则)D.IMPLICIT声明、类型声明、隐含约定(I-N规则)6.数组声明语句为:INTEGER,DIMENSION(-5:-1,-3:3,11:15) ::num 数组元素num(-2,1,13)是存储结构中第个元素。

A.70 B.85 C.90 D.947.类型声明语句为:INTEGER(2) I 数据输出语句为:PRINT *,I变量I中数据输出域宽是字符。

FORTRAN90试题_4_

FORTRAN90试题_4_

FORTRAN90语言部分一、 语言基础单项选择(每题2分,共20分)(一)下面的函数计算中,错误的是 1 。

A) SQRT(9) B) REAL(9) C) ABS(9) D) MOD(9,2)(二)运行下面的程序时(P,W,X,Y 都是实型变量), READ(*,10) P,W,X,Y WRITE(*,20)X,Y10 FORMAT(1X,F3.1,3(1X,F4.2)) 20 FORMAT(1X,F4.1,3(1X,F5.2)) END如果从键盘输入数据:12345678901234567890,则输出结果为 2 。

A) 1.23 56.78 B) 12.3 67.89 C) 12.3 45.67 D) 34.5 67.89(三)数学式a acb x 24sin22-+的FORTRAN 表达式为 3 。

A) SIN(X**2)+SQRT(B*B-4*A*C)/2/A B) SIN(X)**2+ SQRT(B*B-4*A*C)/2/AC) (SIN(X**2)+SQRT(B*B-4*A*C))/(2*A) D) (SIN(X)**2+SQRT(B*B-4*A*C))/(2*A)(四)表示条件“A 加B 大于C 并且C 大于等于D ”的FORTRAN90逻辑表达式是 4 。

A) A+B>C >=D B) (A+B)>C >=DC) A+B>C.AND. C>=DD) (A+B)>C.OR. C>=D(五)通过下面的赋值,字符变量LINE 的值是 5 。

表示空格。

CHARACTER(LEN=4)::LINE LINE=’10’ A) 10 B) 1000 C) ‘10’ D) ’10 ’(六)下面对二维数组的说明语句中,正确的语句是 6 。

A) 显式形状数组的说明:REAL,DIMENSION(10,:) ::AB) 动态数组的说明方式:REAL,DIMENSION(:,:), ALLOCATE ::A C) 假定形状数组的说明:REAL,DIMENSION(10,:) ::A D) 指针数组的说明:POINTER,DIMENSION(1:3,2:4) ::A (七)下面的模块中,错误的语句是 7 。

fortran试题A

fortran试题A

《Fortran 语言程序设计》考试试题 一、关键字解释及表达式互换(共10题,每题2分,共20分) 1. READ*, X,Y 2. REAL 3.12 FORMAT(2X,I5) 4.COMPLEX 5.LOGICAL 6.INTEGER,DIMENSION(4,5)::A 7.SELECT CASE(R3) 8.写出 x e y cos 21∙的fortran 表达式 9.写出COS ((A+1)*(A+1))/(N*N+1)数学表达式 10.写出 1-⎪⎪⎭⎫ ⎝⎛n y x 的fortran 表达式 二、下面分别是程序中的一段代码,请指出其错误?(共2题,(共2题,1题12分,2题8分,共20分) 1. …………………… E=(E*T+23) IF(E>=500) GOTO 5 DO N=1,1O ,0 5 T=SS*3.45 PRINT*,R,T END DO ……………… 2. PROGRAM ex IMPLICI NONE INTEGER :: n CHARACTER(LEN=3) :: a,b,c READ*, n a=n b=’nkd_lixy ’c=sqrt(a**2+b**2) print*,c 学生班级________________学生学号:□□□□□□□□□□□□学生姓名:________________ ………………装订线………装订线………装订线…………试卷须与答题纸一并交监考教师…………装订线………装订线………装订线………………………………三、请写出下面程序的运行结果(共4题,每题10分,共40分)1.写出下列程序的作用是解决什么问题的?PROGRAM GH1REAL X,YREAD*,XIF (X<=0) Y=LOG(SQRT(X*X+1))IF (X>0) Y=SIN(X**3)+ABS(X)PRINT*,”Y=”,YEND2.写出下列程序的运行结果,程序运行时输入 5,6,7,8 四个数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

平面驻点流动方程数值解
1问题描述
自编程序完成平面驻点流动方程:的数值解。

边界条件为
式中:。

2求解过程
由于上述方程是非线性方程,可采用MATLAB 7.0软件来求解,步骤如下:
第一步:将方程化为一阶常微分方程组。

边界条件为
第二步:建立ode.m和lbc.m两个M文件。

ode.m文件程序如下:
function dfdx=ode(x, f)
dfdx=[f(2);f(3);-f(1)*f(3)+f(2)^2-1];
lbc.m 文件程序如下:
function res=lbc(f0,finf)
res=[f0(1);f0(2);finf(2)-1];
第三步:求解方程。

在MATLAB 7.0工作窗口输入程序:
infinity=4;
solinit=bvpinit(0:0.4:infinity,[0 0 0]);
sol=bvp4c(@ode,@lbc,solinit);
x=0:0.4:infinity
f=deval(sol,x)
plot(x,f(1,:),'ob',x,f(2,:),'rp',x,f(3,:),'b*') /*绘图命令*/
xlabel('轴\it \eta');ylabel('轴\it \phi')
legend('平面驻点流动\phi曲线','平面驻点流动d\phi/d\eta曲线','平面
驻点流动d^2\phi/d\eta^2曲线')
title('平面驻点流动的数值解')
3结果分析
平面驻点流动数值解的计算结果见表1,图1是平面驻点流动数值解的散点图。

从表和图中可以看出,从开始呈线性增长,随着的增加,偏离斜直线,当以后渐近于1。

在左右,,即此时粘性流动的流速已接近
势流流速,只差百分之一。

00.40000.8000 1.2000 1.6000 2.000 2.4000 2.8000 3.2000
00.08800.31240.62200.9798 1.3620 1.7553 2.1530 2.5523
00.41450.68590.84670.93240.97320.99060.99710.9992
1.23250.84630.52510.29380.14730.06580.02600.00910.0028
表1 平面驻点流动数值解的计算结果
图1 平面驻点流动数值解散点图。

相关文档
最新文档