Fortran Coder

标题: 书上一个猜数字游戏代码总是报错,求大神帮忙看下。。 [打印本页]

作者: Sean002    时间: 2017-8-18 15:09
标题: 书上一个猜数字游戏代码总是报错,求大神帮忙看下。。
报错提示:
IVF2011
[Fortran] 纯文本查看 复制代码
!select case 语句范例
    program test001
    implicit none
    !变量申明
    real::result
    real::plus,minus
    integer::guess
    integer::i
    !可执行段
    print*,'what is the number?'
    print*,'play the game?[0-exit 1-play]'
    read(*,*)i
    !初始化
    do while(0/=i)
        call random_number(result)
        call random_number(plus)
        call random_number(minus)
        result=100.0*result+1.0
        plus=10.0*plus
        minus=20.0*minus
        write(*,'(1x,a,i3,",",i3,a)')'the number is in the range of[', && int(result)-int(minus),int(result)+int(plus)),']'
        print*,'your guess is?'
        !循环猜测
        do i=1,5
            read(*,*)guess
            select case(int(result))==guess)
            case(.true.)
                print*,'congratulation! you get the number!'
                write(*,'(1x,"and your score is:",i3)') 6-i
                exit
            case default
                write(*,*)'so sad,you almost get the number'
                if(5==i) then
                    print*,'sorry,you have lost your five times!'
                    write(*,'(1x,a,i3)'),"and the right number is:',int(result)
                else
                    print*,'your new guess is?'
                endif
            end select
        enddo
        print*,'continue the game?[0-exit 1-continue]'
        read(*,*)i
    enddo
    print*,'thanks for playing'
    end program test001

001.jpg (42.01 KB, 下载次数: 341)

生成解决方案时

生成解决方案时

作者: Sean002    时间: 2017-8-18 15:14
write(*,'(1x,a,i3,",",i3,a)')' 这语句是什么意思,,,,,真心不懂
作者: kyra    时间: 2017-8-18 18:48
都是一些基本的书写错误。见注释
[Fortran] 纯文本查看 复制代码
!select case 语句范例
    program test001
    implicit none
    !变量申明
    real::result
    real::plus,minus
    integer::guess
    integer::i
    !可执行段
    print*,'what is the number?'
    print*,'play the game?[0-exit 1-play]'
    read(*,*)i
    !初始化
    do while(0/=i)
        call random_number(result)
        call random_number(plus)
        call random_number(minus)
        result=100.0*result+1.0
        plus=10.0*plus
        minus=20.0*minus
        write(*,'(1x,a,i3,",",i3,a)')'the number is in the range of[', &
         int(result)-int(minus),int(result)+int(plus),']'!多一个括号
        print*,'your guess is?'
        !循环猜测
        do i=1,5
            read(*,*)guess
            select case(int(result)==guess)!多一个括号
            case(.true.)
                print*,'congratulation! you get the number!'
                write(*,'(1x,"and your score is:",i3)') 6-i
                exit
            case default
                write(*,*)'so sad,you almost get the number'
                if(5==i) then
                    print*,'sorry,you have lost your five times!'
                    write(*,'(1x,a,i3)'),"and the right number is:",int(result)!双引号
                else
                    print*,'your new guess is?'
                endif
            end select
        enddo
        print*,'continue the game?[0-exit 1-continue]'
        read(*,*)i
    enddo
    print*,'thanks for playing'
    end program test001

作者: kyra    时间: 2017-8-18 18:50
write(*,'(1x,a,i3,",",i3,a)')' 这语句是什么意思,,,,,真心不懂
这句意思是输出,用括号中的格式,即:
(1x,a,i3,",",i3,a)
其中
1x 表示先输出一个空格
a 表示输出一个字符串
i3 表示输出一个整数,占3格
"," 表示输出一个逗号

作者: Sean002    时间: 2017-8-21 10:17
kyra 发表于 2017-8-18 18:50
write(*,'(1x,a,i3,",",i3,a)')' 这语句是什么意思,,,,,真心不懂
这句意思是输出,用括号中的格式,即 ...

谢谢 已经可以运行了
作者: Sean002    时间: 2017-8-21 10:20
kyra 发表于 2017-8-18 18:48
都是一些基本的书写错误。见注释
[mw_shl_code=fortran,true]!select case 语句范例
    program test001

费心啦




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2