关键词不能为空

当前您在: 大学查询网 > 大学 >

什么是理工大学西安交通大学fortran习题

作者:高考题库网
来源:https://bjmy2z.cn/daxue
2020-12-08 15:10
tags:

-

2020年12月8日发(作者:钟灵)


1

二维数组的输入与输出


program main


implicit none


integer i,j


integer A(2,2)


!

若为


data((A(j,i),i=1,2),j=1,2)/1,2,3,4/


print*,A


end


!

结果为

1

3

2

4


实际为

A(1,1)=1

A(1,2)=2

A(2,1)=3

A(2,2)=4



!

若为


data((A(i,j),i=1,2),j=1,2)/1,2,3,4/


print*,A


end


!

结果为

1

2

3

4


实际为

A(1,1)=1

A(2,1)=2

A(1,2)=3

A(2,2)=4




program main


implicit none


integer i,j


integer A(2,2)


data((A(i,j),i=1,2),j=1,2)/1,2,3,4/


write(*,


end


!

结果为

1

2


3

4


翻卡片



!

用数组编写下面的题目:


假 定有一叠卡片,卡片号为

1

52

,并且所有卡片 的正面朝上。从卡片号

2

开始,把凡是偶数


的卡片都翻< /p>


成正面朝下。再从

3

号卡片开始,把凡是 卡片号为

3

的倍数的卡片都翻一个面(即把正面朝上


的翻 成正面


朝下,正面朝下的翻成正面朝上)

。下一步从< /p>

4

号卡片开始,

把凡是卡片号为

4

的 倍数的卡片都


翻一个面,


依次类推,直到从< /p>

52

号卡片开始,把凡是卡号为

52

的倍数的卡片翻 一个面。写出一个程序,


来测定全过


程完成后,哪些卡片的面朝上,共有几张。


答 案:正面朝上的卡片是第

1

4

9

16

25

36

49

张,共

7

张。



program main


implicit none


integer s(52)


integer i,j


s=0


do i=2,52


j=i



do while(j<=52)


s(j)=s(j)+1


j=j+i


end do



end do



do i=1,52


if(mod(s(i),2)==0)then


write(*,*)i


end if


end do



end program main



//

C

语言写


#include


int main()


{


int s[52];


int i,j;


for(i=0;i<52;i++)s[i]=0;



for(i=1;i<=51;i++)


{


for(j=i;j<=51;j+=i+1)//

也可以写作

j=j+i+1,

不能写作

j==j+i+1


{


s[j]=s[j]+1;



}


}






斐波拉契


!

使用递归时

result()

不能与函数名相同



PROGRAM MAIN


IMPLICIT NONE


INTEGER n,i,sum


read*,n


if(n<0)THEN


PRINT*,

出错



END IF


write(*,*)'f(n)=',f(n)


do i=1,n


sum=sum+f(n)


end do


write(*,*)'sum=',sum



contains



recursive function f(n) result(g)


integer g,n


if(n==0)then


g=0


else if(n==.n==2)then


g=1


else


g=f(n-1)+f(n-2)


end if


end function



End program





分解质因数


!

分解质因数


program main


implicit none


integer a,c,i,b


print*,

请输入一个大于二的整数


read*,a


print*,'

则它的所有质因子为

'



do while(a/=1)


i=1


b=1



do while(b/=0)


i=i+1


b=mod(a,i)


c=i


end do



a=a/c


print*,c



end do



end program




哥德巴赫猜想


!< /p>

屏幕上不能显示

500

行,所以不能将结果完全显示,需要将结果输 入文件


FUNCTION f(i)


IMPLICIT NONE


INTEGER i,f,h


f=0


if(i>1)then


do h=2,i-1


if(mod(i,h)==0)then


f=f+1


endif


end do


endif


end function



program main


implicit none


integer(4) i,j,n,f


integer s



do n=4,600,2


s=0


j=0



do i=1,n/2-1


j=n-i


if(f(i)==.f(j)==0)then


s=s+1


end if



end do



if(s==0)then


print*,n,'

不满足猜想

'


else


print*,n,s


end if


end do



end program





黄金值法解方程


!将中值法中取中点的值改为取黄金点的值,理论上可以提高效率


module golden_section


implicit none


real a,b,c


contains



subroutine sub1(a,b,c)


real a,b,c,yc


c=(a*0.618+b)/1.618


yc=f(c)



do while(abs(yc)>0.00001)



if(yc*f(a)<0)then


b=c


else


a=c


end if



c=(a*0.618+b)/1.618



yc=f(c)



end do



end subroutine



function f(x)


real f,x


f=x*x-4.0*x+3



end function



end module golden_section





program main


use golden_section


implicit none


real e


print*,

请输 入解的下界

a


read*,a


print*,

请输入解的上界

b


read*,b



e=f(a)*f(b)


!

用一个循环来判断输入值是否合适,或者就是解


if(f(a)==0)then


print*,a


else if(f(b)==0)then


print*,b


else


do while(e>0)


print*,

请重新输入下界

a


read*,a


print*,

请重新输入 解的下界

b


read*,b


end do





call sub1(a,b,c)


end if



print*,c



end




回文输出


program main


implicit none


integer i,j


integer a(5),b(5)


data a /1,2,8,2,10/


data b /2,3,4,5,6/


do i=1,5


do j=1,5


b(j)=b(j)-1


if(b(j)<1)then


b(j)=b(j)+5


end if


end do



print*,a(b(1:5))!

实践证明这是正确的输出方法


end do


end


! fo rall

语句中不能使用

if

语句

,

但可以用

where

语句,注意()中的内容变化

< p>
但本题从逻辑上就应该先做完

forall,

再做

w here

,故不必嵌套





program main


implicit none


integer i,j


integer a(6),b(6)


DA

TA a /1,4,9,16,25,36/


data b /2,3,4,5,6,7/


do i=1,6



forall(j=1:6)


b(j)=b(j)-1


end forall



where(b==0)

!

可以写为

where(b(:)==0)


b(:)=b(:)+6


end where


b=b+6


end where



< p>
print*,a(b(1:6))!

实践证明这是正确的输出方法


end do




回文数据若干相邻想和并比较大小


!1.

圆盘上有如图

1

1

)所示的

20

个数。请找出哪四个相邻的数之和为最大。请指出他们的位


置 和数值。如果是

1

2

)图,又是哪四个相邻的数 ?



