fortran错误,forrt1: server <170>: program Exception - stack overflow

调试Fortran程序,出现错误:forrt1: server <170>: program Exception -stack overflow

如图:


原因:堆栈空间不足,溢出。分配的数组空间太大时可能出现的错误。

一种解决方法是使用动态数组。先定义动态数组,再分配空间,然后使用数组,最后释放空间。

示例:主程序中调用cacarray1就会出错,而调用cacarray2就不会出现这样的错误,因该程序中使用动态数组。

     program main

     parameter(nd=800000)

     dimension narray(nd)

     call cacarray1(narray,nd)

c     call cacarray2(narray,nd)

     write(*,*) (narray(k),k=1,5)

     end

     subroutine cacarray1(narray,nd)

     dimension narray(nd),narray2(nd)

     do k=1,10

         narray(k) = k

      enddo

     return

     end

     subroutine cacarray2(narray,nd)

     dimension narray(nd)

     integer,allocatable ::narray2(:)

     allocate(narray2(nd))

     do k=1,10

         narray(k) = k

         narray2(k)= k

     enddo

     deallocate(narray2)

     return

     end


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
### 回答1: 以下是用Fortran语言编写的程序,实现当n为偶数时输出n+1,当n为奇数时输出2n的功能: ``` program even_odd implicit none integer :: n, result write(*,*) '请输入一个整数n:' read(*,*) n if (mod(n, 2) == 0) then result = n + 1 write(*,*) 'n为偶数,输出n+1:', result else result = 2 * n write(*,*) 'n为奇数,输出2n:', result end if end program even_odd ``` 程序首先要求用户输入一个整数n,然后通过使用mod(n, 2)函数来判断n是偶数还是奇数。如果n是偶数,则将n加1并将结果输出;如果n是奇数,则将2n作为结果输出。在程序中,使用write(*,*)语句将结果输出到屏幕上。 ### 回答2: 使用Fortran语言编写程序可以实现以下逻辑: ```fortran program check_number implicit none integer :: n, result ! 从用户输入获取一个整数 print*, "请输入一个整数:" read*, n ! 根据n的奇偶性进行判断并输出结果 if(mod(n, 2) == 0) then result = n + 1 print*, "输入的整数为偶数,输出为:", result else result = 2 * n print*, "输入的整数为奇数,输出为:", result end if end program check_number ``` 这个程序首先向用户要求输入一个整数n,然后根据n的奇偶性通过使用mod函数进行判断。如果n是偶数,则将n加1并输出结果;如果n是奇数,则将n乘以2并输出结果。 ### 回答3: Fortran是一种高级编程语言,可以用来编写各种应用程序。下面是一个用Fortran编写的程序,根据给定的整数n的奇偶性,输出对应的结果。 ```fortran program check_number implicit none integer :: n, result ! 从用户输入获取整数n write(*,*) '请输入一个整数n:' read(*,*) n ! 判断n的奇偶性并计算结果 if (mod(n, 2) == 0) then result = n + 1 else result = 2 * n end if ! 输出结果 write(*,*) '根据给定的数', n, '的奇偶性,计算得到的结果为:', result end program check_number ``` 以上程序首先会提示用户输入一个整数n,并读取这个输入值。接下来,程序使用Fortran的mod函数来判断n的奇偶性,如果n除以2的余数为0,则说明n是偶数,将n加1作为计算结果;否则,说明n是奇数,将2乘以n作为计算结果。最后,程序输出根据给定的数n的奇偶性所计算得到的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值