航天金税 服务费不交:急求用C 语言编的回文问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 12:42:00
急啊,谢谢各位了啊

#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"; //任意回文串
char b[1000]=0; //缓冲区
int i,slen=strlen(a);
for(i=0;i<slen;i++)
{
b[i]=a[slen-i-1];
} //逆序
if (0==strcmp(a,b)) printf("是回文"); else printf("不是回文");
return 0;

}