趣味程序设计求对称数C语言,趣味程序设计_求对称数

#include

#include

#include

using namespace std;

char s[500];

int str[500],mid,num,output[500];

int judge(int r) //判断是否进位例:99+1=100或999+1=1000

{ int inum=0,i=0,result=r;

while(r!=0)

{

r/=10;

inum++;

}

if(num%2!=0)

return inum>mid+1?1:0;

else

return inum>mid?1:0;

}

int main()

{

int T;

scanf("%d",&T);

while(T--)

{ int sum;

scanf("%s",s);

num=strlen(s);

for(int i=0;i

{

str[i]=s[i]-'0';

sum=sum*10+str[i];

}

//转换数组

mid=num/2;

int left=0;

if(num%2==0)

for(int i=0;i

left=left*10+str[i];

else

for(int i=0;i<=mid;i++)

left=left*10+str[i];

//算出取一半的数构造回文数

int r=left+1,result=r,j=0;//算出一半+1

while(r!=0)

{

output[j++]=r%10;

r/=10;

}

if(num==1&&sum!=9) //特殊数据的处理1--8

printf("%d",str[0]+1);

else if(sum==11) //特殊数据的处理11

printf("22");

else if(sum==9) //特殊数据的处理9

printf("10");

else if(num%2==1){ //处理位数是奇位数的数据

if(judge(result))

{ printf("%d",result/10);

for(int i=1;i!=j;i++)

printf("%d",output[i]);

}

else {

printf("%d",result);

for(int i=1;i!=j;i++)

printf("%d",output[i]);

}

}

else{ //处理位数是偶位数的数据

if(judge(result)){

printf("%d",result);

for(int i=1;i!=j;i++)

printf("%d",output[i]);

}

else{printf("%d",result);

for(int i=0;i!=j;i++)

printf("%d",output[i]);

}

}

printf("\n");

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值