Fortran计算小题目第二期:格式打印输出,函数子程序与子例子程序配合计算,字符串连接以及排序。
- Authors
- GanAH
近期开始学习Fortran语言与程序设计,小有心得,特此分享。本次包含的内容有:
do 以及do while循环的使用与区别;
recursive递归函数的调用与结束条件;
字符串的连接等;
函数子程序与子例子程序的调用;
排序与统计。
本次编程作业采用的编辑器为Visual Studio 2015,编译环境为Intel(R) Visual Fortran。
由于有多个题目要求,故将不同的题目内容分别作为函数定义在独立的文件中,使用项目主函数进行调用。
第一题 非内置函数求sinx
(一) 题目要求
(二) 源代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30!n代表计算长度
!传入的x为radian
!resultSinx为返回的数据
FUNCTION loopSin(x,n) RESULT(resultSinx)
IMPLICIT NONE
real resultSinx,x,fac_n
integer n,i,lk
resultSinx = 0.0
do i = 1,n
call factorial(2*i-1,fac_n)
resultSinx = resultSinx*1.0 + (((-1)**(i-1)) * (x**(2*i - 1))/fac_n)*1.0
print 11,"第",i,"迭代值:",resultSinx
11 format(a4,i2,a8,f7.5)
end do
END
!计算阶乘子程序
subroutine factorial(n,fac)
real fac
integer n,j,i
j = 1
fac = 1.0
do while(j < n)
fac = fac *(j+1)
j = j + 1
end do
end subroutine factorial(三) 主函数调用及结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21!定义主函数
PROGRAM Main
IMPLICIT NONE
real loopSin,j
real a
a = loopSin(30*3.1415926/180,12)
print *,"sinx计算结果:"
print *,a
print *,"二.阶乘计算测试,测试数据:3,6"
call factorial(3,j)
print 11,"3的阶乘为:",j
call factorial(6,j)
print 11,"6的阶乘为:",j
11 format(a14,f5.1)
pause 1
END PROGRAM Main
图四 计算结果
第二题 递归计算勒让德级数
(一) 题目要求
(二) 源代码
1 | !N为递归次数,整型 |
(三) 主函数调用及结果
1 | !定义主函数 |
通过主函数调用时循环赋值并计算,采用三组数据进行测试,结果如下:
第三题 排序数据并统计
(一)题目要求
(二)源代码
1 | FUNCTION DATASTATIS() RESULT(RE) |
(三)主函数调用及结果
1 | !定义主函数 |
第四题 在指定字符串的位置插入新的字符串
(一) 题目要求
(二)源代码
1 | !定义主函数 |
(三)主函数调用及结果
1 | !定义主函数 |
==该字符串连接为固定的长度连接,需要动态字符串连接可更改字符串的固定定义方式。==
(四)编码遇到的异常
1 | !定义主函数 |
烫烫烫!
五、 总结
本次内容能够通过动手编程去帮助我们熟悉、掌握并灵活应用新学的编程语言,包含了数据的键盘输入与屏幕输出、算法构建与计算等。从语法到编程习惯,都是促使我们去更深入地学习、掌握这一门编程语言。
更多精彩内容请扫描下方二维码,还有更多资源分享哟~