350 lines
13 KiB
Fortran
350 lines
13 KiB
Fortran
! 2021-04-15 01:14:04 6.7.3 6-5(c)
|
||
! program name
|
||
! !
|
||
! ! 目的:
|
||
! ! 测试数组之间比较会输出什么,最后确认会一个一个比较,然后输出一个数组
|
||
! !
|
||
! ! 修订记录:
|
||
! ! 日期 编程者 改动描述
|
||
! ! =================== ============= ======================
|
||
! ! 2021-04-15 01:14:04 Sola 编写源代码
|
||
! !
|
||
! ! 程序结构:
|
||
! !
|
||
! implicit none
|
||
! ! 数据字典
|
||
! ! 声明常量
|
||
! REAL, PARAMETER :: PI=3.14159265 ! PI值
|
||
! REAL, PARAMETER :: e=2.718281828459 ! 自然对数
|
||
! INTEGER, PARAMETER :: arrayLength=6 ! 数组基准长度
|
||
! ! 声明变量
|
||
! integer, dimension(arrayLength) :: a, b ! 使用的数组
|
||
! ! 变量初始化
|
||
! a = (/1,-3,0,-5,-9,3/)
|
||
! b = (/-6,6,0,5,2,-1/)
|
||
! write(*,*) a > b
|
||
! ! 数据输入
|
||
! ! 运算过程
|
||
! ! 结果输出
|
||
|
||
! end program name
|
||
|
||
! 2021-04-15 01:14:04 6.7.3 6-10 6-11
|
||
! program name
|
||
! !
|
||
! ! 目的:
|
||
! ! 极坐标转换为直角坐标; 直角坐标转化为极坐标
|
||
! !
|
||
! ! 修订记录:
|
||
! ! 日期 编程者 改动描述
|
||
! ! =================== ============= ======================
|
||
! ! 2021-04-15 01:14:04 Sola 编写源代码
|
||
! ! 2021-04-15 01:14:04 Sola 增加反向转换功能
|
||
! !
|
||
! ! 程序结构:
|
||
! !
|
||
! implicit none
|
||
! ! 数据字典
|
||
! ! 声明常量
|
||
! REAL, PARAMETER :: PI=3.14159265 ! PI值
|
||
! REAL, PARAMETER :: e=2.718281828459 ! 自然对数
|
||
! INTEGER, PARAMETER :: arrayLength=2 ! 数组基准长度
|
||
! ! 声明变量
|
||
! integer :: errorLevel
|
||
! real, dimension(arrayLength) :: polar, reat ! 极坐标数组、直角坐标数组
|
||
! ! 变量初始化
|
||
! open(unit=1, status='scratch')
|
||
! write(1,1)
|
||
! 1 format(1X, "5, -36.87"/&
|
||
! &1X, "10, 45"/&
|
||
! &1X, "25, 233.13")
|
||
! rewind(unit=1)
|
||
! ! 数据输入
|
||
! write(*,3)
|
||
! 3 format(1X, " Table of 6-10 "/&
|
||
! &1X, " x y "/&
|
||
! &1X, "======= =======")
|
||
! do
|
||
! read(1,*,iostat=errorLevel) polar(1), polar(2)
|
||
! if (errorLevel/=0) exit
|
||
! reat(1)=polar(1)*cos(polar(2)/360.*PI)
|
||
! reat(2)=polar(1)*sin(polar(2)/360.*PI)
|
||
! write(*,2) reat(1), reat(2)
|
||
! 2 format(1X, T2, F6.2, T10, F6.2)
|
||
! end do
|
||
! rewind(unit=1)
|
||
! write(1,4)
|
||
! 4 format(1X, "3, -4"/&
|
||
! &1X, "5, 5"/&
|
||
! &1X, "-5, 12")
|
||
! rewind(unit=1)
|
||
! write(*,5)
|
||
! 5 format(1X/&
|
||
! &1X, " Table of 6-11 "/&
|
||
! &1X, " V θ "/&
|
||
! &1X, "======= =======")
|
||
! do
|
||
! read(1,*,iostat=errorLevel) reat(1), reat(2)
|
||
! if (errorLevel/=0) exit
|
||
! polar(1)=sqrt(reat(1)**2+reat(2)**2)
|
||
! polar(2)=atan(reat(2)/reat(1))
|
||
! write(*,2) polar(1), polar(2)
|
||
! ! write(*,*) atan2(reat(2),reat(1))
|
||
! end do
|
||
! ! 运算过程
|
||
! ! 结果输出
|
||
|
||
! end program name
|
||
|
||
! 2021-04-15 01:14:04 6.7.3 6-12
|
||
! program name
|
||
! !
|
||
! ! 目的:
|
||
! ! 计算一组数据中正数、负数和0的个数
|
||
! !
|
||
! ! 修订记录:
|
||
! ! 日期 编程者 改动描述
|
||
! ! =================== ============= ======================
|
||
! ! 2021-04-15 01:14:04 Sola 编写源代码
|
||
! !
|
||
! ! 程序结构:
|
||
! !
|
||
! implicit none
|
||
! ! 数据字典
|
||
! ! 声明常量
|
||
! REAL, PARAMETER :: PI=3.14159265 ! PI值
|
||
! REAL, PARAMETER :: e=2.718281828459 ! 自然对数
|
||
! INTEGER, PARAMETER :: arrayLength=20 ! 数组基准长度
|
||
! ! 声明变量
|
||
! real, dimension(-50:50) :: values
|
||
! integer :: positiveSum, zeroSum, negativeSum ! 正数、零、负数的个数
|
||
! integer :: i ! 循环参数
|
||
! ! 变量初始化
|
||
! positiveSum=0
|
||
! zeroSum=0
|
||
! negativeSum=0
|
||
! values=[(i, i=-50,50)]
|
||
! do i=-50,50
|
||
! if (values(i) > 0) then
|
||
! positiveSum=positiveSum+1
|
||
! else if (values(i) < 0) then
|
||
! negativeSum=negativeSum+1
|
||
! else
|
||
! zeroSum=zeroSum+1
|
||
! end if
|
||
! end do
|
||
! write(*,1) positiveSum, negativeSum, zeroSum
|
||
! 1 format(1X, "统计结果:输入数组中共有正数", I2, "个,负数", I2, "个,零", I2, "个")
|
||
! ! 数据输入
|
||
! ! 运算过程
|
||
! ! 结果输出
|
||
|
||
! end program name
|
||
|
||
! 2021-04-15 01:14:04 6.7.3 6-14
|
||
! program name
|
||
! !
|
||
! ! 目的:
|
||
! ! 6-14 计算点积
|
||
! ! 6-15 作用于物体的功率
|
||
! !
|
||
! ! 修订记录:
|
||
! ! 日期 编程者 改动描述
|
||
! ! =================== ============= ======================
|
||
! ! 2021-04-15 01:14:04 Sola 编写源代码
|
||
! ! 2021-04-15 01:14:04 Sola 计算作用于物体的功率
|
||
! !
|
||
! ! 程序结构:
|
||
! !
|
||
! implicit none
|
||
! ! 数据字典
|
||
! ! 声明常量
|
||
! REAL, PARAMETER :: PI=3.14159265 ! PI值
|
||
! REAL, PARAMETER :: e=2.718281828459 ! 自然对数
|
||
! INTEGER, PARAMETER :: arrayLength=3 ! 数组基准长度
|
||
! ! 声明变量
|
||
! real, dimension(arrayLength) :: array1, array2 ! 点积的两个矢量
|
||
! real, dimension(arrayLength) :: arrayResult ! 点积结果矢量
|
||
! real :: result ! 点积结果
|
||
! integer :: i ! 循环参数
|
||
! ! 变量初始化
|
||
! array1 = [4, 3, -2]
|
||
! array2 = [4, -2, 1]
|
||
! result=0
|
||
! arrayResult = array1*array2
|
||
! do i=1,arrayLength
|
||
! result=result+arrayResult(i)
|
||
! end do
|
||
! write(*,1) result
|
||
! ! 1 format(1X, "两矢量的点积结果为 ", F6.2)
|
||
! 1 format(1X, "作用于物体的功率为 ", F6.2)
|
||
! ! 数据输入
|
||
! ! 运算过程
|
||
! ! 结果输出
|
||
|
||
! end program name
|
||
|
||
! program name
|
||
! !
|
||
! ! 目的:
|
||
! ! 6.7.3 6-16 计算差积
|
||
! ! 6.7.3 6-17 计算绕轨道运行物体的速度
|
||
! !
|
||
! ! 修订记录:
|
||
! ! 日期 编程者 改动描述
|
||
! ! =================== ============= ======================
|
||
! ! 2021-04-15 01:14:04 Sola 编写源代码
|
||
! ! 2021-04-15 09:28:26 Sola 计算绕轨道运行物体的速度
|
||
! !
|
||
! ! 程序结构:
|
||
! !
|
||
! implicit none
|
||
! ! 数据字典
|
||
! ! 声明常量
|
||
! REAL, PARAMETER :: PI=3.14159265 ! PI值
|
||
! REAL, PARAMETER :: e=2.718281828459 ! 自然对数
|
||
! INTEGER, PARAMETER :: arrayLength=3 ! 数组基准长度
|
||
! ! 声明变量
|
||
! real, dimension(arrayLength) :: array1 ! 矢量1
|
||
! real, dimension(arrayLength) :: array2 ! 矢量2
|
||
! real, dimension(arrayLength) :: arrayResult ! 结果矢量
|
||
! real :: v ! 运行速度
|
||
! ! 变量初始化
|
||
! array1 = [5,-3,2]
|
||
! array2 = [2,3,4]
|
||
! arrayResult = array1((/2,3,1/))*array2((/3,1,2/))-array2((/2,3,1/))*array1((/3,1,2/))
|
||
! write(*,1) arrayResult
|
||
! 1 format(1X, "矢量V1与矢量V2的差积为:", 3(1X, F6.2))
|
||
! array1 = [300000,400000,50000]
|
||
! array2 = [-6E-3,2E-3,9E-4]
|
||
! arrayResult = array1((/2,3,1/))*array2((/3,1,2/))-array2((/2,3,1/))*array1((/3,1,2/))
|
||
! v=(arrayResult(1)**2+arrayResult(2)**2+arrayResult(3)**2)**1./3.
|
||
! write(*,2) v
|
||
! 2 format(1X, "绕轨道运行物体的速度为:", F11.2, " m/s")
|
||
! ! 数据输入
|
||
! ! 运算过程
|
||
! ! 结果输出
|
||
|
||
! end program name
|
||
|
||
! program name
|
||
! !
|
||
! ! 目的:
|
||
! ! 集合的交集与并集运算
|
||
! !
|
||
! ! 修订记录:
|
||
! ! 日期 编程者 改动描述
|
||
! ! =================== ============= ======================
|
||
! ! 2021-04-15 10:05:11 Sola 编写源代码
|
||
! !
|
||
! ! 程序结构:
|
||
! !
|
||
! implicit none
|
||
! ! 数据字典
|
||
! ! 声明常量
|
||
! REAL, PARAMETER :: PI=3.14159265 ! PI值
|
||
! REAL, PARAMETER :: e=2.718281828459 ! 自然对数
|
||
! INTEGER, PARAMETER :: arrayLength=20 ! 数组基准长度
|
||
! ! 声明变量
|
||
! character(len=8), dimension(arrayLength) :: aggregateA! 集合A
|
||
! character(len=8), dimension(arrayLength) :: aggregateB! 集合B
|
||
! character(len=8), dimension(arrayLength) :: aggregateC! 集合C,交集
|
||
! character(len=8), dimension(arrayLength) :: aggregateD! 集合D,并集
|
||
! integer :: i, j, k ! 循环参数
|
||
! integer :: errorLevel ! 错误代码
|
||
! character(len=40) :: temp ! 临时保存
|
||
! ! 变量初始化
|
||
! i=0
|
||
! j=0
|
||
! k=0
|
||
! aggregateA='NaN'
|
||
! aggregateB='NaN'
|
||
! open(unit=1, status='scratch')
|
||
! open(unit=2, status='scratch')
|
||
! write(1,*) ' 0,1,-3,5,-11,6,8,11,17,15'
|
||
! write(2,*) ' 0,-1,3,6,-6,16,5,12,21'
|
||
! rewind(unit=1)
|
||
! rewind(unit=2)
|
||
! read(1,*,iostat=errorLevel) aggregateA
|
||
! read(2,*,iostat=errorLevel) aggregateB
|
||
! do i=1,arrayLength
|
||
! if (aggregateA(i) /= 'NaN') then
|
||
! if (any(aggregateA(i)==aggregateB)) then
|
||
! k=k+1
|
||
! aggregateC(k)=aggregateA(i)
|
||
! end if
|
||
! else
|
||
! exit
|
||
! end if
|
||
! end do
|
||
! write(*,'(1X, "集合A与集合B的交集为:", 20(A3))') aggregateC(1:k)
|
||
! k=0
|
||
! do i=1,arrayLength
|
||
! if (aggregateA(i) /= 'NaN') then
|
||
! if (any(aggregateA(i) /= aggregateD)) then
|
||
! k=k+1
|
||
! aggregateD(k)=aggregateA(i)
|
||
! end if
|
||
! else
|
||
! exit
|
||
! end if
|
||
! end do
|
||
! do i=1,arrayLength
|
||
! if (aggregateB(i) /= 'NaN') then
|
||
! if (.not. any(aggregateB(i)==aggregateD(1:k))) then
|
||
! k=k+1
|
||
! aggregateD(k)=aggregateB(i)
|
||
! end if
|
||
! else
|
||
! exit
|
||
! end if
|
||
! end do
|
||
! write(*,'(1X, "集合A与集合B的并集为:", 20(A4))') aggregateD(1:k)
|
||
|
||
! ! 数据输入
|
||
! ! 运算过程
|
||
! ! 结果输出
|
||
|
||
! end program name
|
||
|
||
! program name
|
||
! !
|
||
! ! 目的:
|
||
! ! 计算三维空间中两点间距离
|
||
! !
|
||
! ! 修订记录:
|
||
! ! 日期 编程者 改动描述
|
||
! ! =================== ============= ======================
|
||
! ! 2021-04-15 11:08:39 Sola 编写源代码
|
||
! !
|
||
! ! 程序结构:
|
||
! !
|
||
! implicit none
|
||
! ! 数据字典
|
||
! ! 声明常量
|
||
! REAL, PARAMETER :: PI=3.14159265 ! PI值
|
||
! REAL, PARAMETER :: e=2.718281828459 ! 自然对数
|
||
! INTEGER, PARAMETER :: arrayLength=3 ! 数组基准长度
|
||
! ! 声明变量
|
||
! real, dimension(arrayLength) :: pointA ! 点A坐标
|
||
! real, dimension(arrayLength) :: pointB ! 点B坐标
|
||
! real, dimension(arrayLength) :: arrayTemp ! 临时数组
|
||
! real :: distance ! 两点间距离
|
||
! real :: temp ! 临时变量
|
||
! integer :: i ! 循环参数
|
||
! ! 变量初始化
|
||
! pointA=[-1,4,6]
|
||
! pointB=[1,5,-2]
|
||
! temp=0
|
||
! arrayTemp=(pointA-pointB)**2
|
||
! do i=1,arrayLength
|
||
! temp=temp+arrayTemp(i)
|
||
! end do
|
||
! distance=sqrt(temp)
|
||
! write(*,1) distance
|
||
! 1 format(1X, "两点间距离为:", F6.2)
|
||
! ! 数据输入
|
||
! ! 运算过程
|
||
! ! 结果输出
|
||
|
||
! end program name |