gpt4 book ai didi

c - 为什么我的回文检查函数总是对回文返回 false?

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:00 24 4
gpt4 key购买 nike

我正在尝试检查一个句子是否为回文。空格和标点符号都不重要。

例子:

• 从不奇数或偶数

• 一个人计划一条巴拿马运河。

• 看门人看名字,车库看门人

这些句子中的任何一个都在我的代码中通过了 true。在我的第一次尝试中,我尝试删除空格、标点符号并将大写字母转换为小写字母。

int palindrome(char *str){
int n,n2 = 0,i,j=0;
n = sizeof(str)/sizeof(char);
char nova[n];

for (i=0;i< n;i++){
if(str[i] >= 'A' && str[i] <= 'Z'){
nova[n2] = ('a' + str[i] - 'A');
n2++;
}
else if(str[i] >= 'a' && str[i] <= 'z'){
nova[n2] = str[i];
n2++;
}
}

i=0;
while (i < n2-1){
if (nova[i]!= nova[j]){
return 0;
}
i++;
j--;
}

return 1;
}

最佳答案

第 4 行:您想通过 sizeof 获取元素的数量.

但是如果你通过指针将你的参数传递给函数。

  n = sizeof(str)/sizeof(char);

n 将始终为 4(在 32 位平台上)。相反,使用

  n = strlen(str)

(需要 #include <string.h> )如果是 c 中的字符串格式。

关于c - 为什么我的回文检查函数总是对回文返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901316/

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