📜  门| Gate IT 2005 |第53章

📅  最后修改于: 2021-06-29 18:14:16             🧑  作者: Mango

以下C函数采用两个ASCII字符串,并确定一个是否为另一个的字谜。字符串s的字谜是通过对s中的字母进行排列而获得的字符串。

int anagram (char *a, char *b) {
int count [128], j;
for (j = 0;  j < 128; j++) count[j] = 0;
j = 0;
while (a[j] && b[j]) {
A;
B;
}
for (j = 0; j < 128; j++) if (count [j]) return 0;
return 1;
}

为语句A和B选择正确的替代方法。
(A) A:计数[a [j]] ++和B:计数[b [j]] –
(B) A:计数[a [j]] ++和B:计数[b [j]] ++
(C) A:计数[a [j ++]] ++和B:计数[b [j]] –
(D) A:计数[a [j]] ++和B:计数[b [j ++]] –

答案: (D)
解释:

#include 
char a[100], b[100];
int main(void) {
 int flag;
  printf("Enter first string\n");
 gets(a);
  printf("Enter second string\n");
 gets(b);
  flag = 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;
return 0;
}
int anagram (char *a, char *b) {
int count [128], j;
for (j = 0; j < 128; j++) count[j] = 0;
j = 0;
while (a[j] && b[j]) {
count [a[j]]++;
count[b[j++]]--;
}
for (j = 0; j < 128; j++) if (count [j]) return 0;
return 1;
}

这个问题的测验
如果您在以上帖子中发现任何错误,请在下面发表评论