fortran程序案例题汇编(14道)
更新时间:2024-01-19 14:14:02 阅读量: 教育文库 文档下载
- FORTRAN程序推荐度:
- 相关推荐
1.Fibonacci数列定义如下: F1=1 F2=1
Fn=Fn-1+Fn-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 end
2.输入10个学生的总分,求每个学生的名次 integer s(10),a(10),i,j do i=1,10 read*,s(i) enddo do i=1,10 a(i)=1 do j=1,10
if(s(i)
1
3.给定一组数,按照从小到大的顺序输出。 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)
if (p/=j) then
t=a(p);a(p)=a(j);a(j)=t endif enddo
print *,(a(i),i=1,10) end
2
4.输入若干名学生的学号和三门课程(语数英)的成绩,要求从键盘输入一个学生的学号,能打印出该学生的三门功课成绩和总分。 character*6,dimension(:),allocatable::xue integer,dimension(:,:),allocatable::g integer,dimension(:),allocatable::zong integer i,j,n character*6,xh
print *,\请输入学生的个数\read *,n
allocate(xue(n)) allocate(g(n,3)) allocate(zong(n))
do i=1,n
read *,xue(i),(g(i,j),j=1,3) enddo
do i=1,n zong(i)=0 do j=1,3
zong(i)=zong(i)+g(i,j) enddo enddo
print *,\请输入你要打印的学生的学号\read *,xh
do i=1,n
if(xue(i)==xh)then
print *,(g(i,j),j=1,3),zong(i) exit endif enddo end
3
5.编写一个函数子程序计算所输入两个整数m、n的最大公约数。 integer function gcd(m,n) integer r r=mod(m,n) do while (r/=0) m=n n=r
r=mod(m,n) enddo gcd=n end
integer x,y,gcd read*,x,y
print*,gcd(x,y) end
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
integer s logical prime s=0
do i=100,1000 if(prime(i))then s=s+1 endif enddo print*,s end
4
7.设计一个子程序,对于自然数m,n,该函数求m,n的最小公倍数。 integer function gcd(m,n) integer r,t t=m*n
r=mod(m,n) do while (r/=0) m=n n=r
r=mod(m,n) enddo gcd=t/n end
integer x,y,gcd print*,\请输入两个数\read*,x,y
print*,gcd(x,y) end
8.对任意自然数n,设计一个求n的各位数字的立方和的子程序,并调用该子程序求100~999之间的所有水仙花数。 subroutine shu(n,t) integer n,i,a,b,c logical t a=n/100
b=mod(n/10,10) c=mod(n,10)
if(a**3+b**3+c**3==n)then t=.true. else t=.false. endif end
logical t
do i=100,999 call shu(i,t) if(t)then print*,i endif enddo end
5
9.设计一个子例行程序SORT(A,N,K),其中A是一个一维数组,N是A的元素个数,SORT的功能是: 当K=1时,将数组A按升序排列;当K=0时,将数组A按降序排列;当K为其它数值时,数组A保持原序。调用该子程序根据不同输入得出数组不同的输出方式。 subroutine sort(a,n,k) integer a(n) integer k,i select case(k) case (0) do i=1,n-1 do j=1,n-I
if(a(j)>a(j+1)) then t=a(j)
a(j)=a(j+1) a(j+1)=t endif enddo enddo case(1) do i=1,n-1 do j=1,n-I
if(a(j)
a(j)=a(j+1) a(j+1)=t endif enddo enddo end select end
real,dimension(:),allocatable::b integer k,n
print*,\请输入要排序的数据数目\read*,n
allocate(b(n))
print *,\请输入这n个数据\read *,(b(i),i=1,n)
print*,\请输入k的值\read *,k
call sort(b,n,k) print *,(b(i),i=1,n) end
6
10.编写一个判断闰年的程序。调用该过程输出2011~2050之间所有的闰年。 function s(n) integer n logical s
if(mod(n,4)==0.and.mod(n,100)/=0.or.mod(n,400)==0)then s=.true. else s=.false. endif end
logical s
do i=2011,2050 if(s(i))then print*,i endif enddo end
7
11.利用子程序机制实现:输入若干名学生的学号和三门课程的成绩;计算每个学生的总分;输出每个学生的学号、三门课程的成绩和总分。 integer,dimension(:,:),allocatable::grade integer,dimension(:),allocatable::zong integer,dimension(:),allocatable::mingci integer m,n read *,m,n
allocate (grade(m,n)) allocate(zong(m)) allocate(mingci(m)) call input(grade,m,n)
call sum1(grade,m,n,zong) call qiuming(zong,m,mingci)
call output(grade,m,n,zong,mingci) end
subroutine input(grade,m,n) integer grade(m,n) print *,\请输入成绩\do i=1,m
read *,(grade(i,j),j=1,n) enddo end
subroutine sum1(grade,m,n,zong) integer grade(m,n) integer zong(m) zong=0 do i=1,m do j=1,n
zong(i)=zong(i)+grade(i,j) enddo enddo end
subroutine qiuming(zong,m,mingci) integer zong(m) integer mingci(m) mingci=1 do i=1,m do j=1,m
if(zong(i) 8 endif enddo enddo end subroutine output(grade,m,n,zong,mingci) integer grade(m,n) integer zong(m) integer mingci(m) do i=1,m print *,(grade(i,j),j=1,n) ,zong(i),mingci(i) enddo end 12.利用递归函数方法实现:求n!;然后调用该函数求 x2x4x6 cos(x)?1? 2!?4!?6!?... 直到最后一项?10?6.integer recursive function fac(n) result(f) if(n==1) then f=1 else f=n*fac(n-1) endif end parameter(pi=3.1416926) real x,s integer n,f s=1 print*,\请输入角度值\read*,x x=x*pi/180 f=-1 n=2 do while(abs(f*x**n/fac(n)>1e-6) s=s+f*x**n/fac(n) n=n+2 f=-f enddo print*,s end 9 13.输入10名学生的学号、姓名、性别和一门课程的成绩,要求打印出不及格学生的所有信息。 type s character*11 num character*8 name logical sex real grade end type type(s) g(10) integer i,j print*,\请输入学生的基本信息\do i=1,10 read*,g(i).num,g(i).name,g(i).sex,g(i).grade enddo do i=1,10 if(g(i).grade<60)then j=i endif enddo print*,g(j).num,g(j).name,g(j).sex,g(j).grade end 10 14.已知职工工资表记录包括:职工号,姓名,年龄、职称、工资,建立一个10个职工组成的记录表,打印输出职工中工资最高者和最低者所有信息,以及工资总额和平均工资。 type emp character*6 num character*8 name integer age character*16 zhichen real wage endtype type(emp) s(10) integer i real max,min,sum,avg print*,\请输入职工的基本信息\do i=1,10 read *,s(i).num,s(i).name,s(i).age,s(i).zhichen,s(i).wage enddo max=s(1).wage;j=1 do i=2,10 if(max max=s(1).wage;k=1 do i=2,10 if(min>s(i).wage)then min=s(i).wage k=i endif enddo sum=0 do i=1,10 sum=sum+s(i).wage enddo avg=sum/10 print *,\输出最高工资的职工信息\ print *,s(j).num,s(j).name,s(j).age,s(j).zhichen,s(j).wage print *,\输出最低工资的职工信息\ print *,s(k).num,s(k).name,s(k).age,s(k).zhichen,s(k).wage print *,\输出工资总额和平均值\print *,sum,avg end 11 14.已知职工工资表记录包括:职工号,姓名,年龄、职称、工资,建立一个10个职工组成的记录表,打印输出职工中工资最高者和最低者所有信息,以及工资总额和平均工资。 type emp character*6 num character*8 name integer age character*16 zhichen real wage endtype type(emp) s(10) integer i real max,min,sum,avg print*,\请输入职工的基本信息\do i=1,10 read *,s(i).num,s(i).name,s(i).age,s(i).zhichen,s(i).wage enddo max=s(1).wage;j=1 do i=2,10 if(max max=s(1).wage;k=1 do i=2,10 if(min>s(i).wage)then min=s(i).wage k=i endif enddo sum=0 do i=1,10 sum=sum+s(i).wage enddo avg=sum/10 print *,\输出最高工资的职工信息\ print *,s(j).num,s(j).name,s(j).age,s(j).zhichen,s(j).wage print *,\输出最低工资的职工信息\ print *,s(k).num,s(k).name,s(k).age,s(k).zhichen,s(k).wage print *,\输出工资总额和平均值\print *,sum,avg end 11
正在阅读:
fortran程序案例题汇编(14道)01-19
小学二年级下写字课教案 - 101-19
个人入党申请书范文精编08-02
超甜的朋友圈句子_超甜的爱情句子08-04
matlab第三讲教案05-29
20以内加减法混合练习题 学前班数学练习06-07
质量工程师考试中级模拟试题05-26
《邹碧华》党员观后感04-02
光纤激光器与不同激光器的优劣比较04-15
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 例题
- 汇编
- fortran
- 程序