我想创建一个名为LetterDifference(char *wordA, char *wordB)
我希望函数扫描两个单词,如果单词之间有一个字母差异,则返回1。例如,如果
wordA = cool
和
wordB = tool
注意:WordA
和WordB
的长度始终相同
我希望函数返回1
这是我尝试过的,我的代码无法编译,我认为我的理解存在错误。有人可以帮我吗?
int LetterDifference(char *wordA, char *wordB)
{
int i;
int count = strlen(word1);
while (i < strlen(wordA)) {
if (wordA[i] == wordB[i]) {
count = count - 1;
i++;
}
}
if (count == 1) {
return 1;
}
}
答案 0 :(得分:1)
此@new编码器背后的逻辑非常简单。
我想先指出一些需要纠正的错误。
wordA
和wordB
长度不相等的情况下,控件超出范围。您需要确保两个单词的长度相等,然后再继续。word1
(您用来将count
变量初始化为该变量的长度)不存在。相反,它应该是wordA
。count
并非为1的情况,没有返回值。解决方案:
您只需要从0循环到任意一个字符串的长度即可。从每个索引的两个字符串中检查相应的元素/字符,对于每个不等字符,增加count
er变量。如果count
er最终等于1
。这意味着存在一个字母的差异。
我已经在下面发布了代码。它还可以确保用户仅输入相等长度的字符串。希望对您有所帮助。
代码:
#include<stdio.h>
#include<string.h>
int LetterDifference(char[] , char[] );
int main() {
int l1, l2, flag = 0, res;
char a[10], b[10];
while(flag==0) {
printf("\nEnter 2 words each of the same length:");
printf("\nenter the 1st word: ");
scanf("%s",&a);
printf("\nenter the 2nd word: ");
scanf("%s",&b);
l1 = strlen(a);
l2 = strlen(b);
if(l1==l2) {
flag = 1;
}
else {
printf("\nlengths of the words are unequal...enter again!!!");
flag = 0;
}
}
printf("\n%s\n%s",a,b);
res = LetterDifference(a, b);
if(res==1) {
printf("\nThere is a 1-letter difference.");
}
else {
printf("\nNO one letter difference.");
}
return 0;
}
int LetterDifference(char wordA[], char wordB[])
{
int i, count = 0;
int j,c[strlen(wordA)];
//use the following for loop if you are looking to match corresponding characters from each word
//for(i = 0; i < strlen(wordA); i++) {
// if(wordA[i]!=wordB[i]) {
// count++;
// }
//}
//use the following for loop if you are looking to match any characters from word regardless of the order in which they appear
for(i = 0; i < strlen(wordA); i++) {
c[i]=0;
for(j = 0; j < strlen(wordB); j++) {
if(wordA[i]==wordB[j]) {
c[i]++;
}
}
if(c[i]==0) {
count++;
}
}
if (count == 1) {
return 1;
}
return 0;
}
输出: 案例1:考虑单词顺序
输入2个相同长度的单词:
输入第一个单词:abcd
输入第二个单词:abcz
abcd
abcz
有1个字母的差异。
另一个输入
输入2个相同长度的单词:
输入第一个单词:qqqq
输入第二个单词:q
单词的长度不相等...再次输入!
输入2个相同长度的单词:
输入2个相同长度的单词:
输入第一个单词:qqqq
输入第二个单词:aaaa
qqqq
aaaa
没有一个字母差异。
案例2:不考虑字符顺序
输入2个相同长度的单词:
输入第一个单词:qwewew
输入第二个单词:ewwewf
qwewew
ewwewf
有1个字母的差异。
答案 1 :(得分:-2)
#include<stdio.h>
#include<string.h>
int LetterDifference(char *wordA, char *wordB)
{
int count = 0 , i;
for(i = 0 ;wordA[i] ; i++ )
if(wordA[i]!=wordB[i])
count++;
return count;
}
int main()
{
char res = 0 ,word1[10],word2[10];
printf("Enter the first word : ");scanf("%s",word1);
printf("Enter the second word : ");scanf("%s",word2);
res = LetterDifference( word1 , word2);
if(res == 1)
printf("Yes\n");
else
printf("No\n");
}