! 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