如何使用 if 语句将句子转换为莫尔斯电码



这是我的程序示例。我包括字母表中所有字母的 else if 语句。继续之前的 10 也在第 4 列和第 5 列。

我得到的第一个错误是说Invalid radix specifier "or" at (2) for typeless constant at (1),2 是 OR 中的 O,1 是"A"、"B"等中的第一个引号。

第二个

错误是说同样的事情,但 1 在"a"、"b"等的第二个引号处。

我的第三个也是最后一个错误是说Invalid form for ELSE IF statement at (^),胡萝卜在每个陈述的末尾。

假设这些与我只是对If,ELSE IF和DO使用了错误的语法有关;但是搜索互联网并没有帮助我找到正确的语法。

  program p1
  integer j
  integer sentenceSize
  character sentence*72
  print *, "Enter the size of the sentence you are converting: "
  read *, sentenceSize
  print *, "Enter the sentence you would like to convert: "
  read(*,'(A)') sentence
  DO 10, sentenceSize
  IF (sentence(i:i) == "A" OR "a")
  print *, ".-"
  ELSE IF (sentence(i:i) == "B" OR "b")
  print *, "-..."
  ELSE IF (sentence(i:i) == 'C' OR 'c')
  print *, "-.-."
  ELSE IF (sentence(i:i) == "D" OR "d")
  print *, "-.."
  print *, " "
10   continue

您的程序中存在许多语法错误。您的 DO 循环缺少 i=1。您需要将 THEN 放在 IF 和 ELSE IF 语句之后。逻辑 OR 是 .OR。每个 OR'd 项必须是表达式 (x == a .OR. y == c) 而不是 (x == a .OR. c)。您需要终止 IF-ELSE-THEN 块 with 和 END IF。并且您的程序必须以 END 结尾。

  program p1
  integer j
  integer sentenceSize
  character sentence*72
  print *, "Enter the size of the sentence you are converting: "
  read *, sentenceSize
  print *, "Enter the sentence you would like to convert: "
  read(*,'(A)') sentence
  DO 10 i=1, sentenceSize
  IF (sentence(i:i) == "A" .OR. sentence(i:i) == "a") THEN
  print *, ".-"
  ELSE IF (sentence(i:i) == "B" .OR. sentence(i:i) == "b") THEN
  print *, "-..."
  ELSE IF (sentence(i:i) == 'C' .OR. sentence(i:i) == 'c') THEN
  print *, "-.-."
  ELSE IF (sentence(i:i) == "D" .OR. sentence(i:i) == "d") THEN
  print *, "-.."
  END IF
  print *, " "
10   continue
END

最新更新