11 个解决方案
#1
你定义一个STACK和队列呀。就OK了。呵呵/你去看看“数据结构” ,上面有专门的,回文算法的。。
#2
"若干次运算都能得到回文数"这个例外的数应该运算多少次才能判定是例外的呢?
#3
UP
#4
呵呵,做课后作业啊~
#5
这是一段回文的代码,看看。见笑了。
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
int n,l;
void main(void)
{
void char2int(char*,int*);
int check(int*);
void add(int*);
char s[20];
int m[100];
int i=0,flag=0;
printf("\nplease input the string:");
scanf("%s",s);
printf("\nplease input the carry of string:");
scanf("%d",&n);
l=strlen(s);
char2int(s,m);
while(flag==0&&++i<30)
if(check(m)) flag=1;
else add(m);
if(flag) printf("\nthe step is %d\n",i-1);
else printf("\nis not a palindrome!\n");
system("pause");
}
void char2int(char *s,int *m)
{ int i;
for(i=0;i<l;i++)
if(isdigit(s[i])) m[i]=s[i]-48;
else m[i]=s[i]-97+10;
}
int check(int *m)
{ int i;
for(i=0;i<(l/2);i++)
if(m[i]!=m[l-1-i]) return(0);
printf("\n");
for(i=0;i<l;i++)
if(m[i]<10)
printf("%d",m[i]);
else printf("%c",m[i]-10+97);
return(1);
}
void add(int *m)
{ int i;
int t1[100],t2[100];
t1[0]=t2[0]=0;
for(i=0;i<l;i++) {t1[i+1]=m[i];t2[i+1]=m[l-1-i];}
for(i=l;i>0;i--){
t2[i]+=t1[i];
t2[i-1]=t2[i]/n+t2[i-1];
t2[i]%=n;
}
if(t2[0]!=0)
{for(i=0;i<=l;i++) m[i]=t2[i];l++;}
else for(i=1;i<=l;i++) m[i-1]=t2[i];
}
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
int n,l;
void main(void)
{
void char2int(char*,int*);
int check(int*);
void add(int*);
char s[20];
int m[100];
int i=0,flag=0;
printf("\nplease input the string:");
scanf("%s",s);
printf("\nplease input the carry of string:");
scanf("%d",&n);
l=strlen(s);
char2int(s,m);
while(flag==0&&++i<30)
if(check(m)) flag=1;
else add(m);
if(flag) printf("\nthe step is %d\n",i-1);
else printf("\nis not a palindrome!\n");
system("pause");
}
void char2int(char *s,int *m)
{ int i;
for(i=0;i<l;i++)
if(isdigit(s[i])) m[i]=s[i]-48;
else m[i]=s[i]-97+10;
}
int check(int *m)
{ int i;
for(i=0;i<(l/2);i++)
if(m[i]!=m[l-1-i]) return(0);
printf("\n");
for(i=0;i<l;i++)
if(m[i]<10)
printf("%d",m[i]);
else printf("%c",m[i]-10+97);
return(1);
}
void add(int *m)
{ int i;
int t1[100],t2[100];
t1[0]=t2[0]=0;
for(i=0;i<l;i++) {t1[i+1]=m[i];t2[i+1]=m[l-1-i];}
for(i=l;i>0;i--){
t2[i]+=t1[i];
t2[i-1]=t2[i]/n+t2[i-1];
t2[i]%=n;
}
if(t2[0]!=0)
{for(i=0;i<=l;i++) m[i]=t2[i];l++;}
else for(i=1;i<=l;i++) m[i-1]=t2[i];
}
#6
js(int n)
{
int i,k,strl,half;
char yy[20];
itoa(n,yy,10);
strl=strlen(yy);
half=strl/2;
for(i=0;i<half;i++)
{
if(yy[i]!=yy[strl-1])
{return 0;break;}
else
k=1;
}
if(k==1)
return 1;
}
{
int i,k,strl,half;
char yy[20];
itoa(n,yy,10);
strl=strlen(yy);
half=strl/2;
for(i=0;i<half;i++)
{
if(yy[i]!=yy[strl-1])
{return 0;break;}
else
k=1;
}
if(k==1)
return 1;
}
#7
/*不好意思,写错一处*/
js(int n)
{
int i,k,strl,half;
char yy[20];
itoa(n,yy,10);
strl=strlen(yy);
half=strl/2;
for(i=0;i<half;i++)
{
if(yy[i]!=yy[--strl])
{return 0;break;}
else
k=1;
}
if(k==1)
return 1;
}
js(int n)
{
int i,k,strl,half;
char yy[20];
itoa(n,yy,10);
strl=strlen(yy);
half=strl/2;
for(i=0;i<half;i++)
{
if(yy[i]!=yy[--strl])
{return 0;break;}
else
k=1;
}
if(k==1)
return 1;
}
#8
194 196 ?
#9
100000次以上
#10
我这里给一段,求回文的算法
int turn(int a)
{
int i=0,n=0,e=0,f;
f=a;
while(a>=10)
{
a=a/10;
n++;
}
for(i=0;i<=n;i++)
e=e+int(f/pow(10,i))%10*pow(10,n-i);
return e;
}
int turn(int a)
{
int i=0,n=0,e=0,f;
f=a;
while(a>=10)
{
a=a/10;
n++;
}
for(i=0;i<=n;i++)
e=e+int(f/pow(10,i))%10*pow(10,n-i);
return e;
}
#11
几天没有回来,想不到有人光临汉舍,还带来了可口的“答案”,小弟不甚感激。
不过,一楼的兄弟,我现在还没有时间看数据库,下次有机会和你好好切磋切磋。
小照 menghun(php)还有小鱼儿,你们的回复先记在心上。(结贴时候保证散分)
这些程序今天晚上好好分析分析,看来,今天晚上又要夜战了。
不过,一楼的兄弟,我现在还没有时间看数据库,下次有机会和你好好切磋切磋。
小照 menghun(php)还有小鱼儿,你们的回复先记在心上。(结贴时候保证散分)
这些程序今天晚上好好分析分析,看来,今天晚上又要夜战了。
#1
你定义一个STACK和队列呀。就OK了。呵呵/你去看看“数据结构” ,上面有专门的,回文算法的。。
#2
"若干次运算都能得到回文数"这个例外的数应该运算多少次才能判定是例外的呢?
#3
UP
#4
呵呵,做课后作业啊~
#5
这是一段回文的代码,看看。见笑了。
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
int n,l;
void main(void)
{
void char2int(char*,int*);
int check(int*);
void add(int*);
char s[20];
int m[100];
int i=0,flag=0;
printf("\nplease input the string:");
scanf("%s",s);
printf("\nplease input the carry of string:");
scanf("%d",&n);
l=strlen(s);
char2int(s,m);
while(flag==0&&++i<30)
if(check(m)) flag=1;
else add(m);
if(flag) printf("\nthe step is %d\n",i-1);
else printf("\nis not a palindrome!\n");
system("pause");
}
void char2int(char *s,int *m)
{ int i;
for(i=0;i<l;i++)
if(isdigit(s[i])) m[i]=s[i]-48;
else m[i]=s[i]-97+10;
}
int check(int *m)
{ int i;
for(i=0;i<(l/2);i++)
if(m[i]!=m[l-1-i]) return(0);
printf("\n");
for(i=0;i<l;i++)
if(m[i]<10)
printf("%d",m[i]);
else printf("%c",m[i]-10+97);
return(1);
}
void add(int *m)
{ int i;
int t1[100],t2[100];
t1[0]=t2[0]=0;
for(i=0;i<l;i++) {t1[i+1]=m[i];t2[i+1]=m[l-1-i];}
for(i=l;i>0;i--){
t2[i]+=t1[i];
t2[i-1]=t2[i]/n+t2[i-1];
t2[i]%=n;
}
if(t2[0]!=0)
{for(i=0;i<=l;i++) m[i]=t2[i];l++;}
else for(i=1;i<=l;i++) m[i-1]=t2[i];
}
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
int n,l;
void main(void)
{
void char2int(char*,int*);
int check(int*);
void add(int*);
char s[20];
int m[100];
int i=0,flag=0;
printf("\nplease input the string:");
scanf("%s",s);
printf("\nplease input the carry of string:");
scanf("%d",&n);
l=strlen(s);
char2int(s,m);
while(flag==0&&++i<30)
if(check(m)) flag=1;
else add(m);
if(flag) printf("\nthe step is %d\n",i-1);
else printf("\nis not a palindrome!\n");
system("pause");
}
void char2int(char *s,int *m)
{ int i;
for(i=0;i<l;i++)
if(isdigit(s[i])) m[i]=s[i]-48;
else m[i]=s[i]-97+10;
}
int check(int *m)
{ int i;
for(i=0;i<(l/2);i++)
if(m[i]!=m[l-1-i]) return(0);
printf("\n");
for(i=0;i<l;i++)
if(m[i]<10)
printf("%d",m[i]);
else printf("%c",m[i]-10+97);
return(1);
}
void add(int *m)
{ int i;
int t1[100],t2[100];
t1[0]=t2[0]=0;
for(i=0;i<l;i++) {t1[i+1]=m[i];t2[i+1]=m[l-1-i];}
for(i=l;i>0;i--){
t2[i]+=t1[i];
t2[i-1]=t2[i]/n+t2[i-1];
t2[i]%=n;
}
if(t2[0]!=0)
{for(i=0;i<=l;i++) m[i]=t2[i];l++;}
else for(i=1;i<=l;i++) m[i-1]=t2[i];
}
#6
js(int n)
{
int i,k,strl,half;
char yy[20];
itoa(n,yy,10);
strl=strlen(yy);
half=strl/2;
for(i=0;i<half;i++)
{
if(yy[i]!=yy[strl-1])
{return 0;break;}
else
k=1;
}
if(k==1)
return 1;
}
{
int i,k,strl,half;
char yy[20];
itoa(n,yy,10);
strl=strlen(yy);
half=strl/2;
for(i=0;i<half;i++)
{
if(yy[i]!=yy[strl-1])
{return 0;break;}
else
k=1;
}
if(k==1)
return 1;
}
#7
/*不好意思,写错一处*/
js(int n)
{
int i,k,strl,half;
char yy[20];
itoa(n,yy,10);
strl=strlen(yy);
half=strl/2;
for(i=0;i<half;i++)
{
if(yy[i]!=yy[--strl])
{return 0;break;}
else
k=1;
}
if(k==1)
return 1;
}
js(int n)
{
int i,k,strl,half;
char yy[20];
itoa(n,yy,10);
strl=strlen(yy);
half=strl/2;
for(i=0;i<half;i++)
{
if(yy[i]!=yy[--strl])
{return 0;break;}
else
k=1;
}
if(k==1)
return 1;
}
#8
194 196 ?
#9
100000次以上
#10
我这里给一段,求回文的算法
int turn(int a)
{
int i=0,n=0,e=0,f;
f=a;
while(a>=10)
{
a=a/10;
n++;
}
for(i=0;i<=n;i++)
e=e+int(f/pow(10,i))%10*pow(10,n-i);
return e;
}
int turn(int a)
{
int i=0,n=0,e=0,f;
f=a;
while(a>=10)
{
a=a/10;
n++;
}
for(i=0;i<=n;i++)
e=e+int(f/pow(10,i))%10*pow(10,n-i);
return e;
}
#11
几天没有回来,想不到有人光临汉舍,还带来了可口的“答案”,小弟不甚感激。
不过,一楼的兄弟,我现在还没有时间看数据库,下次有机会和你好好切磋切磋。
小照 menghun(php)还有小鱼儿,你们的回复先记在心上。(结贴时候保证散分)
这些程序今天晚上好好分析分析,看来,今天晚上又要夜战了。
不过,一楼的兄弟,我现在还没有时间看数据库,下次有机会和你好好切磋切磋。
小照 menghun(php)还有小鱼儿,你们的回复先记在心上。(结贴时候保证散分)
这些程序今天晚上好好分析分析,看来,今天晚上又要夜战了。