当前位置: 首页 > article >正文

简单的 Fortran 程序示例

下面是一个简单的 Fortran 程序示例,用于计算一组数字的平均值。程序结构清晰,非常适合初学者快速了解 Fortran 的基本概念。

示例程序

program average_calculator
  implicit none
  ! 声明变量
  integer :: n, i
  real :: sum, average
  real, dimension(:), allocatable :: numbers

  ! 获取数字的数量
  print *, '请输入数字的数量: '
  read *, n

  ! 分配存储空间给数组
  allocate(numbers(n))

  ! 初始化变量
  sum = 0.0

  ! 读取用户输入的数字
  print *, '请输入', n, '个数字:'
  do i = 1, n
     read *, numbers(i)
     sum = sum + numbers(i)
  end do

  ! 计算平均值
  average = sum / n

  ! 输出结果
  print *, '您输入的数字的平均值是: ', average

  ! 释放数组空间
  deallocate(numbers)

end program average_calculator

程序讲解

  1. program average_calculator:

    • 定义了一个程序,程序名为 average_calculator。在 Fortran 中,每个程序都必须以 program 开头,并以 end program 结束。
  2. implicit none:

    • 禁止 Fortran 的隐式变量声明,这样程序员必须明确声明每一个变量的类型。这是一个良好的编程习惯,有助于避免错误。
  3. 变量声明

    • integer :: n, i:声明两个整数变量,n 表示用户要输入的数字个数,i 用于循环。
    • real :: sum, average:声明两个实数变量,sum 用于保存输入数字的总和,average 用于保存计算的平均值。
    • real, dimension(:), allocatable :: numbers:声明一个可分配的实数数组 numbers,用于存储用户输入的数字。
  4. allocate(numbers(n)):

    • 动态分配数组 numbers 的存储空间,大小为用户输入的 n。在 Fortran 中,allocate 用于为可分配数组分配内存。
  5. do 循环

    • do i = 1, n 循环让用户输入 n 个数字,并逐步将数字加到 sum 中。
  6. average = sum / n:

    • 计算输入数字的平均值。
  7. print *read *:

    • print * 用于输出信息到屏幕,read * 用于从用户输入中读取数据。
  8. deallocate(numbers):

    • 释放之前用 allocate 动态分配的数组空间。

如何运行这个程序

  1. 编写代码

    • 将上述代码保存到一个文件中,文件名可以为 average_calculator.f90
  2. 编译程序

    • 在命令行中使用 Fortran 编译器(如 gfortran)进行编译:
      gfortran -o average_calculator average_calculator.f90
      
  3. 运行程序

    • 编译成功后,运行生成的可执行文件:
      ./average_calculator
      
  4. 输入数据

    • 程序会提示你输入数字的数量,然后输入多个数字,程序会计算并显示它们的平均值。

示例运行

请输入数字的数量:
5
请输入5个数字:
1.0
2.0
3.0
4.0
5.0
您输入的数字的平均值是:   3.000000

http://www.kler.cn/a/301029.html

相关文章:

  • C语言蓝桥杯:语言基础
  • c/c++面试100道
  • 工厂安灯系统在设备管理中的重要性
  • 怎么利用XML发送物流快递通知短信
  • 引领智能家居新风尚,WTN6040F门铃解决方案——让家的呼唤更动听
  • 公开数据库下载2-药敏性、综合类(TCGA、COSMIC、UCSC、GATK、cBioPortal)
  • 虚拟机安装VMware-tools详细教程
  • Telegram miniApp开发(三)
  • 从测绘资质角度看郑州市地理信息产业发展现状与前景
  • css flex与inline-flex的区别
  • Excel图片批量插入单元格排版处理插件【图片大师】
  • 【Linux 从基础到进阶】Ansible自动化运维工具使用
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • Vue 3 watchEffect:如何用 onInvalidate 优化副作用处理
  • Ubantu和Centos7一键shell更换镜像源与Linux系统Python3环境安装
  • IBM中国研发中心撤出:全球化变局下的中国IT产业深思与前瞻
  • 快速使用react 全局状态管理工具--redux
  • 基于深度学习的动态场景理解
  • HCIA--实验十四:二层链路聚合
  • ssrf漏洞利用+CTF实例