急求用C 语言编的回文问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 09:43:18
急啊,谢谢各位了啊

#include <stdio.h>
#include <string.h>

int
main(void)

{
char str[82];//注意这里
int i,k,m=0;
scanf("%80s",str);//和这里.输入80个字符,加上一个'\0',最后还要加一个空格,总共要82个.
k=strlen(str);
for (i=0; i<k/2; i++)
if (str[i] != str[k-i-1])
{m=1; break;}
if (m)
printf("%s no.\n", str);
else if(k%2)
printf("%s yes.\n", str);
else
{
for(i=k;i>=k/2;i--)str[i]=str[i-1];
str[k+1]=0;
str[k/2]=' ';
printf("%s yes.\n", str);
}
return(0);
}
========
算法描述:
1.从头向尾扫描,如果已经到尾则GAME OVER.
2.从尾向头扫描,如果已经到头则转向1,继续下一次头扫描.
3.比较头尾两个字符是否相等,不相等则转向2,继续下一次尾扫描,
4.继续判断是否相等.一直到:
5.有不相等的字符出现,则不是回文.转向2
6.一直相等,最后奇回文在同一位置相遇,偶回文在相邻位置相遇.

#include <string.h>
main()
{
char a[]="asdsa"; //任意回文串