program main


implicit none


integer a(20),b(23),c(20)


integer i,j,d,e



data a /20,21,8,4,13,6,10,1 5,2,17,3,19,7,16,8,11,14,9,12,5/


data b /1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,2 0,1,2,3/



do i=1,20

< br>c(i)=a(b(i))+a(b(i+1))+a(b(i+2))+a(b(i+3))


end do



e=1


do i=1,19


if(c(1)


d=c(1)


c(1)=c(i+1)


c(i+1)=d


e=i+1


end if


end do


print*,c(1)


write(*,*)(a(b(i)),i=e,e+3)


end


//

C

语言写,注意

C

的数组从

0

开 始计数,所有的

i

变量减一;嵌套数组仍然有效


#include


int main()


{


int a[20]={20,21,8 ,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12,5};


int b[23]={0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16,17,18,19,0,1,2};


int c[20];


int i,j,d,e;


for(i=0;i<=18;i++)


{


c[i]=a[b[i]]+a[b[i+1]]+a[b[i+2]]+a[b[i+3]];



}


e=0;


for(i=0;i<=18;i++)


{

if(c[0]




{

d=c[0];


c[0]=c[i+1];


c[i+1]=d;


e=i+1;


}


}



printf(

和最大的是

%d,

这四个数是:

n


for(i=e;i<=e+3;i++)


printf(


return 0;


}


-


-


-


-


-


-


-


-



本文更新与2020-12-08 15:10,由作者提供,不代表本网站立场,转载请注明出处:https://bjmy2z.cn/daxue/21087.html

西安交通大学fortran习题的相关文章