915xjtu2020_2

反序数指整数各位取反之后的数。如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]);
		}
	}
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值