




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Fortran 练习题 shirley1 1.输出 a,b,c 的值,其中 a=28,b=34,c=60.5 integer a,b,c定义整型定义整型 integer a=28;b=34;c=60.5=为赋值符号,把右赋给左为赋值符号,把右赋给左 print*,a=,a,b=,b,c=,c输出格式:输出格式:print*,文字内容文字内容,该输出变量该输出变量 end结束必须以结束必须以 end 作结作结 2.输出 x 和 y 的值 real x,y定义实型定义实型 real print*,输入 x 和 y: read*,x,y读入格式:读入格式:read*,读入变量读入变量 print*,x,y end 3.求三个数的和及平均值 real sum,ave read*,a,b,c sum=a+b+c ave=sum/3 print*,和为,sum print*,平均值为,ave end 4.现有长 1500m 宽 1000m 的地块要拍卖建造住宅小区, 地块中央有一半径为 100m 的 圆形公共绿地不属于拍卖范围,每平方米地价为 0.5 万元, 编写程序计算该地块拍卖总 价,并输出。 real area,money read*,a,b,r area=a*b-3.14*r*2ab为为 a*b money=area*0.5 print*,总价为,money,万元 print*,地长为,a print*,地宽为,b print*,绿地半径为,r end 5.求三个数中的最大数与最小数 real max_x,min_x read*,a,b,c min_x=a if(bmax_x)then max_x=b Fortran 练习题 shirley2 end if if(cmax_x)then max_x=c end if print*,最大值:,max_x print*,最小值:,min_x end 6.输入学生成绩,评价成绩的优、良、中、及格和不及格,并输出 read*,s if(s=max_x)then max_x=G(i) end if end do ave=s/30 k=x/30 print*,平均分为,ave print*,最高分为,max_x print*,不及格人数为,x print*,不及格率为,k end 13.输入 8 个数,求最大值,并判断最大值是否唯一,输出最大值及是否唯一的结论 dimension G(8) read(*,*) (G(j),j=1,8) n=0 max_x=G(1) do i=2,8 if(G(i)max_x)then max_x=G(i) else if(G(i)=max_x)then n=n+1 end if end do if(n=0)then print*,无 else print*,有 end if print*,max=,max_x end 14.求 R1、R2、R3 并联电阻值 real i,r read*,r1,r2,r3,u r=1/(1/r1+1/r2+1/r3) i=u/r print*,电流值为,i Fortran 练习题 shirley5 end 15.计算 2000 年末人口数,人口增长率为 r 人口 1950 年人口数为 p0 real pn read*,p0,r,n pn=p0*(1+r)*n print*,2000 年末人口数为,pn end 16.计算虚温 real tv,q,e read*,t,p,uw es=6.11*2.718*(17.27*(t-273.16)/(t-35.86) e=es*uw q=0.64*e/(p-0.378*e) tv=(1+0.608*q)*t print*,tv end 17.输出绝对值最大的数 real max_x,i,j dimension G(5),H(5) read(*,*) (g(j),j=1,5) do i=1,5 h(i)=ABS(g(i)ABS(i)函数为绝对值函数函数为绝对值函数 max_x=max(h(1),h(2),h(3),h(4),h(5)max(a,b,c)为最大值函数,结果为最大值为最大值函数,结果为最大值 end do print*,max_x end 18.求火车速度与行驶路程 real(8) v0,t1,t2,v,x,t,a v0=60*1000.0/3600 t=(50-10)*60 a=100*1000.0/3600.0/3600.0 v=v0+a*t x=v0*(t+10*60)+0.5*a*t*2 v=int(v*100.0+0.5)/100.0(x*100.0+0.5) /100.0 可将得数四舍五入 并精确到三位小数 可将得数四舍五入 并精确到三位小数 x=int(x*100.0+0.5)/100.0 print*,火车的速度为,v print*,行驶的路成为,x end 19.输出三个站点的总雨量和平均雨量 输入 3 个气象站 5 个月(汛期)雨量数据,统计每个气象站总雨量和平均雨量,计算五月、 六月、七月、八月、九月的平均雨量,输出每个气象站每个月的雨量、总雨量和平均雨量, 以及五月、六月、七月、八月、九月的平均雨量 站名汛期各月雨量(毫米) Fortran 练习题 shirley6 5 月6 月7 月 8 月9 月 江阴气象站76.8176.5308.141.069.6 定波闸71.5208.5352.147.262.6 肖山65.5200.0239.744.363.0 program rain write(*,“(27x, 5 月6 月7 月8 月9 月)“) write(*,“(1x,输入江阴气象站的雨量数据:,)“)1x 表示一个空位表示一个空位 read(*,100) s11,s12,s13,s14,s15 write(*,“(1x,输入 定波闸 站的雨量数据:,)“)为换行符为换行符 read(*,100) s21,s22,s23,s24,s25 write(*,“(1x,输入肖山气象站的雨量数据:,)“) read(*,100) s31,s32,s33,s34,s35 total11=s11+s12+s13+s14+s15;av11=total11/5 total21=s21+s22+s23+s24+s25;av21=total21/5 total31=s31+s32+s33+s34+s35;av31=total31/5 av1=(s11+s21+s31)/3;av2=(s12+s22+s32)/3 av3=(s13+s23+s33)/3;av4=(s14+s24+s34)/3 av5=(s15+s25+s35)/3 write(*,“(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,av21 write(*,400) s31,s32,s33,s34,s35,total31,av31 write(*,500) 5 月,av1,6 月,av2,7 月,av3,8 月,av4,9 月,av5 100 format(f4.1,2x,f5.1,2x,f5.1,2x,f4.1,2x,f4.1)f4.1 表示共占四位, 一位小数表示共占四位, 一位小数(小数 点也占一位 小数 点也占一位) 200 format(1x,江阴气象站的雨量:,f4.1,2x,f5.1,2x,f5.1,2x,f4.1,2x,f4.1,2x,f5.1,2x, f5.1)x format()表示上文中表示上文中 x 的格式的格式 300 format(1x, 定波闸 站的雨量:,f4.1,2x,f5.1,2x,f5.1,2x,f4.1,2x,f4.1,2x,f5.1,2x, f5.1) 400 format(1x,肖山气象站的雨量:,f4.1,2x,f5.1,2x,f5.1,2x,f4.1,2x,f4.1,2x,f5.1,2x, f5.1) 500 format(1x,a5,平均雨量:,f5.1,毫米) end 20.输出九九乘法表 integer a(9,9) forall(i=1:9,j=1:9) a(i,j)=i*jforall 循环表示逐一且同时循环循环表示逐一且同时循环 write(*,*) *九九乘法表* write(*,*)123456789 write(*,*)- do i=1,9 write(*,100)i,(a(i,j),j=1,i) end do write(*,*)- 100 format(10i4) Fortran 练习题 shirley7 end 21.输入整数,判断能否被 3 或 5 整除,如能整除,则输出此数,否则不输出。 integer x read*,x if(mod(x,3)=0.or.mod(x,5)=0)then print*,x endif end 22.计算职工工资,工人每周工作 40 小时,超过 40 小时部分应该按加班工资计算(为 正常工资的 2 倍) ,输入工作时间和单位报酬,计算该职工应得工资,并输出 integer t read*,t,m select case(t)select case(x)语句表示选择结构语句表示选择结构 case(:40)case(x1)时输出语句时输出语句 1 p=t*m case(41:)case(x2)时输出语句时输出语句 2 p=40*m+(t-40)*2*m end selectselect case 后必跟后必跟 end select print*,该职工应得工资,p end 23.输入三条边 A,B,C 先判断是否构成三角形,若构成三角形则计算三个角,编写程序 实现,反余弦标准函数 ACOS(x) read*,a,b,c if(a+b-c0).and.(a+c-b0).and.(b+c-a0)then aa=acos(b*2+c*2-a*2)/(2*b*c) ab=acos(a*2+c*2-b*2)/(2*a*c) ac=acos(b*2+a*2-c*2)/(2*a*b) print*,aa,ab,ac end if end 24.以市中心为圆心,半径 20km 以内每平方米商品房价格为 1.7 万元,20km 以外每 平方米商品房价格为 1.25 万元,编写程序,输入某住宅小区位置坐标(x,y)求出该位置 的每平方米商品房价格,并输出 read*,x,y if(x*2+y*2a(j)then x=a(i) a(i)=a(j) a(j)=x end if end do end do do i=1,4 print*,a(i) end do end 26.某商店对购货额为 10000 元以上的客户八折优惠,500 元以上 1000 元以下九折优 惠,200 元以上 500 元以下九五折优惠,100 元以上 200 元以下九七折,100 元以下 不优惠 read*,m if(m.ge.1000)then.ge.表示大于,同表示大于,同 w=0.2*m else if(m.ge.500)then w=0.1*m else if(m.ge.200)then w=0.05*m else if(m.ge.100)then w=0.03*m else w=0 end if print*,w end 27.计算税收,企业产值小于 1000 万税率 3%,企业产值大于等于 1000 万小于 2000 万税率为 5%,企业产值大于等于 2000 万小于 5000 万 read*,m if(m.ge.500000000)then t=m*0.2 else if(m.ge.100000000)then t=m*0.14 else if(m.ge.50000000)then t=m*0.1 else if(m.ge.20000000)then t=m*0.07 else if(m.ge.10000000)then t=m*0.05 Fortran 练习题 shirley9 else t=m*0.03 end if print*,t end 28.输入一个三位自然数,先判断它是否为水仙花数,水仙花数是每一位数字的立方和 等于该数本身的数 integer x,a,b,c read*,x a=x/100 b=(x-100*a)/10 c=mod(x,10) if(x-(a*3+b*3+c*3)=0)then print*,x,是水仙花数 end if end 29.输出 x,sinx,cosx,tanx integer x do x=0,180,10 y=x*3.1415926/180 print*,“x=“,x,“sinx=“,sin(y),“cosx=“,cos(y),“tanx=“,tan(y) enddo end 30.x=1.0 1.1 1.2 2.9,编写程序输出 x x2 ex lnx 的值 real x,x2,ex,lnx,e do x=1.0,2.9,0.1 e=2.718 x2=x*2 ex=e*x lnx=log(x)log(x)表示表示 ln 函数函数 print 100,x,x2,ex,lnx end do 100 format (1x,x=,f4.2,1x,x2=,f4.2,1x,ex=,f5.2,1x,lnx=,f4.2) end 31.输入 10 个整数,计算它们的和、积、平方和、和的平方 real sum,xn,sum2,sum3 dimension a(10) do i=1,10数组元素的读入数组元素的读入 1 read*,a(i) end do sum=0.0 xn=1.0 sum2=0.0 sum3=0.0 Fortran 练习题 shirley10 do i=1,10 sum=sum+a(i) xn=xn*a(i) sum2=sum2+a(i)*2 sum3=sum*2 end do print*,和为,sum,积为,xn,平方和为,sum2,和的平方为,sum3 end 32.输入 20 个数,统计其中正数、负数和零的个数 dimension a(20) integer a,b,c a=0 b=0 c=0 do i=1,20 read*,a(i) end do do i=1,20 if(a(i)0)then a=a+1 else if(a(i)10000 的最小项数 n integer:i,sum=0 i=0 do while(sum=0) s=s*i*(i-1) t=(x*i)/s cosx=cosx+(-1)*(i/2)*t i=i+2 end do print*,cosx=,cosx end 37.输入 x 值(|x|-1.and.x=0) t=(x*i)/i s=s+t i=i+1 end do print“(1x,s=,f7.5)“,s Fortran 练习题 shirley12 else print*,数字不合法 end if end 38.输入 x,用迭代法按下列迭代公式求 y=3 根号 x 的值,初始值 y0=x,精度要求 4 位有效数字 yn+1=2/3yn+x/(3yn2) real x,y read*,x y=x;i=1 do while(i=m)then b=n-a m=int(sqrt(real(b)+1 j=3 do while(j=m)then print*,n,=,a,+,b end if end if end do end if end do end 41.编写程序求 2 至 10000 之间的所有完数, 所谓完数是指除自身之外的所有因子之和 等于自身的数 integer:a,m,n,sum print*,2-10000 之间的完数有: do n=2,10000 sum=1 do a=2,n/2 if(mod(n,a)=0)then sum=sum+a end if end do if(n=sum)print*,n end do end 42.输出图形 a-z parameter(n=26*2-1) character line*n do i=0,25 do j=1,n line(j:j)= end do k=0 do j=26-i,26+i,2 k=k+1 line(j:j)=char(k+96) end do print*,line end do end Fortran 练习题 shirley14 43.输出图形 1-5 implicit none integer:i,n character:blank= do i=1,5 write(*,“(1x,A)“)repeat(blank,30-3*i) do n=1,i write(*,“(1x,I2,)“)n end do do n=i-1,1,-1 write(*,“(1x,i2,)“)n end do write(*,“(1x,/)“) end do end 44.从一篇文章中查出其中包含多少个单词banana,banana 可以出现在两行上 character line*10,long*15,last*5 last=long(11:15) n=0 do i=1,2 read*,line long=last/line j=1 20 L=index(long(j:15),banana) if(l.eq.0)then last=long(11:15) j=16 else n=n+1 j=(j-1)+l+6 end if last=long(11:15) if(j.le.10)goto 20 end do print*,n end 45.有一篇文章,请找出它包含多少个句子 character line*80,m*1 parameter(m=.) n=0 read*,k do i=1,k read*,line j=1 Fortran 练习题 shirley15 20 l=index(line(j:80),m) if(l.le.0)then j=81 else n=n+1 j=(j-1)+l+1 end if if(j.le.79)goto 20 end do print*,n end 46.有一篇文章,请找出它包含多少个单词 character line*80 n=0 read*,k do i=1,k read*,line do j=1,80 if(line(j:j).eq. .or.line(j:j).eq.,.or.line(j:j).eq.or.j.eq.80)then n=n+1 end if end do end do print*,n end 47.输入一个单词,将它按逆序打印出来 character str1*20,str2*20,p*1 read*,str1 n=len(str1) do i=1,n p=str1(i:i) j=n-i+1 str2(j:j)=p end do print*,str2 end 48.输入 10 个国家名,按字母顺序在最前面的打印出来 character name*10,first first=china do i=1,10 read*,name if(name.lt.first) first=name end do print*,the firsr country is:,first Fortran 练习题 shirley16 end 49.输出 f 的递增递减图 character a,b*9 a=f do 10 i=1,5 b= l=5-i do 20 j=1,2*i-1 b(l+j:l+j)=a 20 continue print*,b 10continue do 30 i=4,1,-1 b= l=5-i do 40 j=2*i-1,1,-1 b(l+j:l+j)=a 40 continue print*,b 30 continue end 50.矩形法矩形法求 0-1 (1+ex)积分 f(x)=1.0+exp(x) read(*,*)a,b,n h=(b-a)/n s=0.0 do 10 i=1,n s=s+f(a+(i-1)*h)*h 10 end do write(*,*)s=,s end 51.梯形法梯形法求 0-1 (1+ex)积分 f(x)=1.0+exp(x) read(*,*)a,b,n h=(b-a)/n s=0.0 do 10 i=1,n s=s+(f(a+(i-1)*h)+f(a+i*h)*h/2 10 end do write(*,*)s=,s end 52.辛普森法求 0-1 (1+ex)积分 f(x)=1.0+exp(x) read(*,*)a,b,n Fortran 练习题 shirley17 h=(b-a)/(2.0*n) s=0.0 do 10 i=1,n s=s+4.0*f(a+(2*i-1)*h)+2.0*f(a+(2*i)*h) 10 end do s=(s+f(a)-f(b)*h/3.0 write(*,*)s=,s end 53.辛普森法辛普森法求 0-1 上(1+sinx)的积分 f(x)=1.0+sin(x) read(*,*)a,b n=1 h=(b-a)/(2.0*n) c=(a+b)/2 s=(f(a)+4*f(c)+f(b)*h/3 s1=1.0 do while(abs(s1-s)1e-4) n=n*2 h=(b-a)/(2.0*n) s1=s do 10 i=1,n s=s+4.0*f(a+(2*i-1)*h)+2.0*f(a+(2*i)*h) 10 end do s=(s+f(a)-f(b)*h/3.0 write(*,*)s=,s end do end 54.用迭代法迭代法求 x2-4x+1=0 的根 f(x)=(x*2+1)/4.0 real t,x1,x0 read*,t n=0 x1=t do while(abs(x1-x0)-1.0e-60) x0=x1 x1=f(x0) n=n+1 if(n1000)print*,不收敛不收敛 end do print“(1x,x=,f6.4)“,x1 end 55.用牛顿迭代法牛顿迭代法求 x2-4x+1=0 的根 real x,x1,f,f1 integer n Fortran 练习题 shirley18 read*,x n=1 do x1=x f=x1*2-4*x1+1 f1=2*x1-4 x=x1-f/f1 print 100,n,x1,x n=n+1 if(abs(x-x1)1e-6.and.abs(f0)1e-6) x0=(x1+x2)/2 f0=f(x0) if(f0*f20)then x2=x0 f2=f(x2) else x1=x0 f1=f(x1) end if end do if(abs(f0)1e-6)x0=(x1+x2)/2 print*,x0 end 57.用弦截法求 x2-4x+1=0 的根 f(x)=x*2-4*x+1 real x1,x2,f1,f2 do read*,x1,x2 f1=f(x1) f2=f(x2) Fortran 练习题 shirley19 if(f1*f21e-6.and.abs(f0)1e-6) x0=(f(x2)*x1-f(x1)*x2)/(f(x2)-f(x1) f0=f(x0) if(f0*f20)then x2=x0 f2=f(x2) else x1=x0 f1=f(x1) end if end do if(abs(f0)1e-6)x0=(x1+x2)/2 print*,x0 end 58.用二分法求 x5-x4+4x2-6x+1=0 的根 f(x)=x*5-x*4+4*x*2-6*x+1 real x1,x2,f1,f2 do read*,x1,x2 f1=f(x1) f2=f(x2) if(f1*f21e-6.and.abs(f0)1e-6) x0=(x1+x2)/2 f0=f(x0) if(f0*f20)then x2=x0 f2=f(x2) else x1=x0 f1=f(x1) end if end do if(abs(f0)1e-6)x0=(x1+x2)/2 print*,x0 end 59.以下程序的功能是: 统计输入的 10 个数据中数组元素的下标与其值相同的元素个数, 完善后调试并运行 integer A(10)定义整型数组定义整型数组 Fortran 练习题 shirley20 print*,请输入 10 个数据 read*,(A(i), i=1,10 )数组读入方式:数组读入方式:read*,(A(i), i=1,n ) m=0 do i=1,10 if(A(i)=i)m=m+1 end do print*,下标与其值相同的元素个数是:,m end 60.从键盘上键入 20 个数,按输入的逆序打印出这 20 个数,要求输入时每行输入 5 个数,输出时每行打印 10 个数 integer i,A(20),B(20) print*,请输入 20 个数据,每行输入 5 个数据 read*,a do i=20,1,-1 b(21-i)=a(i) end do print 200,(B(i),i=1,20) 200 format(1x,10i4/1x,10i4) end 61.把一个数列中所有相同的数删到只剩下一个 integer m integer a(10),b(10) print*,请输入 10 个整数: read*,(a(i),i=1,10) b(1)=a(1) m=1 do i=2,10 do j=1,m if(a(i)=b(j)exit end do if(jm)then m=m+1 b(m)=a(i) end if end do print*,删除前整数:10 个,(a(i),i=1,10) print*,删除后整数:,m,个,(b(i),i=1,m) end 62.输入任意五个数放在数组中,假定输入的 5 个数为 1、2、8、3、7,请用三种方法 打印出以下方针: parameter(n=5) integer:A(n)=(/1,2,8,3,7/),i,j,k数组读入方式:数组读入方式:a(n)=(/a,b,c,d,e/) print*,(A(j),j=1,n) do i=1,n-1 Fortran 练习题 shirley21 k=A(1) do j=1,n-1 A(j)=A(j+1) end do A(n)=k print*,A end do end 63.输出如下形式的学生成绩汇总表 character*10 name(4)定义字符数组,字符长度为定义字符数组,字符长度为 10 integer grade_english(4),grade_math(4),grade_electrotechnics(4) real grade_ave(4)定义实型数组定义实型数组 real*4 ave1,ave2,ave3,ave4 write(*,*)输入学生姓名和成绩(姓名加引号): do i=1,4 read*,name(i),grade_english(i),grade_math(i),grade_electrotechnics(i) grade_ave(i)=(grade_english(i)+grade_math(i)+grade_electrotechnics(i)/3.0 sum1=sum1+grade_english(i) sum2=sum2+grade_math(i) sum3=sum3+grade_electrotechnics(i) sum4=sum4+grade_ave(i) end do ave1=sum1/4.0 ave2=sum2/4.0 ave3=sum3/4.0 ave4=sum4/4.0 write(*,“(1x,姓名,4x,英语,2x,高等数学,2x,电工学,2x,平均成绩)“) do i=1,4 print 100,name(i),grade_english(i),grade_math(i),grade_electrotechnics(i),grade_ave(i) end do print 200,ave1,ave2,ave3,ave4 100 format(1x,a4,4x,i4,2x,i8,2x,i6,2x,f8.2) 200 format(平均分,3x,f4.1,6x,f4.1,4x,f4.1,5x,f4.1) end 64.已知 10 个整数,输入一个待删除的数,在十个整数中查找,若有该整数,则将其从 10 个整数中删除,输出删除前后的这组整数 integer:a(10),b(9),x print*,请输入十个数 read*,(a(i),i=1,10) print*,请输入一个待删除的数 read*,x print*,a if(1m)then m=m+1 b(m)=a(i) end if end do print“(删除前整数:,1x,(i4,2x) “,(a(i),i=1,n) print“(删除后整数:,1x,(i4,2x) “,(b(i),i=1,m) end 66.在一个 mn 的矩阵中求绝对值最大和最小元素所在的行号和列号 integer m,n,min,max real,dimension(:,:),allocatable:a read*,m,n allocate(a(m,n) read*,(a(i,j),i=1,m),j=1,n) min=ABS(a(1,1) max=ABS(a(m,n) i_min=1 i_max=m j_min=1 j_max=n Fortran 练习题 shirley23 print*,数组: print“(f6.2,2x) “,(a(i,j),i=1,m),j=1,n) do i=1,m do j=1,n if(abs(a(i,j)max)then max=abs(a(i,j) i_max=i j_max=j end if end do end do print*,最小元素,a(i_min,j_min),行号,i_min,列号,j_min print*,最大元素,a(i_max,j_max),行号,i_max,列号,j_max end 67.输入一个班学生的学号和五门课成绩,统计每位学生的平均成绩,打印该班学生成 绩表 integer m character*10,dimension(:),allocatable:id integer,dimension(:),allocatable:grade1,grade2,grade3,grade4,grade5 real,dimension(:),allocatable:grade_ave read*,n allocate(id(n),grade1(n),grade2(n),grade3(n),grade4(n),grade5(n),grade_ave(n) !integer grade1(n),grade2(n),grade3(n),grade4(n),grade5(n) !real grade_ave(n) write(*,*)输入学生学号和成绩(学号加引号): do i=1,n read*,id(i),grade1(i),grade2(i),grade3(i),grade4(i),grade5(i) grade_ave(i)=(grade1(i)+grade2(i)+grade3(i)+grade4(i)+grade5(i)/5.0 end do write(*,“(1x,学号,4x,科目 1,2x,科目 2,2x,科目 3,2x,科目 4,2x,科目 5,2x,平均 成绩)“) do i=1,n print 100,id(i),grade1(i),grade2(i),grade3(i),grade4(i),grade5(i),grade_ave(i) end do 100 format(1x,a4,4x,i5,2x,i5,2x,i5,2x,i5,2x,i5,2x,f8.2) end 68.输入一个班学生的学号和五门课成绩,统计每个分数段的学生人数及所占比例,输 出统计结果 integer num(5,6) Fortran 练习题 shirley24 character*10,dimension(:),allocatable:id integer,dimension(:,:),allocatable:grade read*,n allocate(id(n),grade(n,5) write(*,*)输入学生学号和成绩(学号加引号): do i=1,n read*,id(i),grade(i,1),grade(i,2),grade(i,3),grade(i,4),grade(i,5) end do do j=1,5 do i=1,n if(grade(i,j)(i4,2x) “,(A(j),j=1,n) do i=1,n k=A(1) do j=1,n-1 A(j)=A(j+1) Fortran 练习题 shirley25 end do A(n)=k print“(1x,(i4,2x) “,A end do end 70.从 n 个数中查找最小数,并将其插入到第一个数前 integer min,x integer,dimension(:),allocatable:a,b read*,n allocate(a(n),b(n) !parameter(n=10) print*,请输入,n,个数据 read*,(A(i), i=1,n ) print“(插入前整数:,1x,(i4,2x) “,a min=a(1) do i=2,n if(mina(i)then min=a(i) x=i end if end do do i=1,x-1 b(i+1)=a(i) end do do i=x+1,n b(i)=a(i) end do b(1)=min print“(插入后整数:,1x,(i4,2x) “,b end 71.已知 nn 方阵,求对角线元素之和,并输出 integer i,n,sum integer,allocatable:matrix(:,:) read*,n allocate(matrix(n,n) read*,(matrix(i,j),i=1,n),j=1,n) sum=0 do i=1,n sum=sum+matrix(i,i) sum=sum+matrix(i,n-i+1) end do if(mod(n,2)/=0)sum=sum-matrix(n+1)/2,(n+1)/2) print“(对角线元素之和为:,1x,(i4,2x)“,sum end Fortran 练习题 shirley26 72.对两个同阶矩阵进行相加 integer,dimension(:,:),allocatable:a,b,c print*,请输入 mn 矩阵阶数 m,n: read*,m,n allocate(a(m,n),b(m,n),c(m,n) print*,输入 mn 矩阵 A 的数据: read*,(a(i,j),i=1,m),j=1,n) print*,输入 mn 矩阵 B 的数据: read*,(b(i,j),i=1,m),j=1,n) do i=1,m do j=1,n c(i,j)=a(i,j)+b(i,j) end do end do print*,相加后矩阵: print“(i4,2x) “,c end 73.已知 mn 矩阵,求每行元素之和,将和最大的行与第一行对调,输出对调前后矩 阵 integer sum,max,k integer,allocatable:a(:,:),b(:),c(:) print*,请输入 mn 矩阵阶数 m,n: read*,m,n allocate(a(m,n),b(m),c(n) print*,输入 mn 矩阵 A 的数据: read*,(a(i,j),i=1,m),j=1,n) print*,对调前矩阵: print“(1x,i3,1x)“,(a(i,j),j=1,n),i=1,m) do i=1,m sum=0 do j=1,n sum=sum+a(i,j) end do b(i)=sum end do max=b(1) do i=1,m if(b(i)max)then max=b(i) k=i end if end do do j=1,n c(j)=a(1,j) Fortran 练习题 shirley27 a(1,j)=a(k,j) a(k,j)=c(j) end do print*,对调后矩阵: print“(1x,i3,1x)“,(a(i,j),j=1,n),i=1,m) end 74.先用数组生成九九乘法表,然后按照一下格式打印九九乘法表 integer a(9,9) forall(i=1:9,j=1:9) a(i,j)=i*j write(*,*) *九九乘法表* write(*,*)123456789 write(*,*)- do i=1,9 write(*,100)i,(a(i,j),j=1,i) end do write(*,*)- 100 format(10i4) end 75.已知某气象台站 7 月 10 日至 14 日每天 4 个观测时间的温度观测值, 要求编写程序 实现以下功能: (1)从键盘输入数据,保存到一个有格式顺序文件 ex01_source.txt 中 (2)从该文件中读出数据,统计每天的平均温度 (3)把每天的日期及平均温度写到 exam01_result.txt 中 integer a(2,3),b(2,3),c(2,3) open(1,file=a.dat,status=old) open(2,file=b.dat,status=old) do i=1,2 read(1,*) (a(i,j),j=1,3) end do do i=1,2 read(2,*) (b(i,j),j=1,3) end do forall(i=1:2,j=1:3) c(i,j)=a(i,j)+b(i,j) open(3,file=c.rst,status=unknown) do i=1,2 write(3,(4i3)(c(i,j),j=1,3) end do end 76.已知某气象台站 7 月 10 日至 14 日每天 4 个观测时间的温度观测值, 要求编写程序 实现以下功能: (1)从有格式顺序文件 temp.dat 中读取数据保存到一个有格式直接文件 temp2.txt 中 (2)再从该文件中读取第三个记录,然后将结果显示在屏幕上 real:temp(5,5),ave1(5),ave2(4),sum1(5)=0,sum2(4)=0 character*8 tim(5) Fortran 练习题 shirley28 open(1,file=temp.dat,form=formatted,access=sequential,status=old) read(1,*) do i=1,5 read(1,*) tim(i),(temp(i,j),j=1,4) end do close(1) open(2,file=temp2.txt,form=formatted,access=sequential,status=unknown) do i=1,5 write(2,(a8,5(1x,f4.1)tim(i),(temp(i,j),j=1,4) end do close(2) print“(a8,4(1x,f4.1)“,tim(3),(temp(3,j),j=1,4) end temp.dat: 日期02 时 08 时 14 时 20 时 07 月 10 日 28.8 32.9 36.8 33.2 07 月 11 日 29.8 31.8 36.0 31.1 07 月 12 日 28.7 32.3 35.1 32.3 07 月 13 日 29.9 33.4 36.2 32.7 07 月 14 日 30.4 32.5 36.5 25.5 temp.out 日期02 时 08 时 14 时 20 时 每天平均温度 07 月 10 日 28.8 32.9 36.8 33.2 26.3 07 月 11 日 29.8 31.8 36.0 31.1 25.7 07 月 12 日 28.7 32.3 35.1 32.3 25.7 07 月 13 日 29.9 33.4 36.2 32.7 26.4 每时刻平均温度 36.9 40.7 45.2 38.7 temp2.txt 07 月 10 日 28.8 32.9 36.8 33.2 07 月 11 日 29.8 31.8 36.0 31.1 07 月 12 日 28.7 32.3 35.1 32.3 07 月 13 日 29.9 33.4 36.2 32.7 07 月 14 日 30.4 32.5 36.5 25.5 77.选取北京 1951-1980 年的 12 月、1 月、2 月份月气温平均值作为样本,编制程序: (1)分别求每个月份月平均气温最小及最大值; (2)求距平值; (3)求标准化值; (4)求协方差矩阵; (5)求相关矩阵 要求: (1)样本从文件中读入; (2) (1)-(5)用子程序完成 !主程序主程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026高考英语 写作-通知 复习课件
- 林火扑救安全知识培训课件
- Cumin-oil-生命科学试剂-MCE
- 化工票证知识培训效果课件
- 化工实训实验室安全知识课件
- 苏教版数学五年级上册第4单元《小数加法和减法 1 小数加、减法》(第一课时)听评课记录
- 村纪检委员业务培训课件
- 2023-2024学年部编人教七下语文第二单元6最后一课听评课记录
- 人音版音乐九年级上册《☆卡门序曲》听评课记录1
- 村级消防安全知识培训课件会
- 2025年纸杯机行业市场调研报告
- 国家职业技术技能标准 6-21-07-01 工艺品雕刻工 劳社厅发20031号
- 培训班合伙人合同协议
- 山东益丰生化环保股份有限公司50000吨年高效环保助剂技改项目环境影响报告书
- 设计高效的污泥综合利用余热锅炉
- 静脉输血的考试题及答案
- 水表检定员考试题及答案
- 中医基础理论课件体质学说
- 神经重症气管切开患者气道功能康复与管理专家共识
- 贵州预制菜产业发展现状及对策
- 培训课件医院感染暴发应急处置预案(院感科)
评论
0/150
提交评论