Sean002 发表于 2017-8-18 15:09:02

书上一个猜数字游戏代码总是报错,求大神帮忙看下。。

报错提示:
IVF2011
!select case 语句范例
    program test001
    implicit none
    !变量申明
    real::result
    real::plus,minus
    integer::guess
    integer::i
    !可执行段
    print*,'what is the number?'
    print*,'play the game?'
    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?'
      read(*,*)i
    enddo
    print*,'thanks for playing'
    end program test001

Sean002 发表于 2017-8-18 15:14:06

write(*,'(1x,a,i3,",",i3,a)')' 这语句是什么意思,,,,,真心不懂

kyra 发表于 2017-8-18 18:48:48

都是一些基本的书写错误。见注释
!select case 语句范例
    program test001
    implicit none
    !变量申明
    real::result
    real::plus,minus
    integer::guess
    integer::i
    !可执行段
    print*,'what is the number?'
    print*,'play the game?'
    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?'
      read(*,*)i
    enddo
    print*,'thanks for playing'
    end program test001

kyra 发表于 2017-8-18 18:50:03

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

Sean002 发表于 2017-8-21 10:17:28

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

谢谢:-) 已经可以运行了

Sean002 发表于 2017-8-21 10:20:52

kyra 发表于 2017-8-18 18:48
都是一些基本的书写错误。见注释
!select case 语句范例
    program test001


费心啦:-handshake
页: [1]
查看完整版本: 书上一个猜数字游戏代码总是报错,求大神帮忙看下。。