我在想为什么结果不正确。 如果我输入字符串来测试字符串是否是回文, 每当我尝试时结果都是一样的。回文 - 只有C语言
例如,如果我键入'爸爸'来测试,这表明我不是回文。然而,如果我键入'神',它仍然表明我不是回文。
我不知道如何以正确的方式解决这个问题... 请让我知道我该如何做到这一点。
谢谢。
(以下代码)
#include <stdio.h>
#include <string.h>
void isPalindrome(char *str, int n);
int main() {
char str[100];
int n = strlen(str);
char choice;
printf("Will you run this program? : ");
scanf("%c", &choice);
getchar();
while (choice == 'Y' || choice == 'y') {
isPalindrome(str, n);
printf("Retry? : ");
scanf("%c", &choice);
getchar();
}
}
void isPalindrome(char *str, int n) {
int flag = 1;
printf("Type strings : ");
gets_s(str, 100);
for (int i = 0; i < n/2; i++) {
if ('A' <= str[i] && str[i] <= 'Z') {
str[i] = str[i] - 'A' + 'a';
}
if (strlen(str)/2 == 0) {
if (str[i] != str[n - i - 1]) {
flag = 0;
break;
}
} else
if (strlen(str)/2 != 0) {
if (str[i] != str[n - i]) {
flag = 0;
break;
}
}
}
if (flag == 1) {
printf("%s is a palindrome \n", str);
} else {
printf("%s is not a palindrome \n", str);
}
}
现在是学习如何使用调试器的好时机。 – OldProgrammer
'(strlen(str)/ 2 == 0)'没有任何意义。也许你的意思是'(strlen(str)%% 2 == 0)'? – Shark
“*你会运行这个程序吗?*” - 但是......但是......我不是已经这么做了吗? –