【发布时间】:2019-04-21 22:41:23
【问题描述】:
所以,我的作业是做莫尔斯拉丁字母翻译。到目前为止,我已经设法将莫尔斯语编码为拉丁语翻译器,但我无法让它以其他方式工作。 代码如下:
#include<stdio.h>
#define MAX 1000
int main(){
int i, j;
char alfabet[26]={'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
char* morse[27]={".-", "-..", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
char tekst[MAX];
printf("Podaj tekst pisany wielkimi literami: ");
scanf("%[^\n]c", tekst);
for(i=0;i<27;i++){
for(j=0;j<30;j++){
if(tekst[i]==alfabet[j]){
printf("%s ", morse[j]);
}
}
}
}
注意:我的 C 编程水平非常基础。我知道这可能是实现所需结果的最差方法,而且代码本身远非漂亮或有效,尤其是 for 循环。这不是我现在担心的问题,我会在以后处理它。
到目前为止,我最大的问题是相当琐碎的;程序在循环完成最后一次迭代后立即停止。无法打印任何内容,也不会执行任何命令。我不知道为什么。 当它修复后,我最大的问题将是翻译本身。如何扫描莫尔斯电码字符串(例如“- . -..- -”,翻译为“TEXT”)并将其放入数组中?我想我不能像处理多个字符那样使用 tekst[MAX] 数组?
注意2:尽管任何想法都会有所帮助,但并不是所有的想法我都能理解或实施,因为我对 C 的了解很少。提前谢谢你
【问题讨论】:
-
printf通常不会打印,除非有\n字符,请尝试将其添加到程序的末尾。 -
"%[^\n]c"中的c是什么意思?请注意for(j=0;j<30;j++)会破坏数组char alfabet[26],所以它应该是for(j=0;j<26;j++) -
不知道,只是发现它是一种扫描直到进入的方式,删除“c”并且程序运行相同。不包括它重要吗?谢谢你,将 for 循环更改为 j
-
注意:B的代码应该是
-...,而不是-..(即D) -
关于从摩尔斯电码翻译的问题,可以使用类似的代码,但使用
strcmp将代码与表格进行比较。
标签: c