Fortran练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
● 1.输出a,b,c的值,其中a=28,b=34,c=60.5
integer a,b,c定义整型integer
a=28;b=34;c=60.5‘=’为赋值符号,把右赋给左
print*,'a=',a,'b=',b,'c=',c输出格式:print*,’文字内容’,该输出变量
end结束必须以end作结
● 2.输出x和y的值
real x,y定义实型real
print*,'输入x和y:'
read*,x,y读入格式:read*,读入变量
print*,x,y
end
● 3.求三个数的和及平均值
real sum,ave
read*,a,b,c
sum=a+b+c
ave=sum/3
print*,'和为',sum
print*,'平均值为',ave
end
● 4.现有长1500m宽1000m的地块要拍卖建造住宅小区,地块中央有一半径为100m的
圆形公共绿地不属于拍卖范围,每平方米地价为0.5万元,编写程序计算该地块拍卖总价,并输出。
real area,money
read*,a,b,r
area=a*b-3.14*r**2a b为a**b
money=area*0.5
print*,'总价为',money,'万元'
print*,'地长为',a
print*,'地宽为',b
print*,'绿地半径为',r
end
● 5.求三个数中的最大数与最小数
real max_x,min_x
read*,a,b,c
min_x=a
if(b end if if后必有end if作结 if(c min_x=c end if max_x=a if(b>max_x)then max_x=b end if if(c>max_x)then max_x=c end if print*,'最大值:',max_x print*,'最小值:',min_x end ● 6.输入学生成绩,评价成绩的优、良、中、及格和不及格,并输出 read*,s if(s<60)then print*,'该生成绩为不及格' else if(s<70)then else if表示另一个if,但是条件已将if的条件去除print*,'该生成绩为及格' else if(s<80)then print*,'该生成绩为中' else if(s<90)then print*,'该生成绩为良' else else表示在if,else if所包含的条件以外的情况时print*,'该生成绩为优' end if end ●7.求2到100之内的素数,并输出 integer n,w,i n=3 do while(n<=100)do while循环表示在满足括号内条件时运行的循环w=0;i=2 do while(i<=(n-1).and.w==0).and.表示逻辑条件和,两个前后两个条件同时满足if(mod(n,i)==0)then mod(a,b)函数表示求余,a÷b=c……d的d为结果w=1 else i=i+1 end if end do do,do while后跟end do作结 if(w==0)then‘==’表示相等 print*,n,'不是素数' else print*,n,'是素数' end if n=n+1 end do end ●8.判断一个整数N能否被3和5整除 read*,n if(mod(n,3)==0.and.mod(n,5)==0)then print*,n,'能被3和5整除' else print*,n,'不能被3和5整除' end if end ●9.求s=∑n!(20) integer::n,i,k,sum=0在integer/real等后跟::可在后直接对变量赋值do n=1,20do i=j,k,l,j表示i的初值,k表示末值,l表示间隔 (为1可省略)循环次数即为(k-j)/l+1 k=1 do i=1,n k=k*i end do sum=sum+k end do print*,'前20个自然数的阶乘和为:',sum end ●10.求1-1/2+1/3-1/4+…+1/99-1/100 real s,m s=0 m=1 do while(m<=100) s=s+(-1)**(m+1)/m m=m+1 end do print*,s end ●11.判断2000-2500年中每一年是否为闰年,并打印判断结果、闰年的条件是:年份能 被4整除,但不能被100整除,或者能被100整除又能被400整除 integer s s=2000 do while(s<=2500) if(MOD(s,100)==0.and.MOD(s,400)==0)then print*,s,'是闰年' else if(mod(s,4)==0.and.mod(s,100)/=0)then print*,s,'是闰年' else print*,s,'不是闰年' end if s=s+1 end do end ●12.输入一个班30名学生的成绩,求平均分、最高分、不及格人数和不及格率dimension G(3)定义数组dimension G(n)n为数组内元素个数