你的代码总体上没有错,只是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_assignmentimplicit 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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)