问题出在使用了错误的输入函数。在C语言中,`gets`函数用于从标准输入读取一行字符串,但是它只接受`char*`类型的参数,而不是单个字符。因此,需要将输入改为使用`scanf`函数。
另外,题目要求判断输入的字符串是否是回文串,而不是单个字符。因此,我们需要对每行输入的字符串进行判断。
下面是修改后的代码:#include <stdio.h>#include <string.h>int isPalindrome(char *str) { int len = strlen(str); int i, j; for (i = 0, j = len - 1; i < j; i++, j--) { // 跳过空格 while (str[i] == ' ') i++; while (str[j] == ' ') j--; if (str[i] != str[j]) { return 0; // 不是回文串 } } return 1; // 是回文串}int main() { char str[100000]; while (scanf("%s", str) != EOF) { if (strcmp(str, "2013") == 0) { break; // 输入结束 } if (isPalindrome(str)) { printf("YES\n"); } else { printf("NO\n"); } } return 0;}
在这个代码中,我们定义了一个`isPalindrome`函数来判断输入的字符串是否是回文串。在判断时,我们使用两个指针,分别从字符串的头部和尾部开始向中间遍历,同时跳过空格。如果发现两个指针指向的字符不相等,则返回0,表示不是回文串;如果遍历完成后没有出现不相等的情况,则返回1,表示是回文串。
在`main`函数中,我们使用`scanf`函数来读取输入的字符串,并将它与字符串"2013"进行比较,以判断是否终止输入。然后调用`isPalindrome`函数来判断输入的字符串是否是回文串,并根据结果输出"YES"或"NO"。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 |