fortran练习
fortran程序案例题汇编(14道)-推荐下载
t=.false. exit endif enddo prime=t end
1
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置2试时32卷,3各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并25工且52作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
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道)
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考试试题样题(1)
大学FORTRAN考试试题样题(1)《高级语言程序设计(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.5D)T.gt.1.7.OR.w.lt.62.510.FORTRAN 90规定,变量类型声明的优先顺序是 C 。
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 编程练习题
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 自测练习
一.单项选择题 1. 下列 FORTRAN 表达式正确的是 。 ① ∣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.②⑤⑥⑦ 2. FORTRAN 90 规定,变量类型声明从高到低的优先顺序是 。 A. 隐含约定(I-N 规则) 、IMPLICIT 声明、类型声明 B. 类型声明、隐含约定(I-N 规则) 、IMPLICIT 声明 C. 类型声明、IMPLICIT 声明、隐含约定(I-N 规则) D. IMPLICIT 声明、类型声明、隐含约定(I-N 规则) 3. 数组声明语句为:INTEGER num(9)=(/1,2,3,4,5,6,7,8,9/),mm(5) 下列语句中不正确的是 。 A. mm=num(5:9) B. mm=num(5:) C.mm=num(:5) D. mm=num(:) 4.下列关于子程序的有关说法中,不正确的是 。 A. 对于无参函数子程序,调用时函数名后括号可取消 B. 对于无参子例行程序,调用时子例行程序名后的括号可取消 C. 对于有参子程序,形式参数可以是子程序名 D. 对于有参子程序,形式参数可以是星号“*” 5.下列语句函数声明中,正确的是 。 A.FUN1(I,I)=5*I-10*I**2 B. FUN2(MAT(5),A)=5*A+MAT(5) C. FUN3(X,Y,5.0)=X**2+Y**2+5.0**2 D. FUN4(X,Y)=SQRT(X**2+Y**2+5.0**2) 6.下列字符串中可用作 FORTRAN90 变量名的是 。 A.ABC B. A-BCD C. 2ABC D. AB.C 7.下列数据中不符合 FORTRAN90 常数表示的为 。 A. 21.50 B. +0.0D0 C. .TRUE. D. $1000 8.执行 WRITE(8,'(1X,2I4)')(I,I=1,3)后生成 个记录。 A. 1 B. 2 C. 3 D. 12 9.数学表达式
fortran习题答案
fortran习题答案Fortran习题答案在学习编程语言Fortran的过程中,练习题是非常重要的一部分。
通过解答练习题,我们可以更好地掌握语言的语法和逻辑,提高自己的编程能力。
下面我将分享一些Fortran习题的答案,希望能够帮助大家更好地理解和掌握这门编程语言。
1. 编写一个Fortran程序,计算并输出1到100之间所有奇数的和。
```fortranprogram sum_odd_numbersimplicit noneinteger :: i, sumsum = 0do i = 1, 100, 2sum = sum + iend doprint *, 'The sum of odd numbers from 1 to 100 is ', sumend program sum_odd_numbers```2. 编写一个Fortran程序,计算并输出用户输入的两个数的和、差、积和商。
```fortranprogram arithmetic_operationsimplicit nonereal :: num1, num2, sum, difference, product, quotientprint *, 'Enter the first number: 'read *, num1print *, 'Enter the second number: 'read *, num2sum = num1 + num2difference = num1 - num2product = num1 * num2quotient = num1 / num2print *, 'Sum: ', sumprint *, 'Difference: ', differenceprint *, 'Product: ', productprint *, 'Quotient: ', quotientend program arithmetic_operations```3. 编写一个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笔试
一、判断题(共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 语言程序设计》考试试题 一、关键字解释及表达式互换(共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 四个数。
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试题
软件技术基础(FORTRAN)笔试模拟试题(带答案)一.概念选择题(单选题,将正确的答案填入括号内。
每题1分,共15分)1. 已知整型变量L=5,M=13,N=4,表达式L*M/N 、L/N*M 和M/N*L 的值分别是(A )。
A )16 13 15B )16.25 16.25 16.25C )16.0 13.0 15.0D )16 16 162.将数学式)||(ln 215-+e x 改写为FORTRAN 表达式,正确的是( D )。
A) 1/2*(LOG(ABS(X))+E**(-5))B) 1.0/2*(LN(ABS(X))+E**-5)C) 1/2.0*(LN(ABS(X))+E -5)D) 1.0/2*(LOG(ABS(X))+EXP(-5))3. 设A=.TRUE., B=.FALSE., C=.FALSE., 逻辑表达式(A.OR.B).AND.C 与A.OR..NOT.B 的值是( B )。
A) .T. 与 .F. B).F . 与 .T. C) .T. 与 .T. D) .F. 与 .F .4. 数组REAL A (0:5,-1:5)的元素个数是 ( D )。
A )25B )30C )36D )42 5. 下列数组说明符中错误的是( A )。
A )K(3:2,1:2)B ) K(-1:1,2)C )K(-2:2,-1:1)D )K(2:2,5)6. 关于USE 语句的正确说法是( C )。
A)USE 语句是可执行语句 B)用USE 语句可以代替INCLUDE 语句C)USE 语句必须放在程序单元体的开头 D)USE 语句的位置任意7. 语句OPEN (9,FILE=‘DATA.TXT ’)打开的是 ( B ) 文件。
A )无格式顺序B )有格式顺序C )无格式直接D )有格式直接8. 阅读下列FORTRAN 程序, 程序运行时执行循环体的次数是( A )。
X=0DO L=10, 5, 1X=X+1.0ENDDOENDA) 0 B) 1 C) 6 D) 无穷9.结构化程序设计中有三种基本结构,下列不属于三种基本设计结构的是( D )。
fortran习题参考答案
工程分析程序设计上机作业(五)模块化编程上机目的:掌握内部例程、主程序、外部例程、模块等功能的使用方法。
1、有一个六边形,求其面积。
为求面积,作了3条辅助线。
如图所示:(提示,三角形面* a b c积=s(s-a)(s-b)(s-c),其中s ,a、b、c为三个边长)。
要求用内部函数来计算每个三角形的面积。
program mai nimplicit nonereal :: A(9)=(/10,30,16,13,21,14,20,36,28/)in teger ireal ss=area(A (3) ,A (4) ,A(7))+area(A(2),A(7),A(8))+ &area(A(1),A(8),A(9))+area(A (5),A (6) ,A(9))prin t*,'The area is',scontainsfunction area(x,y,z)implicit nonereal x,y,zreal p,areap=(x+y+z)/2area=sqrt(p*(p-x)*(p-y)*(p-z))end functionend2、编写一个子例程子程序,SUM(S , T , N1 , N2)。
把整型数N1到N2进行求和,并把求和的结果放置到S,把整型数N1到N2进行求积,并把求积的结果放置到T。
并用这个子程序来计算:y =(1 2 3 4) (3 4 5 6 7 8) (3*4*5*6) -(1*2*3)program mai nimplicit nonein teger A(8)in teger i,b,c,d,e,f,g,m, n,yb=O;d=O;g=1; n=1 do i=1,8A(i)=iend docall sum(b,c,1,4) call sum(d,e,3,8) call sum(f,g,3,6) call sum (m,n ,1,3)y=b+d+g-nprin t*,'y=(1+2+3+4)+(3+4+5+6+7+8)+(3*4*5*6)-(1*2*3)=',ycontainssubroutine sum(s,t,N1,N2) in teger s,t,N1,N2,i do i=N1,N2 s=s+A(i) t=t*A(i)end doend subrout ineend3、编写函数子程序GDC求两个数的最大公约数。
fortran课后习题答案
第一章 FORTRAN程序设计基础第15页 1、21.简述程序设计的步骤。
“程序设计”:反映了利用计算机解决问题的全过程,通常要经过以下四个基本步骤:(1)分析问题,确定数学模型或方法;(2)设计算法,画出流程图;(3)选择编程工具,编写程序;(4)调试程序,分析输出结果。
2. 什么是算法?它有何特征?如何描述算法?解决问题的方法和步骤称为算法。
算法的五个特征:(1) 有穷性。
(2) 确定性。
(3) 有效性。
(4) 要有数据输入。
(5) 要有结果输出。
算法的描述有许多方法,常用的有:自然语言、一般流程图、N-S图等。
第二章顺序结构程序设计第29页 1、2、3、4、5、6、7、8、91.简述符号常量与变量的区别?符号常量在程序运行过程中其值不能改变。
变量在程序运行过程中其值可以改变。
2. 下列符号中为合法的FORTRAN 90标识符的有哪些?(1) A123B (2) M%10 (3) X_C2 (4) 5YZ(5) X+Y (6) F(X) (7) COS(X) (8) A.2(9) ‘A’ONE (10) U.S.S.R.(11) min*2 (12) PRINT3. 下列数据中哪一些是合法的FORTRAN常量?(1) 9,87 (2) .0 (3) 25.82(4) -356231(5) 3.57*E2 (6) 3.57E2.1 (7) 3.57E+2(8) 3,57E-24. 已知A=2,B=3,C=5(REAL);且I=2,J=3(INTEGER),求下列表达式的值:(1) A*B+C 表达式的值: 11 (2) A*(B+C) 表达式的值: 16(3) B/C*A 表达式的值: 1.2 (4) B/(C*A) 表达式的值: 0.3(5) A/I/J 表达式的值: 0.33 (6) I/J/A 表达式的值: 0(7) A*B**I/A**J*2 表达式的值: 4.5(8) C+(B/A)**3/B*2. 表达式的值: 7.25(9) A**B**I 表达式的值: 5125. 将下列数学表达式写成相应的FORTRAN表达式:(1) 1E-2 (2)(-B+SQRT(B*B-4*A*C)/(2*A)(3) 1+X+X*X/2+X**3/2/3(4) COS(ATAN((A**3+B**3)**(1.0/3)/(C*C+1)))(5) EXP(A*X**2+B*X+C)(6) COS(X*Y/SQRT(X*X+Y*Y))**36. 用FORTRAN语句完成下列操作:(1) 将变量I的值增加1。
大学Fortran期末复习资料-Fortran程序设计_04
20XX年复习资料大学复习资料专业:班级:科目老师:日期:一、单项选择题:(每小题2分,共 40 分)1. 下列叙述中正确的是 。
A. 完整的Fortran 程序的第一个语句必须是program 语句B. 完整的Fortran 程序中只能有一个end 语句C. Fortran 程序中各类语句的位置是任意的D. Fortran 程序中所有可执行语句在程序执行时都会产生某种机器操作2. Fortran 表达式20XXXX/8*0.3/6.0的值为 。
A. 0.75B. 0C. 0.0D. 0.20XXXX 3. 下列合法的Fortran 标识符为 。
A. M%8B. A20XXXX3BC. F(x)D. 5xy4. 下列数据中是不合法的Fortran 常量的是 。
A. trueB. (1,3)C. ‘’D.4.567E-45. 在Fortran 中)2a /()x (sin e 2x 的正确的算术表达式为 。
A. exp(x)+sin(x**2)/(2*a)B. exp(x)+sin(x**2)/2*aC. e**x+sin(x**2)/(2*a)D. exp(x)+sin(x*2)/(2*a)6. 设有下面一段格式输出语句write(*,20XXXX) x20XXXX format(1x,’x=’, f5.1)如果在输出语句中直接包含格式说明,正确的写法应该是 。
A. write(*,1x, ‘x=’ , f5.1) xB. write(*,’(1x,’x=’, f5.1)’) xC. write(*,”(1x,’x=’, f5.1)”) xD. 没有这种格式7. 下面的逻辑IF 语句正确的是 。
A. if (x<0.0) then 20XXXXB. if (x>=0.0) .eqv. (y<0) y=23C. if (0.0=< y <20XXXX) y=x+20XXXXD. if (x>20XXXX.0 .or. x<0.0) y=2*x+exp(x)8. 阅读下列Fortran 程序:real :: z(2,2)=(/1,2,3,4/)p(x, y)=3*x-2*yt=z(1,2)if ( t<=1.0) s = p(1.0,2.0)if ( t<=3.0) s = p(2.0,3.0)if ( t<=4.0) s = p(3.0,4.0)write(*,*) send执行上述程序后,输出的S 值为 。
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练习题1.当执行下列语句时在终端上键入123456.789,问该语句执行后X,Y,Z的值是什么?READ (*,100)X,Y,Z100 FORMA T(3F4.2)2.分别写出由下列三个循环语句所确定的循环次数100DO 10 I=3,6,3100 DO 10 K=6,3,3100 DO 10 X=-0.5,-4.5,-0.53.已知I=5,J=2,A=5.0,B=2.0,问执行下列程序段后,M,N,X,Y,的值分别是什么?M=I/JN=A/BX=I/JY=A/B4.写出下列语句段输出的内容A=-1.2B=7.36WRITE(*,100)A,B,A+B100 FORMA T (1X,2F7.1/1X,’A+B=’,F7.1)5.已知X=5.7,Y=-123.0,Z=12.796,试写出下列语句的输出结果。
WRITE (*,100) X,Y,Z100 FORMA T (1X,2F6.2)6.下列主程序是否正确?不正确则指出其错误READ (*,*)NDIMENSION A(N)READ(*,*) (A(I),I=1,N)S=0.0DO 10 I=1,N10S=S+A(I)WRITE(*,*)SEND7.阅读程序,回答问题DIMENSION M(3,3)DATA M/1,2,3,4,5,6,7,8,9/40DO 10 I=1,250DO 10 J=I+1,3K=M(I,J)M(I,J)=M(J,I)10M(J,I)=KWRITE(*,100)((M(I,J),J=1,3),I=1,3)100FORMA T(1X,3I2)END问题1:经DA TA语句赋值后,数组M的第一行元素的值是()问题2:程序执行后输出的第一行结果是()问题3:若将标号为40,50的语句改为40DO 10 I=1,350DO 10 J=1,3程序执行后输出的第一行结果是()8.阅读程序,回答问题READ (*,*) M,NIF (M .LT. N) THENK=MM=NN=KENDIFL=MOD(M,N)10IF (L .NE. 0) THENM=NN=LL=MOD(M,N)GOTO 10ENDIFWRITE(*,*) NEND问题1:程序执行时,若M,N的输入值为9,15,则输出的N值为()。
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.下面是Visual 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经典入门程序20例
对于FORTRAN 的初学者。
这些例子可作为小练习。
1.例题:计算工资问题。
每小时工资为RATE, 如果工作超过40小时,加班呢部分工资是正常时间工资的1.5倍。
C Payroll with overtime program payroll real rate, hours, pay read (*,*) rate, hours if (hours>40) thenpay=40*rate+(hours-40)*1.5*rateprint *, "pay=" ,pay end2.学生成绩问题。
大于80为A级。
大于60小于80为B级。
小于60为C级。
IF的嵌套。
注意空格可以看清楚else if ,end if,print 的内容.PROGRAM GRADESTUDENTREAD *,GRADEIF (GRADE .GE. 80) THENPRINT *,GRADE, "GRADE=>A"ELSEIF (GRADE.LT.60) THENPRINT *,GRADE, "GRADE=>C"ELSEPRINT *,GRADE, "GRADE=>B"END IFEND IFEND3.三个数按从小到大排序。
PROGRAM MAXMINREAL A,B,C,TREAD *,A,B,CIF (A.GT.B) THENEND IFIF (B.GT.C) THENT=BB=CPRINT *,A,B,CEND4.运用EISE IF 语句。
重做例子2PROGRAM ex2READ (*,*) GRADEIF (GRADE .GE. 80.0) THENPRINT *, GRADE, "=>A"ELSE IF(GRADE .GE. 70.0) THENPRINT *, GRADE, "=>B"ELSE IF(GARDE .GE. 60.0) THENPRINT *, GRADE, "=>C"ELSEPRINT *, GARDE, "=>D"END IFEND 5. 计算y 3x26,x 0x2 2x 8,x 0END6.CONTINUE 语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用方法2:写成子函数,由主函数调用
– 程序名(日期,时间间隔,时间单位) – 处理同上
练习二 坐标转换
功能:给定模式的中心经纬度,标准纬度1,标准纬度2,参考经度, 网格距,模式网格数,给定一个点的实际经纬度,输出模式中的坐标 ,即横向第几个格点,纵向第几个格点 计算方法在下页 写成子函数:1经纬度转模式坐标,2模式坐标转经纬度 主函数调用子函数,计算模式左下角的经纬度,右上角的经纬度
– 如何把ppt做的更形象,更大方,更吸引人 – 报告如何去组织,讲明白,抓重点
积极上进,精益求精的态度
– 编程序能有更好的表达的不用冗余的 – 有更好的用法的,尽量使用新方法,积极尝试,小心验证 – 遇到高级的技巧,搜集、整理、消化、使用
PPT要求
– 参考大气院考核要求
PPT报告要求
首先介绍做了哪几件事(大纲) 针对每件事做报告
练习三 双线性插值
双线性二次插值原理
– 双线性二次插值方法是先纬向后经向,或先经向后纬向上进行一元一次线性插值。 计算分析表明: 插值顺序不会影响插值结果。
练习四 简单相关系数
功能:给定两个时间序列,输出一个相关系数 写成子函数
第三阶段练习 ——编程技巧
任务
学习读取nc格式数据文件 学习各种fortran高级用法 对时间加减法程序进行改写(适应各种技巧的使用)
– – – – – 做了什么事情 有什么收获 遇到什么问题,怎么解决,如何解决 有什么经验教训、心得 下面做什么工作
学会编写简单shell脚本
要求
学会主动思考
– 不会主动思考达不到研究生的要求 – 遇到问题自己要能解决,碰到新用法积极学习、试验、应用 – 有新想法积极验证,与人讨论
学会如何去表达
FORTRAN训练
张涛 2012.08.08
第一阶段练习
——数据读取
753站人工站逐日数据的读取
数据批处理 站号匹配 数据解码 多维数组
第二阶段练习
2012.8.7
练习一 命令行参数
程序功能:日期加减法 使用方法1:linux命令行下调用
– 程序名 日期 时间间隔 时间单位 – 例:datef “20120531 02” 5 day – 需要自动识别日期格式,YYYYMMDD HH:mm:ss,YYDDD HH 等
– – – – 拿到一个任务要首先做资料搜集,网上搜索、向前人请教 对搜集到 的资料学习、整理、总结,只做自己会的不会有进步 形成自己的思路 完成任务,做好笔记和报告
• 笔记要让一个不懂的人看见就能复制你的工作 • 报告要清晰,让人一听就知道你做了什么工作,怎么理解的,有什么收获
– 每次作报告都要有长进,别人提出的问题下次报告必须修正,否则学习是无效的
– – – – – – – 每件事的目的是什么,为了得到什么样的结果 做这件事有什么意义 搜集了什么样的资料,别人做了什么,怎么做的 这件事要怎么来做,技术方案是什么 具体步骤 做这件事的遇到什么困难,问题,怎么解决的 学到什么,有什么长进,比别人做的有什么改进 本次PP报告比上次报告有什么改进 要求
– 数组的使用技巧 – 繁琐代码的简化技巧
建立fortran、linux以及研究方向的学习笔记
– 每学一个东西,都要留下笔记,总结、沉淀,以供后面查阅,督促进步 – 每做一个工作,都要留下详细步骤(有图最好),遇到什么问题,有什么技巧, 以供后面师弟师妹或其他人参考,或与他人交接工作
建立学习进度笔记,每周至少记录一次——报告时要有所体现