用C编写一个程序,以查找给定的两个字符串是否是字谜。
输入包含2个字符串。假设字符串中的所有字符均为小写字母或空格,并且字符串的最大长度为100。
样本输入和输出1:
输入第一个字符串
安妮莎
输入第二个字符串
两栖软件
anitha和amphisoft不是字谜
样本输入和输出2:
输入第一个字符串
眼睛
输入第二个字符串
他们看
眼睛,他们看到的是字谜
样本输入和输出3:
输入第一个字符串
宿舍
输入第二个字符串
肮脏的房间
宿舍和肮脏的房间是字谜
#include <stdio.h>
int check_anagram(char [], char []);
int main()
{
char a[100], b[100];
int flag;
printf("Enter first string\n");
gets(a);
printf("Enter second string\n");
gets(b);
flag = check_anagram(a, b);
if (flag == 1)
printf("\"%s\" and \"%s\" are anagrams.\n", a, b);
else
printf("\"%s\" and \"%s\" are not anagrams.\n", a, b);
return 0;
}
int check_anagram(char a[], char b[])
{
int first[26] = {0}, second[26] = {0}, c = 0;
while (a[c] != '\0')
{
first[a[c]-'a']++;
c++;
}
c = 0;
while (b[c] != '\0')
{
second[b[c]-'a']++;
c++;
}
for (c = 0; c < 26; c++)
{
if (first[c] != second[c])
return 0;
}
return 1;
}
我编写了代码,但是它仅对第一个输入/输出有效,而对第二个和第三个输入则无效。
最佳答案
您提供的代码有效。
由于您正在编写它仅适用于第一个输入,因此我想问题出在您删除并发布问题的循环区域中。
第一次之后不起作用的一个可能原因是在获取新输入之前未清除a和b。
希望我能帮上忙
关于c - 两个字符串的字谜,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30114517/