gpt4 book ai didi

字谜 C 程序如何(忽略大写字母)

转载 作者:行者123 更新时间:2023-11-30 21:35:32 25 4
gpt4 key购买 nike

我的程序运行良好,这只是我需要的一个小建议;首先这是我的代码,用于检查两个单词是否是字谜;效果很好;

#include <stdio.h>

int anagram_check(char [], char []);



int main()
{
char word1[100], word2[100];
int check;

printf("Enter a Word\n");

gets(word1);

printf("Enter another word\n");
gets(word2);




check = anagram_check(word1, word2);

if (check == 1)

printf("\"%s\" and \"%s\" are anagrams.\n", word1, word2);
else

printf("\"%s\" and \"%s\" are not anagrams.\n", word1, word2);

return 0;
}

int anagram_check(char word1[], char word2[])
{
int first[26] = {0}, second[26] = {0}, i = 0;

while (word1[i] != 0)
{
first[word1[i]-'a']++;
i++;
}

i = 0;

while (word2[i] != 0)
{
second[word2[i]-'a']++;
i++;
}

for (i = 0; i < 26; i++)
{
if (first[i] != second[i])
return 0;
}

return 1;
}

现在我的问题是如何让我的程序将大写字母视为小写字母?例如。当我输入 hello 和 Hello 时,它说这些单词不是字谜。那么我该如何改变这个呢。

还有“second[word2[i]-'a']++;”的地方“a”代表什么/或做什么?

我还需要忽略任何非字母的字符,而我的程序已经出现这种情况,正确吗?

谢谢,非常感谢您的帮助!!

最佳答案

首先,从您的问题中删除 c++ 标签。 c和c++不一样。你正在写c。

另外,如果您想知道为什么您被低估并且人们有点严厉,请让我解释一下。这个网站通常对那些在没有首先表明他们已经努力解决问题的情况下提出问题的人不友好。我们并不想表现得刻薄。像这样的问题被否决,以阻止更多类似的问题出现。我们不是来用勺子喂食的。

spoonfeeding

我建议编写一个将字符转换为小写的小函数,然后在这些循环中调用它。有 tolower 函数,但我认为编写自己的函数将是一个很好的练习。

while (word1[i] != 0)
{
//you should call your function here
first[word1[i]-'a']++;
i++;
}
//....
while (word2[i] != 0)
{
//you should call your function here.
second[word2[i]-'a']++;
i++;
}

我不会更具体,因为这听起来像是一个家庭作业问题。

“还有“第二个[word2[i]-'a']++;”“a”代表/或做什么?这里的“a”代表ascii code对于字母a。 C 编译器会将“a”视为常数 97。

您应该仔细考虑处理非字母数字字符时会发生什么。我会在评论中与大家讨论。提示:这两个循环之一会发生不好的事情:

   while (word1[i] != 0)
{
first[word1[i]-'a']++;
i++;
}
//...
while (word2[i] != 0)
{
second[word2[i]-'a']++;
i++;
}

关于字谜 C 程序如何(忽略大写字母),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30722028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com