如何解决如何参考点数组,对要求用户输入的每个字符进行评分,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 举报,一经查实,本站将立刻删除。