输入一个字符串,判断其是否为对折串。不使用strlen,strcmp函数。

发布网友

我来回答

3个回答

热心网友

可以用栈来做但是也要用到strlen
sack sa;
对于一个指定的串先用strlen计算他的总长度len;
然后遍历这个串
对于len为偶数的情况
前面len/2个字符进栈
到len/2 +1个字符的时候 从sa里面弹栈出来,sa.pop()得到出来的这个元素p
比较p和len/2 +1
然后依次往后取 直到栈空为止 中途有一个不匹配 就不是对折串了
然后是奇数情况 前面(len-1)/2个字符串进栈 从(len-1)/2+2个字符开始比较就行了

热心网友

int main(int argc, char* argv[])
{
// 第一个参数是字符需要判断的字符串
if(argc<2)
printf("no input string\n");

char* p=argv[1];
int n=0;
int h=0;
int e=0;
while(p && *p++) n++;
e=n-1;
n/=2;
p=argv[1];
while(n--)
{

if(p[h++]!=p[e--])
break;

}

if(n<0)
printf(" yes\n");
else
printf(" no\n");

return 0;
}

热心网友

很简单

马上就好
ABCBA 算
那ABBA算吗?

#include <stdio.h>
main()
{
int i,flag=0,nLen=0;
char *p,buffer[100]={0};
p=buffer;
gets(buffer);
while (*p++)
nLen++;
if (nLen%2!=0)
nLen--;
for (i=0;i<nLen/2;i++)
if (buffer[i]!=buffer[nLen-i])
{
flag=1;
break;
}
if (flag)
{
printf("no\n");
}else
printf("yes\n");
}

有问题请追问 满意记得采纳追问能否不用指针呢?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com