fortran编程

fortran编程,第1张

你的代码总体上没有错,只是a4=i-a1*1000-a2*1000-a1*10这句错了,还有不要用太多的IF嵌套,会晕死的,我略修改了你的代码,现在如下:

program main

implicit none

integer i,j

integer a1,a2,a3,a4,k

open(10,file='fx.txt',action='write')

j=0

 do i=1000,9999

 a1=i/1000

 a2=i/100-a1*10

 a3=i/10-a2*10-a1*100

 a4=i-a3*10-a2*100-a1*1000

if (mod(i,5)==0.and.a1+a4==a2+a3.and.a1/=a2.and.&

&a2/=a3.and.a3/=a4.and.a1/=a4.and.a1/=a3.and.a2/=a4) then

j=j+1

WRITE(10,*)j,i

endif

enddo

WRITE(10,*)"输出完成!"

WRITE(*,*)"输出完成!"

READ(*,*)

close(10)

end

计算结果如下:

         1        1065

         2        1245

         3        1425

         4        1605

***********省略一部分

        70        9720

        71        9810

        72        9865

希望对你有所帮助!

假设1角需要x个,2角y个,5角z个,那么满足要求的条件是,

      x+2y+5z= 10,

其中,0≤x≤10,0≤y≤5,0≤z≤2,且 x,y,z 均为正整数. 因此最直观的程序可以写成

program money_assignment

implicit none

integer  x, y, z, id

  write(*,*)

  write(*,*) ' 方法号   1角硬币个数    2角硬币个数   5角硬币个数'

  

  id = 0

  do z = 0, 2

    do y = 0, 5

      do x = 0, 10

        if ( (x+2*y+5*z) == 10 ) then

          id = id + 1

          write(*,999) id, x, y, z

        end if

      end do

    end do

  end do

999 format( 3x,i2,10x,i2, 2(13x,i2) )

end program money_assignment

题目要求用子程序,直接将program改成subroutine即可。

是编译没通过还是编译通过但程序不能执行还是能执行但输出结果不对?

大概看了,貌似没啥问题啊,除了最后两个输出语句中没用逗号分隔输出量。

write(*,*)"the classroom you want to find is:" , p

write(*,*)"and its populatiy level is:" , hbcd(p,day)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11768348.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存