我做了一个程序来查找输入的字符串是否是回文序列,但它总是说它不是回文结构
#include <conio.h>
#include <graphics.h>
#include <string.h>
void main(void)
{
int i,len,halflen,flag=1;
char str[50];
clrscr();
printf("Enter a string:\n");
gets(str);
len=strlen(str);
halflen=len/2;
for(i=0;i<halflen;i++)
{
if(str[i]!=str[i+halflen])
flag=0;
break;
}
if(flag)
printf("It is a Palindrome.");
else
printf("It is not a Palindrome.");
getch();
}
Run Code Online (Sandbox Code Playgroud)
Ned*_*der 10
你的中心比较是有缺陷的:
if (str[i] != str[i+halflen])
Run Code Online (Sandbox Code Playgroud)
这不是比较你认为的两个字符.
尝试在你的程序中输入"HelloHello",它会说它是一个回文!
你需要比较这两个:
if (str[i] != str[len-i-1])
Run Code Online (Sandbox Code Playgroud)
(并修复大括号,如另一个答案所示)
为了给你一个线索,我已经做了一些更整洁的代码缩进:
for(i=0;i<halflen;i++)
{
if(str[i]!=str[i+halflen])
flag=0;
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8704 次 |
| 最近记录: |