请教fortran问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 01:39:46
第一题
character *(*)name
name='apple'
L=len(name)
Do 10 I=1,L
10 name(I:I)=char(Ichar(name(I:I)+I)
print*,name
end
请教运行结果brspj怎么来的?

第二题
EXTERNAL LENGTH
CHARACTER NAME*2
READ(*,*) NAME,SCORE
CALL DRAN(NAME,SCORE,LENGTH)
END
SUBROUTINE DRAN(N,S,F)
CHARACTER N*2,LINE*20
INTEGER F
M=F(S)
DO 10 I=1,M
LINE(I:I)='*'
10 CONTINUE
WRITE(*,100)N,LINE
99 FORMAT (2X,A2,A6)
END
FUNCTION LENGTH
LENGTH=INT(X)/100
END
输入‘D',356.8,输出
D * * *? 怎么做的?

第三题
执行 WRITE(*,'(1X,2I4)')(J,J=1,6)后,生成的记录数是?
3 怎么做的?

先说一下,楼主这些程序都有问题。
===============================
第一题解释
程序的关键在这里
10 name(I:I)=char(Ichar(name(I:I))+I)
这里用了两个函数,ichar()是把字符转为ASCII数字,char()是把数字转为字符,因此这个语句就是把原字符转为ASCII数值后加上循环的序号然后再转为字符,第一个字符加1,第二个字符加2,依此类推,分别得到按字母顺序的后面的字符,因此a+1=b, p+2=r, p+3=s, l+4=p, e+5=j
===============================
第二题
函数不全,M=F(S),但是F函数没有声明
FUNCTION LENGTH,但是函数没有在程序中使用,定义中也没有写出参数,猜测可能是LENGTH(X)
无法回答
===============================
第三题
WRITE(*,'(1X,2I4)')(J,J=1,6)
输出了1~6的6个整数,但是格式中只写出了2个整数,因此会分3次输出,每次一行,相当于一个记录吧。

建议看来看《for95程序设计》的基本语法规范再来问。