FORTRAN课程设计级Word下载.docx
《FORTRAN课程设计级Word下载.docx》由会员分享,可在线阅读,更多相关《FORTRAN课程设计级Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
1课程设计报告书封面,应给出标题、专业、班级、姓名、学号(包括本组所有同学的姓名及学号)、指导教师和完成日期等信息,封面排版可自行设计;
2自动生成目录(要求包括两级目录)
参考样式:
要求:
目录题头用三号黑体字居中书写,隔行书写目录内容。
目录中各级题序及题标用小四号黑体字
3说明问题及解题的思路说明文本
4用FORTRAN语言编写的源程序(必要的变量说明和注释语句);
5符合作业要求的输入、输出数据。
6尽量使用文件实现输入和输出,并将记事本文件抓图后插入课程设计文本。
三、参考题目
1.【设计题目】求一元方程的根
问题描述和基本要求:
设计选择菜单完成求解一元方程的根。
●要求采用函数子程序定义一元方程,且每位同学选择的一元方程不能相同;
●程序选择以下三种方法(菜单选择)求该方程的根;
METHOD=1牛顿迭代法
METHOD=2二分法
METHOD=3弦截法
●对于不同的近似算法分别编写子程序,精度要求10-6。
2.【设计题目】求某函数在某指定区域内的求定积分
问题描述和基本要求:
设计选择菜单完成定积分计算
●采用函数子程序定义函数f(X),且每位同学选择的f(x)不能相同;
●程序选择以下三种方法求定积分:
METHOD=1矩形法
METHOD=2梯形法
METHOD=3辛普生法
●对于不同的算法分别编写子程序,选择调用,比较不同方法求解的精度。
根据以上功能要求,设计程序完成,每种方法的输出数据结果都要求显示。
3.【设计题目】求解线性方程组
用高斯消元法求解线性方程组AX=B的解
●其中A为n*n系数矩阵,x为解向量,B为方程组右端等值矩阵。
要求程序可以输入求解任意多个未知数的方程组,并附算例及求解结果;
●每位同学的线性方程组不能相同;
4.【设计题目】矩阵的操作
设有两个矩阵A=(aij)m×
n,B=(bij)p×
q
1)编写矩阵输入子程序input_mat,通过该子程序完成矩阵的输入并返回保存矩阵的数组和对应矩阵的行数、列数。
2)编写矩阵输出子程序output_mat,通过该子程序完成矩阵的输出。
3)求矩阵的转置,矩阵的转置A’=(aji)n×
m,转置前输出原矩阵,转置后输出转置矩阵。
4)求矩阵A、B的和。
矩阵A和B能够相加的条件是:
m=p,n=q;
矩阵A和B如果不能相加,请给出提示信息;
若能够相加,则求和矩阵C并输出C。
C=A+B=(cij)m×
n,其中cij=aij+bij
5)求矩阵A、B的差。
矩阵A和B能够相减的条件是:
矩阵A和B如果不能相减,请给出提示信息;
若能够相减,则求差矩阵C并输出C。
C=A-B=(cij)m×
n,其中cij=aij-bij
6)求矩阵A、B的积。
矩阵A和B能够相乘的条件是:
p=n;
矩阵A和B如果不能相乘,请给出提示信息;
若能够相乘,则求积矩阵D并输出D。
D=A×
B=(dij)m×
q,其中dij=∑aik×
bkj,k=1,2,„„,n
7)设计一个菜单,具有求矩阵的转置、求矩阵的和、差,求矩阵的积、退出等基本的功能。
在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵,然后再进行相应的操作。
5.【设计题目】纸牌游戏
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;
然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;
然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,
直到最后一张牌;
...再依次5的倍数的牌翻一次,6的,7的
直到
以52为基数的翻过,输出:
这时正面向上的牌有哪些?
6.【设计题目】排序综合
利用随机函数产生N个随机整数(2000以上),对这些数进行多种方法进行排序。
1)至少采用两种方法实现上述问题求解(提示,可采用的方法有插入排序、冒泡排序、选择排序、交换排序等)。
并把排序后的结果保存在不同的文件中。
2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。
3)如果采用4种或4种以上的方法者,可适当加分。
7.【设计题目】班级成绩考评程序
编写班级学生成绩管理程序
1)采用数据文件输入某班级30名同学的学号及各五门课程的成绩;
2)求出每名同学的总分、统计各门课程的平均分;
3)统计各门课程中高于和低于平均分的人数;
4)按总分高低排序,在输出文件中输出名次、学号及总分(按学号顺序输出)。
5)分数查询,输入某一同学的学号,输出该生的名次、各门课程的成绩及总分。
6)要求使用结构体,链表或数组等实现上述要求
7)采用多种方法且算法正确者,可适当加分
8.【设计题目】数据库简单应用
问题描述:
某旅游公司有职工15人,现在需要通过计算机管理该公司的人员信息,所开发的程序应当包括:
1建立人员基本信息(姓名、性别、出生年月、工龄、基本工资,奖金,总收入等)档案;
2能够按照当地个人所得税缴纳办法计算职工应缴纳的个人所得税并记录到员工信息中;
3能够判断某人是否是该公司的员工;
4能够按照员工的最终实际收入对员工进行排序,以便对前三名进行表彰。
要求采用子程序编程方式编写各个功能模块
9.【设计题目】计算任意多边形的面积
假定有一N多边形,N通过输入数据指定(N)=3),以多边形各个顶点的坐标值为输入数据,编写程序实现该多边形面积的计算。
1假定该多边形位于XOY平面
2多边形顶点坐标采用复型数据处理,提示:
两个复数的差是两点间的距离;
3利用计算三角形的面积的子程序
10.【设计题目】打印图形
打印由*组成的各种图案,至少打印5种以上。
1直角三角形形状
2等腰三角形形状
3菱形
4平行四边形
5其他各种形状
11、打印如下形式的NxN的螺旋方阵
116151413
217242312
318252211
419202110
56789
12.设计一程序完成水准测量中的数据处理和平差计算。
要求如下:
1.可以处理任意个测量点,可以处理根据菜单选择测量方法(闭合水准路线、附合水准路线、支水准路线)
2.测量数据以文件形式输入,输入数据格式自己设计;
3.根据输入的测量数据,按照工程测量基本原理,计算高差闭合差、分配高差闭合差及最终高程计算结果
4.将计算结果以文件形式输出
四、课程设计考核方法及成绩评定
课程设计结束时,要求学生写出课程设计报告(附可运行的源程序),由指导教师根据现场考查(考查任务完成情况)、批阅课程设计报告按百分制给定最终成绩(必要时可进行答辩,以检查学生的实际完成情况)。
按照百分制评定成绩:
平时表现(20%)、课程设计报告和程序质量可行性(60%),相对应运行结果数据及文件(20%)。
第二题利用梯形法计算f(x)=1/(1+x)的定积分即面积
reala,b,h,x,s,s1,f0,f1
integern,i
read*,a,b,n
h=(b-a)/n
x=a
s=0
f0=1.0/(1+x)
doi=1,n
x=x+h
f1=1.0/(1+x)
s1=(f0+f1)*h/2
s=s+s1
f0=f1
enddo
print*,"
定积分为:
"
s
end
第三题利用蒙特拉法求π(圆周率),主要是随机分配
integer(4)ISEED
read*,n
m=0
doi=1,n
x=RAN(ISEED)
y=ran(ISEED)
IF(X*X+Y*Y<
=1)m=m+1
圆周率π为"
1.0*m
一.排序
1.简单交换排序法
Parameter(n=10)
Integera(n),t
Print*,‘输入需要排序的n个数据’
Read*,a
doi=1,n-1
doj=i+1,n
if(a(i)>
a(j))then
t=a(i)
a(i)=a(j)
a(j)=t
endif
print*,’原始数据从小到大的顺序排列如下:
’
print10,a
10format(10i5)
2.选择交换排序法
p=i
if(a(j)<
a(p))p=j
a(i)=a(p)
a(p)=t
3.冒泡排序法
doj=1,n-i
if(a(j)>
a(j+1))then
t=a(j)
a(j)=a(j+1)
a(j+1)=t
二.派生类型type
Typestudent_record
Integernum,s
Reala(3),ave
endtype
Type(student_racord)class(n)
Print100,’请输入n个学生的学号和成绩:
Read*,class(i)%num,class(i)%a
Class(i)%ave=(class(i)%a
(1)+class(i)%a
(2)+class(i)%a(3))/3.0
enddo
k=0
doj=1,n
If(class(j)%ave>
class(i)%ave)k=k+1
enddo
class(i)%s=k+1
print*,’’
print*,’按照平均分排名如下:
print*,’------------------------------------------------------------------------------------------------------------’
print*,’名次学号语文数学英语平均分数’
doj=1,n
if(class(j)%s==i)print200,class(j)%s,class(j)%num,class(j)%a,class(j)%ave
100format(a,i3,a)
200format(i5,i10,4f8.1)
三、一元方程的解(以f(x)=x³
-2x²
+7x+4=0为例)
1.二分法
Programexam12-1
Real,x1,x2,x
Realbisect,func
Do
Print*,’输入x1,x2的值:
Read*,x1,x2
If(func(x1)*func(x2)<
0.0)exit
Enddo
x=bisect(x1,x2)
print10,’x=’,x
10format(a,f15.7)
End
Realfunctionbisect(x1,x2)
Realx1,x2,x,f1,f2,fx
x=(x1+x2)/2.0
fx=func(x)
dowhile(abs(fx)>
1e-6)
f1=func(x1)
if(f1*fx<
0)then
x2=x
else
x1=x
bisect=x
functionfunc(x)
realx
func=x**3-2*x**2+7*x+4
2.弦截法求一元方程的根
Programexam12-2
Realx1,x2,x
Realsecant,func
Print*,’输入x1,x2的值:
Read*,x1,x2
x=secant(x1,x2)
Realfunctionsecant(x1,x2)
Realfunc
x=x2-(x1+x2)/(func(x2)-func(x1))*func(x2)
secant=x
realfunctionfunc(x)
3.牛顿迭代法
Programexam12-3
Realx
Integerm
Print*,’输入初值’
Read*,x
Callnewton(x)
Subroutinenewton(x)
Implicitnone
Realx,x1
Realfunc,dfunc
Integeri,m
i=1
x1=x-func(x)/dfunc(x)
dowhile(abs(x-x1)>
print10,i,x1
x=x1
i=i+1
print20,’x=’x1
10format(‘i=’,i4,6x,’x=’,f15.7
20format(a,f15.7)
realfunctiondfunc(x)
realx
dfunc=3*x**2-4*x+7
四.数值积分(以f(x)=e**x+1为例)
1.矩形法
Programexam12-5
Reala,s,b
Integern
Realrectangle
Print*,’输入a,b和n的值’
Read*,a,b,n
S=rectangle(a,b,n)
Print10,a,b,n
Print20,s
10format(‘a=’,f5.2,3x,‘b=’,f5.2,3x,‘n=’,i4)
20format(‘s=’,f15.8)
Realfunctionrectangle(a,b,n)
Implicitnone
Realx,a,b,h,s
Integeri,n
s=s+func(x)*h
rectangle=s
func=1+exp(x)
2.梯形法
Programexam12-6
Realtrapezia
S=trapezia(a,b,n)
Realfunctiontrapezia(a,b,n)
s=s+(func(x+(i-1)*h)+func(x+i*h))*h/2.0
trapezia=s
3.辛普生法
Programexam12-7
Realsinpson
S=sinpson(a,b,n)
Reala,b,h,f2,f4,x
f2=0
f4=func(x)
x=x+h
f2=f2+func(x)
x=x+h
f4=f4+func(x)*h
rectangle=(func(a)+func(b)+4.0*f4+2.0*f2)*h/3.0
模板
Programmeau
Integermethod
Print*,’请输入要采取的方法’
Read*,method
Selectcase(method)
case
(1)
case
(2)
case(3)
Enddefault
Endselect