gpt4 book ai didi

c - 字谜问题

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

我是这个论坛的新手,想寻求帮助。我正在尝试根据 http://www.sanfoundry.com/c-program-...ings-anagrams/ 中的代码修改一个字谜程序。 。不过,这一次我使用了数组指针来获取用户的输入。我还创建了一个函数“check_input”来确保输入仅包含字符并排除符号(!,#,$)。但是,当我运行该程序时,它仍然接受这些符号并且不会像我希望的那样中断。请帮忙。

另外,我打算让程序以与小写字母相同的方式处理大写字母。这可以通过使用“stricmp”函数来实现吗?如果是这样,我应该将该函数放在哪里?替代方法也值得赞赏。

更新:抱歉。我在底部添加了 check_input 代码。

#include <stdio.h>
#include <ctype.h>
#include <string.h>


int test_anagram(char *ptrArray1, char *ptrArray2);
int check_input(char array1[], char array2[]);

int main()
{
char array1[100], array2[100];
char *pArray1, *pArray2;
int flag;

pArray1 = array1;
pArray2 = array2;

printf("Enter the first word: \n");
gets(pArray1);

printf("Enter the second word: \n");
gets(pArray2);

check_input(pArray1, pArray2);

flag = test_anagram(pArray1, pArray2);
if(flag == 1){
printf("\"%s\" and \"%s\" are anagrams.\n", pArray1, pArray2);
}else{
printf("\"%s\" and \"%s\" are not anagrams.\n", pArray1, pArray2);
}

return 0;
}

int test_anagram(char array1[], char array2[])
{
int num1[26] = {0}, num2[26] = {0}, i = 0;

while(array1[i] != '\0')
{
num1[array1[i] - 'a']++;
i++;
}

i = 0;
while(array2[i] != '\0')
{
num2[array2[i] - 'a']++;
i++;
}

for(i=0;i<26;i++)
{
if(num1[i] != num2[i]){
return 0;
}
return 1;
}


}

int check_input(char array1[], char array2[])
{
while(isalpha((int)array1) != 1){
break;
}

while(isalpha((int)array2) != 1){
break;
}
}

最佳答案

您尚未发布 check_input() 函数的完整代码,但一个建议是在用户输入每个字符时验证输入。

您可以使用 f.e 来做到这一点getchar() 函数并检查输入的字符是否为字母,并将其转换为小写(如果愿意,也可以为大写)。

您可以像这样进行小写转换:

#include <ctype.h>

// ...
tolower('A');

关于c - 字谜问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26955947/

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