**这是家庭作业
我有一个项目正在进行(拼字游戏),我有几个问题。在拼字游戏中,某些字母只能出现一定次数。例如:E 出现了 12 次,A 出现了 9 次,等等。我的第一个问题是如何在不创建巨大数组的情况下实现这一点。所以而不是
char arr['A' , 'A' , 'A'.....]
我该如何输入
char arr['A' , 'B' , 'C']
(将每个字母键入一次,然后以某种方式为每个字母设置一个频率。
我的第二个问题是如何为该程序创建一个分数计数器。在拼字游戏中,有些字母具有分数值。我认为一种方法是循环大量 switch 语句,但我想知道是否有更有效的方法来做到这一点。
我不需要为我编写任何代码,因为这会影响学习编程的整体意义,但我会感激示例,甚至是创建字母频率和分数计算器的更有效方法的解释。我认为,如果我尽早弄清楚如何有效地完成这些事情,这会对我将来有所帮助。
感谢您的帮助!
此代码必须用 C 编写
最佳答案
好吧,如果您考虑使用 ascii 值,第一个答案似乎很简单。
如果我说使用 ASCII 值作为数组的索引怎么办?有什么想法吗?
等等,我会再提示一下。 A
= 65
...这意味着您可以使用数组中的索引值 65 轻松映射到 A
。
现在你可能想知道为此你需要一个大数组吗?没有。只需适当使用偏移即可。所以现在你认为 65
->A
->0
然后 66
->B
->1
。
第二个问题:
是的,你也可以在这里使用数组以同样的方式。如果您需要存储更多数据而不仅仅是分数,则可以使用结构数组。这将使您可以将其他数据与分数一起存储。
<小时/>有什么可以帮助你的吗?
您只需在正确位置增加频率数组即可存储字符出现的频率。
设计代码,以便您了解分数的存储位置以及处理方式。尝试将分数保存在一个数组和/或结构数组中,并在需要时对其进行操作。
要获得良好的设计理念,您可以挑战自己,将游戏逻辑和游戏玩法存储在不同的模块中,并相应地与它们进行交互。
澄清
假设这是一个字符数组。
char s[] = "ABCD";
for(int i = 0; i<4;i++)
Frequency[s[i]-'A']++;
这样我们基本上将 ascii 值转换为数组的索引。在这里,我没有直接使用 65,而是减去了该值,以便每个频率都从索引位置 0
开始存储。
关于c - 让一个字符在数组中重复出现多次并计算得分。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823832/