【发布时间】:2021-09-15 10:36:54
【问题描述】:
我编写了两个示例程序来检查回文字符串。但在两者中,我都得到了输出,它不是回文数。我错过了什么?
我严格假设代码以某种方式执行我的 if 语句并将标志放入 1。可能是因为该长度计算。谁有更好的主意?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int main(void) {
setbuf(stdout,NULL);
char name[100];
int i,length,flag=0,k;
printf("Enter your name");
/*scanf("%s",name);*/
gets(name);
length=strlen(name);
for(i=0;i<=length-1;i++)
{
for(k=length-1;k>=0;k--)
{
if(name[i]!=name[k])
{
flag=1;
break;
}
}
}
if(flag==0)
{
printf("Give word is a palindrome");
}
if(flag==1)
{
printf("This is NOT a palindrome word");
}
return 0;
}
和
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int main(void) {
setbuf(stdout,NULL);
char name[100];
int i,length,flag=0;
printf("Enter your name");
/*scanf("%s",name);*/
gets(name);
length=strlen(name);
for(i=0;i<=length/2;i++)
{
if(name[i]!=name[length-1])
{
flag=1;
}
}
if(flag==0)
{
printf("Give word is a palindrome");
}
if(flag==1)
{
printf("This is NOT a palindrome word");
}
return 0;
}
【问题讨论】:
-
在第二个sn-p中,声明
if (name[i] != name[length - 1]),我猜你想要if (name[i] != name[length - i - 1]) -
在第一个代码中,您将每个字母与每个字母进行比较;在第二个代码中,您始终与最后一个字母进行比较
-
阅读this。
-
OT:
for(i=0;i<=length-1;i++)-->for(i=0;i<length-1;i++) -
您是否偶然在搜索框中搜索了
"[c] palindrome"?有几十个,如果不是数百个答案。也许Answer - How to remove spaces and check if a string is a palindrome?
标签: c algorithm palindrome