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

How to convert a sentence to morse code using if statements

这是我的程序示例。我包括了字母表中所有字母的 else if 语句。此外,continue 之前的 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'd 项必须是表达式 (x == a .OR. y == c) 而不是 (x == a .OR. c)。您需要使用 END IF 来终止 IF-ELSE-THEN 块。并且您的程序必须以 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