反序数指整数各位取反之后的数。如321的反序是123,147的反序是741。现输入n组a,b(a,b均大于0并小于10000),如果a,b反转的和等于和的反正,则输出a,b。
例如a=123,b=456,那么a+b和为123+456=579,a与b的反转数和为321+654=975,579的反转数是975,满足题意故输出。
输入第一行为n代表输入的组数,下面几行代表几对数组。要求可以输入多组数据。符合条件则输出对应组数,否则输出none。
#include<stdio.h>
int jishu(int n){
int a,b,c,d;
if(n>=1000&&n<10000){
a=n/1000;
b=n/100%10;
c=n/10%10;
d=n%10;
return d*1000+c*100+b*10+a;
}else if(n>=100&&n<1000){
a=n/100;
b=n/10%10;
c=n%10;
return c*100+b*10+a;
}else if(n>=10&&n<100){
a=n/10%10;
b=n%10;
return b*10+a;
}else if(n>0&&n<10){
return n;
}else{
return -1;
}
}
int main(){
int n;
printf("请输入整数个数数组:");
scanf("%d",&n);
int a[n],b[n];//a,b均大于0并小于10000
for(int i=0;i<n;i++){
printf("请输入两个数:");
scanf("%d %d",&a[i],&b[i]);
if(a[i]>=10000||a[i]<=0||b[i]>=10000||b[i]<=0){
printf("输入数据不合法,请重新输入!要求输入数据均大于0并小于10000。\n");
continue;
}
int af,bf;
int m=a[i]+b[i];//a+b
af=jishu(a[i]);
bf=jishu(b[i]);
int mf=af+bf;
//printf("前:%d,后:%d\n",a[i]+b[i],af+bf);
if(jishu(mf)==m){
printf("%d与%d可以组成反序数!\n",a[i],b[i]);
}else{
printf("%d与%d不可以组成反序数!\n",a[i],b[i]);
}
}
}