回文数计算c语言函数200到3000,【回文数(二)】 (C语言函数模块化)

解题思路:

参考代码:#include 

#include 

int ishw(char *m)

{

int len=strlen(m);

int i=0,j=len-1,flag=1;

while(i<=j)

{

if(m[i]!=m[j])

{

flag=0;break;

}

i++;

j--;

}

return flag;

}

void getReverse(char *m,char *re_m)

{

int len=strlen(m);

int i=len-1,j=0;

for(;i>=0;i--,j++)

{

re_m[j]=m[i];

}

re_m[j]='\0';

}

void addToM(int n,char *m,char *re_m)

{

int i=0,j;

int a[20];

memset(a,0,sizeof(a));

while(m[i]!='\0')

{

if(m[i]>='A'&&m[i]<='Z') a[i]+=(int)((m[i]-'A')+10);

else a[i]+=(m[i]-'0');

if(re_m[i]>='A'&&re_m[i]<='Z') a[i]+=(int)((re_m[i]-'A')+10);

else a[i]+=(re_m[i]-'0');

i++;

}

j=0;

while(j

{

a[j+1]+=(a[j]/n);

if(n<=10)

{m[j]=a[j]%n+'0';}

else{

if((a[j]%n)>=10) m[j]='A'+(a[j]%n-10);

else m[j]=a[j]%n+'0';

}

j++;

}

if(a[j]>=10) {m[j]=(a[j]-10)+'A';m[j+1]='\0';}

else if(a[j]>0) {m[j]=a[j]+'0';m[j+1]='\0';}

else m[j]='\0';

}

int main()

{

int n,cnt=0;

char m[100],re_m[100];

scanf("%d",&n);

scanf("%s",m);

while(!ishw(m)&&cnt<=30)

{

getReverse(m,re_m);

addToM(n,m,re_m);

cnt++;

}

if(!ishw(m)) printf("Impossible");

else printf("STEP=%d",cnt);

return 0;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值