gpt4 book ai didi

比较字符串c和字符差异

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:19 25 4
gpt4 key购买 nike

我的学校作业是比较字符串。
比较不区分大小写,因此大写或小写相同。

如果字符串相等,则输出第一个字符串。但是,如果字符串不相等,则输出为不同字符的数量。

示例:

Input:
string1: LION
string2: lion
Output: LION

Input:
string1: LION
string2: LEON
Output: 1 (because 'I' & 'E' is not equal)

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

int main()
{
int len, c, d, i, counter=0;
char a[1000],b[1000];
char *temp;
scanf("%[^\n]s", a);
scanf(" %[^\n]s", b);
temp = (char *) malloc(strlen(a));
strcpy(temp,a);
len= strlen(a);
for(i=0;i<len;i++)
{
c= tolower(a[i]);
d= tolower(b[i]);
if(c!=d) counter++;
}

if(counter)
{
printf("%d\n",counter);
} else {
printf("%s\n",temp);
}
free(temp);
return 0;
}

我已经创建了程序,但我的分数只有 37.5/100,或者我没有通过 8 个测试用例中的 5 个。那么我的程序有什么问题吗?

最佳答案

你的代码很难理解两个版本。首先计算差异并添加长度差异。第二个只计算差异,如果长度不相等则返回 -1字符串相等时返回零

size_t my_strcmp(const char *str1, const char *str2)
{
size_t result = abs(((int)strlen(str1) - (int)strlen(str2)));

//or
//int slen1 = strlen(str1);
//int slen2 = strlen(str2);
//int result = slen1 > slen2 ? slen1 - slen2 : slen2 - slen1;

while (*str1 && *str2)
{
if (tolower(*str1++) != tolower(*str2++))
{
result++;
}
}
return result;
}

int my_strcmp(const char *str1, const char *str2)
{
int result = (strlen(str1) != strlen(str2)) * -1;

if (!result)
{
while (*str1)
{
if (tolower(*str1++) != tolower(*str2++))
{
result++;
}
}
}
return result;
}

主要是

int x;
switch((x = my_strcmp(string1, string2)))
{
case -1:
printf("The strings have a different length\n");
break;
case 0:
printf("%s\n", string1);
break;
default:
printf("Number of differences %d\n", x);
break;
}

关于比较字符串c和字符差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45514834/

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