
bool testPalindrome(const char st[])
{
int i=0,j=strlen(st);
while(i<=j)
{
while(st[i]<'a'&&st[i]>'Z'||st[i]<'A'||st[i]>'z')
i++;
while(st[j]<'a'&&st[j]>'Z'||st[j]<'A'||st[j]>'z')
j--;
if(i!=j) return false;
}
return true;
}
#include<iostream>
using namespace std;
char s[100];
int recurs(int i,int j)
{
if(s[i]!=s[j])return 0;
else if(i>j-2)return 1;
else return return(i+1,j-1);
}
void main()
{
int i;
cout<<"输入一个字符串:";
cin>>s;
for(i=0;s[i];i++);
if(recurs(0,i-1))
cout<<"是回文串"<<endl;
else
cout<<"不是回文串"<<endl;
}
bool test(char s[],int firstInd,int lastInd)
{
if(lastInd<=firstInd) return true;
else
{
if(s[lastInd]!=s[firstInd])
return false;
else
return test(s,firstInd+1,lastInd-1);
}
}
public void numpal(){
ArrayList<Integer> input = new ArrayList<Integer>();
Scanner sc = new Scanner(Systemin);
Pattern inte = Patterncompile("^\\d+$");
String in = scnext();
while(null != in && intematcher(in)matches()){
inputadd(IntegerparseInt(in));
Scanner sc2 = new Scanner(Systemin);
in = sc2next();
}
if(diguinumpal(input, 0)){
Systemoutprintln("yes");
}else{
Systemoutprintln("no");
}
}
public boolean diguinumpal(ArrayList<Integer> arr, int index){
if(arrsize() < 2){
Systemoutprintln(index);
return true;
}else if(arrget(index) != arrget(arrsize() -1 -index)){
Systemoutprintln(arrget(index)+"!="+arrget(arrsize() -1)+" "+index);
return false;
}else if((arrsize() - 2(index +1)) > 1){
return diguinumpal(arr, index +1);
}else{
Systemoutprintln(index);
return true;
}
}
如果输入的字符不是数字就开始判断是不是回文。
#include <stdioh>
#include <stringh>
int hui(char a[100000],int n,int i)//这里我用了3个参数,中间的n是最末尾的坐标,最后的i是第一位的坐标
{ if(n==i&&a[i]==a[n]) return 1;//这事判断是否为回文的条件,
else
{
if (a[i]==a[n]) {hui(a,n-1,i+1);}//如果相当了 让i向后移动 让n向前移动
else {return 0;}
}
}
int main()
{
int len;
char a[100000];
gets(a);
printf("%s\n",a);
len=strlen(a);
if (len==0)
printf("No\n");
else
{
if (hui(a,len-1,0)) {printf("Yes\n");}
else {printf("No\n");}
}
return 0;
}
你的正确 还问 浪费我时间
#include<iostream>
using namespace std;
long reverse(long number){
if(number/10 == 0)
return number;
else {
long temp = number,sum = number%10;
while(temp/10 != 0){
sum = 10;
temp /= 10;
}
return sum+reverse(number/10);
}
}
int main(){
long num = 123321;
cout<<num<<endl;
cout<<"After Reverse!"<<endl;
cout<<reverse(num)<<endl;
if(num == reverse(num))
cout<<"Palindrome Number!"<<endl;
else cout<<"Not A Palindrome Number!"<<endl;
system("pause");
return 0;
}
回文数判断C++递归版本,VS2008下调试通过
int numpal(int x)
{
int a,n=0,temp;
temp=x;
a=x;
while(a!=0)
{
n+=a%10;
a/=10;
n=10;
}
if(temp==n/10)
return 1;
else
return 0 ;
}
#include<stdioh>
#include<stringh>
main()
{
char a[100];
int i=0,n;
int facto(char a[],int n);
gets(a);
n=strlen(a);
if(facto(a,n)!=0)
printf("Yes\n");
else
printf("No\n");
}
int facto(char a[],int n)
{
int i=0;
i= strlen(a);
if(n==(i+1)/2) return 1;
else if(a[i-n]==a[n-1])
{
facto(a,n-1);
}
else return 0;
}
帮你改正了一下!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)