【发布时间】:2021-12-30 00:10:18
【问题描述】:
我想编写代码来检查一个字符串在向前或向后读取时是否相同(如回文)。这是我正在使用的代码。
#include <stdio.h>
#include <string.h>
int main(){
int n, right, left;
char s[101];
scanf("%100d", &n);
getchar();
for(int i=0;i<n;i++){
scanf("%[^\n]", s);
getchar();
left=0;
right=strlen(s);
while((left<=right)&&(s[left]==s[right-1])){
left++;
right--;
}
if(left>right){
printf("True\n");
}else{
printf("False\n");
}
}
return 0;
}
如果我输入一个普通的字符串,它工作得很好。例如
输入:
aka
bob
abc
输出:
True
True
False
如果字符串是回文则输出为真,否则输出为假。这工作得很好,但是当我输入一个中间有空格的字符串时,输出不正确。例如
输入:
Taco cat
was it a car or a cat I saw
输出:
False
False
两个字符串都是回文,输出应该是真的,但事实并非如此。我哪里做错了?
【问题讨论】: