微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何参考点数组,对要求用户输入的每个字符进行评分,C

如何解决如何参考点数组,对要求用户输入的每个字符进行评分,C

所以,我有一个看起来像这样的数组:

// Points assigned to each letter of the alphabet

 int POINTS[] = {1,3,2,1,4,8,5,10,10};

按顺序,数组中的每个整数都对应于字母中的一个字母。 A或a得1分,B或b得3分。

并且我已经提示用户输入,我将如何评估用户输入并将其与数组内及以后的整数位置进行比较?

我知道我必须创建一个函数,并且在该函数内部使用某种循环,但是我不确定该循环内的检查条件应该是什么。 我还猜想我应该将输入的字符串转换为整数,希望能返回ASCII码。

// Points assigned to each letter of the alphabet
int POINTS[] = {1,10};

int compute_score(string word);

int main(void)
{
    // Get input words from both players
    string word1 = get_string("Player 1: ");
    string word2 = get_string("Player 2: ");

    // score both words
    int score1 = compute_score(word1);
    int score2 = compute_score(word2);

    // Todo: Print the winner
}

int compute_score(string word)
{
    // Todo: Compute and return score for string
}

我不太确定如何以及在我的compute_score函数中究竟要计算什么。

解决方法

根据我对问题的理解,我会尽力帮助您解决问题。

假设您使用ASCII character encoding(严格增加了字母序列值)的平台:

  • 使用fgets()读取用户输入。
  • 从输入中删除换行符后,测量输入的长度。
  • 遍历输入中的每个元素,并
    • 如果输入的值在'A''Z'之间,则从该值中减去'A',并将其用作索引值,以从{{1} }数组。
    • 否则,如果输入的值在POINTS'a'之间,则从该值中减去'z',并将其用作索引值以从{{1 }}数组。
    • 否则,跳到下一个值。
  • 继续将这些值添加到用户输入中的最后一个元素,并根据最终值确定结果。
,

我认为这可能有效:

EventQueue.invokeLater

询问任何问题,我使用int get_letter_nb(char c) { if (c > 64 && c < 91) return (c - 64); if (c > 96 && c < 123) return (c - 96); return (-1) // error : it's not a letter } int compute_score(string word) { int count = 0; int temp = 0; for (int i = 0; word[i],i++) { if (temp = get_letter_nb(word[i]) == -1) return (-1); // error : handling count += temp; } return POINTS[count]; } 中字母的ASCII码,我减去A或a == 1

以ascii为例'a'== 97,所以我返回97-97,然后'a'等于0,在您的数组中,它是a的POINTS [0]

随便问^^

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。