#include<stdio.h>#include<string.h> int main() { char str1[200],str2[200]; gets(str1); int i; for(i=0;i<strlen(str1);i++) str2[strlen(str1)-1-i]=str1[i]; str2[strlen(str1)]='\0'; printf("%s\n",strcmp(str1,str2)?"不是回文":"是回文"); return 0; }
#include<iostream.h>#include<cstring> int fun(char *str) { int len,half; len=strlen(str); half=len/2; for(int i=0;i<half;i++) if(str[i]!=str[--len]) break; if(i>=half) return 1; else return 0; } void main() {char string[1024]; cout<<"please input a string:"<<endl; cin
int huiwen(char *s) { char *p = s; while(*p) p++;//找到结束符\0的位置. p--;//\0的前一个字符,就是字符串的最后一个字符. while(s<p) { if(*s != *p) return 0;//发现不同,不是回文. s++; p--;//二者向中间移动. } return 1;//到相遇后一直相同,
//你的错误在于递归调用的时候,i每次都是0,所以要用static int i = 0#include <stdio.h>#include <stdlib.h>#include <string.h> int hui(char a[10000]) { int n; static int i=0; //这里改为static int i = 0就对了,因为你递归调用i的时候每次都把i置为0了,
#include#include char _str[1005]; int IsH(char _str[],int _L,int _R) { if(_L>=_R)return 1; if(_str[_L]-_str[_R]) return 0; return IsH(_str,_L+1,_R-1); } void main() { while(gets(_str),strcmp(_str,"#"))//输入#结束 printf("%s\n",IsH(_str,0,strlen(_str)-1)?"Yes":"No"); }
int fun( char str[] ){ int i,j,n;n=strlen(str);for(i=0,j=n-1;i<=(n-1)/2;i++,j--)if(str[i]!=str[j]) break;if(i>j) return 1;return 0;}void main(){ char a[80]; gets(a); if ( fun(a)==1 ) printf( "回文\n"); else printf("非回文\n");}
#include<stdio.h>#include<string.h>char _str[1005];int IsH(char _str[],int _L,int _R){ if(_L>=_R)return 1; if(_str[_L]-_str[_R]) return 0; return IsH(_str,_L+1,_R-1);}void main(){ while(gets(_str),strcmp(_str,"#"))//输入#结束 printf("%s\n",IsH(_str,0,strlen(_str)-1)?"Yes":"No");}
思路很简单,如果一个字符串是回文,那么它就应该是左右对称的.那么,第一个字符就应该和@前一个字符相等,依次类推#include <iostream> using namespace std; bool ok(char buf[]) { int st=0,end=0; while(buf[end]!='@') end++; end--;//找
我这里有一个源程序,自己看看吧,不懂就问我#include <stdio.h> int palind(char str[],int k, int i)/*自定义函数检测是否为回文字符串*/ { if(str[k]==str[i-k]&&k==0)/*递归结束条件*/ return 1; else if(str[k]==str[i-k])/*判断相对应的两个字符是否相等*/ palind
#include /*fun()函数:传入一个字符数组,如果是回文序列返回1,不是就返回0*/ int fun(char a[]) { int i,j,n=0; while(a[n]!='\0') n++; /*计算传入字符串(数组)长度*/ n--; /*跳出while循环时 a[n]='\0',故n--*/ for(i=0,j=n;i if(a[i]!=a[j]) break; if(i>=j)