365文库
登录
注册
1

2008 2009 fortran 江苏 计算机 二级 机试

37阅读 | 1收藏 | 16页 | 打印 | 举报 | 认领 | 下载提示 | 分享:
1
2008 2009 fortran 江苏 计算机 二级 机试第1页
2008 2009 fortran 江苏 计算机 二级 机试第2页
2008 2009 fortran 江苏 计算机 二级 机试第3页
2008 2009 fortran 江苏 计算机 二级 机试第4页
2008 2009 fortran 江苏 计算机 二级 机试第5页
2008 2009 fortran 江苏 计算机 二级 机试第6页
2008 2009 fortran 江苏 计算机 二级 机试第7页
2008 2009 fortran 江苏 计算机 二级 机试第8页
2008 2009 fortran 江苏 计算机 二级 机试第9页
2008 2009 fortran 江苏 计算机 二级 机试第10页
2008 2009 fortran 江苏 计算机 二级 机试第11页
2008 2009 fortran 江苏 计算机 二级 机试第12页
2008 2009 fortran 江苏 计算机 二级 机试第13页
2008 2009 fortran 江苏 计算机 二级 机试第14页
2008 2009 fortran 江苏 计算机 二级 机试第15页
2008 2009 fortran 江苏 计算机 二级 机试第16页
福利来袭,限时免费在线编辑
转Pdf
right
1/16
right
下载我编辑的
下载原始文档
收藏 收藏
搜索
下载二维码
App功能展示
海量免费资源 海量免费资源
文档在线修改 文档在线修改
图片转文字 图片转文字
限时免广告 限时免广告
多端同步存储 多端同步存储
格式轻松转换 格式轻松转换
用户头像
奮不顧身 上传于:2024-06-28
江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2008年春) 二级 FORTRAN90 语言 (试卷代号F01) (本试卷完成时间 70分钟) 一、改错题(20分) 【题目】找到所有符合以下条件的4位正整数:⑴该数除以其后两位数字组成的数之商是完全平方数;⑵该平方数恰好等于前两位数字组成的数加1之平方;⑶该数本身不是完全平方数。例如1805÷5=(18+1)2,1805不是完全平方数,1805即为所需寻找的数之一。遍历所有四位整数,无参过程resolve将4位数分解成左右两个两位数。含有错误的源程序如下: LOGICAL FUNCTION check(n) RESULT(log) IMPLICIT NONE LOGICAL::log INTEGER::n,left,right,tmp1,tmp2 REAL::temp,eps=1E-15 CALL resolve tmp1=n/right; tmp2=sqrt(n+eps) log=.FALSE. temp=SQRT(tmp1+eps) IF(INT(temp)**2==tmp1 .OR. tmp2**2/=n)THEN IF((left+1)**2==tmp1)THEN log=.TRUE. ENDIF ENDIF CONTAINS SUBROUTINE resolve right=MOD(n,100) left=(n-right)/10 END SUBROUTINE resolve END FUNCTION check ! PROGRAM strange IMPLICIT NONE INTEGER::i LOGICAL::check OPEN(1,FILE='myf1.out') DO i=1001,9999 IF(MOD(i,100)/=0)THEN IF(check(i))THEN WRITE(1,'(I5)')I; WRITE(*,'(I5)')i ENDIF ENDIF ENDDO END PROGRAM strange 【要求】1. 必须将上述源程序录入到文件 MYF1.F90中,然后根据题目的要求以及程序中前后语句 的逻辑关系改正程序中的错误。 2. 改错时可增加或删除说明语句,调换语句顺序,不允许增加或删除任何可执行语句。 3. 改正后的程序和运行结果分别用MYF1.F90和MYF1.OUT为文件名存入考试盘(盘符为T:)。 【注意】本题完成后必须将MYF1.F90、MYF1.OUT拷贝到T:的根目录下供阅卷用。 二、编程题(20分) 【题目】函数f(x)的展开式如下: 将上式右端编写成外部过程。当级数通项的绝对值小于eps=1E-10时停止计算。在同一行上,x用F7.4,计算所得的 用F10.6格式输出。计算所用的数据存放在文件MYF2.DAT中,从该文件输入的x的值分别为: 0.5887 0.9711 1.4231 1.5456 -1.4231 -0.9711 -0.5887 【要求】1. 源程序必须存放在文件MYF2.F90中。 2. 建立数据文件MYF2.DAT,所需输入数据即从该文件中读出。 3. 程序运行结果存于文件MYF2.OUT中。 4. 数据文件的打开、使用、关闭均要求采用FORTRAN语言文件管理语句实现。 【注意】本题完成后必须将MYF2.F90、MYF2.DAT、MYF2.OUT等文件拷贝到考试盘(盘符为T:)的根目录下供阅卷用。 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2008年春) 二级 FORTRAN90 语言 (试卷代号F02) (本试卷完成时间 70分钟) 一、改错题(20分) 【题目】若p为素数,2p-1也是素数,则称2p-1为Mersenne数。除少数几个Mersenne数可以在计算机整型数范围内表示外,它们都比较大。可以模拟手工求乘幂的方法求较大的Mersenne数。子程序Power(……)模拟手工求2的乘幂。本程序求p=19,31,61时的Mersenne数。含有错误的源程序如下: SUBROUTINE Power(m,last,term,length) IMPLICIT NONE INTEGER::m,last,length,i,j,k INTEGER(2),DIMENSION(1:last)::term term=0; term(last)=1 doi: DO i=1,m DO j=1,last IF(term(j)/=0)THEN DO k=last,j,-1 term(k)=term(k)*2 ENDDO EXIT ENDIF ENDDO DO k=last,j-1,-1 term(k-1)=term(k-1)+term(k)/10 term(k)= term(k)-(10* term(k))/10 ENDDO ENDDO doi DO k=1,last IF(term(k)/=0)THEN length=k; CYCLE ENDIF ENDDO END SUBROUTINE Power ! PROGRAM Mersenne_Number IMPLICIT NONE INTEGER::m,n,k,i INTEGER::max=20 INTEGER(2),DIMENSION(3)::p=(/19,31,61/) INTEGER(2),DIMENSION(1:max)::term OPEN(1,FILE='myf1.out') DO i=1,3 m=p(i); CALL Power(m,max,term,n) term(max)=term(max)-1 WRITE(*,'("p=",I3," Mersenne=",20I1)')p(i),(term(k),k=n,max) WRITE(1,'("p=",I3," Mersenne=",20I1)')p(i),(term(k),k=n,max) ENDDO END PROGRAM Mersenne_Number 【要求】1. 必须将上述源程序录入到文件 MYF1.F90中,然后根据题目的要求以及程序中前后语句 的逻辑关系改正程序中的错误。 2. 改错时可增加或删除说明语句,调换语句顺序,不允许增加或删除任何可执行语句。 3. 改正后的程序和运行结果分别用MYF1.F90和MYF1.OUT为文件名存入考试盘(盘符为T:)。 【注意】本题完成后必须将MYF1.F90、MYF1.OUT拷贝到T:的根目录下供阅卷用。 二、编程题(20分) 【题目】函数f(x)的展开式如下: 将上式右端编写成外部过程。当级数通项的绝对值小于eps=1E-10时停止计算。在同一行上,x用F7.4,计算所得的 用F10.6格式输出。计算所用的数据存放在文件MYF2.DAT中,输入的x的值分别为: 0.8887 1.9711 2.4231 3.5456 -2.4231 -1.9711 -0.8887 【要求】1. 源程序必须存放在文件MYF2.F90中。 2. 建立数据文件MYF2.DAT,所需输入数据即从该文件中读出。 3. 程序运行结果存于文件MYF2.OUT中。 4. 数据文件的打开、使用、关闭均要求采用FORTRAN语言文件管理语句实现。 【注意】本题完成后必须将MYF2.F90、MYF2.DAT、MYF2.OUT等文件拷贝到考试盘(盘符为T:)的根目录下供阅卷用。 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2008年春) 二级 FORTRAN90 语言 (试卷代号F03) (本试卷完成时间 70分钟) 一、改错题(20分) 【题目】由于FORTRAN90中没有八进制类型,因此无法将两个八进制正整数直接相加。可以自定义运算符.$.实现两个八进制正整数直接相加,方法是先(用separate(a))将八进制正整数分离成单个数字,然后从低位到高位按八进制规则(逢8进1)进行加运算。八进制表示形式上和十进制类似。程序中函数oct_plus(……)实现运算符.$.的功能。八进制正整数不超过十位。含有错误的源程序如下: PROGRAM main IMPLICIT NONE INTERFACE OPERATOR(.$.) FUNCTION oct_plus(a,b) RESULT(c) INTEGER::a,b INTEGER::c END FUNCTION oct_plus END INTERFACE INTEGER::octa,octb,octc OPEN(1,FILE='myf1.out') octa=1357; octb=2446; octc=octa.$.octb WRITE(1,*)octa,octb,octc octa=1234567; octb=7654321; octc=octa.$.octb+1 WRITE(1,*)octa,octb,octc END PROGRAM main ! FUNCTION oct_plus(a,b) RESULT(c) INTEGER,DIMENSION(1:10)::work1,work2,work3 INTEGER::a,b,c,i,k,temp,octcarry octcarry=0; work1=separate(a); work2=separate(b) DO i=10,1,-1 temp=work1(i)+work2(i)+octcarry work3(i)=MOD(temp,10); octcarry=temp/10 ENDDO DO i=1,10 IF(work3(i)/=0)THEN k=i; EXIT ENDIF ENDDO c=0 DO i=k,10 c=c*10+work3(i) ENDDO CONTAINS FUNCTION separate(a) RESULT(work) INTEGER::a,k,tmp,work(10) work=0; tmp=a; k=10 DO WHILE(tmp/=0) work(k)=MOD(tmp,8); tmp=tmp/8; k=k-1 ENDDO END FUNCTION separate END FUNCTION oct_plus 【要求】1.必须将上述源程序录入到文件 MYF1.F90中,然后根据题目的要求以及程序中前后语句 的逻辑关系改正程序中的错误。 2. 改错时可增加或删除说明语句,调换语句顺序,不允许增加或删除任何可执行语句。 3. 改正后的程序和运行结果分别用MYF1.F90和MYF1.OUT为文件名存入考试盘(盘符为T:)。 【注意】本题完成后必须将MYF1.F90、MYF1.OUT拷贝到T:盘的根目录下供阅卷用。 二、编程题(20分) 【题目】函数f(x)的展开式如下: x≠0,±1,±2,…,±n…… 事实上f(x)=near(x),其中near(x)表示x和最接近x的整数之间的距离。当级数通项的绝对值小于eps=1E-10时停止计算。将上式右端编写成外部过程。在同一行上,x用F8.4,计算所得的 和用于检验的near (x)用F7.4格式输出。计算所用的数据存放在文件MYF2.DAT中,从该文件输入的x的值分别为: 23.1235 4.5672 5.6791 9.5566 -3.4598 -5.2314 -18.9982 提示:ANINT(x)为最接近x的整数函数(类型为实型)。f(x)= near (x)=ABS(x-ANINT(x)) 【要求】1. 源程序必须存放在文件MYF2.F90中。 2. 建立数据文件MYF2.DAT,所需输入数据即从该文件中读出。 3. 程序运行结果存于文件MYF2.OUT中。 4. 数据文件的打开、使用、关闭均要求采用FORTRAN语言文件管理语句实现。 【注意】本题完成后必须将MYF2.F90、MYF2.DAT、MYF2.OUT等文件拷贝到考试盘(盘符为T:)的根目录下供阅卷用。 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2008年秋) 二级 FORTRAN90 语言 (试卷代号F01) (本试卷完成时间 70分钟) 一、改错题(20分) 【题目】在所有的7位奇整数中找出符合下列要求的数:⑴该数是素数;⑵每次删除末尾一位数后生成的数仍是素数,直到最后的一位数还是素数。例如2339933,每次删除末位数形成的数列:233993、23399、2339、233、23、2中每个数都是素数。prime(n)判断奇整数是否素数。含有错误的源程序如下: FUNCTION get_next(n) RESULT(m) IMPLICIT NONE INTEGER::n,m,last last=MOD(n,10); m=(n-last)/10 END FUNCTION get_next ! PROGRAM main INTEGER::k,n,get_next, first=1000001,last=9999999 LOGICAL::prime OPEN(1,FILE='myf1.out') DO n=first,last,2 k=n in: DO WHILE(k>0)
tj