十六进制两数相加—航电oj2057

本文介绍了一种处理十六进制数加法的方法,通过使用C语言实现,能够有效地处理正负数的情况,并且考虑了十六进制数的特殊性质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Input
The input contains several test cases, please process to the end of the file.Each case consists of two hexadecimal integers A and B in a line seperated by a blank.The length of A and B is less than 15.‎
输入包含多个测试用例,请处理到文件的末尾。每个情况由两个十六进制整数 A 和 B 组成,在一行中由空格分开。A 和 B 的长度小于 15。‎

Output
For each test case,print the sum of A and B in hexadecimal in one line.‎
对于每个测试用例,将十六进制的 A 和 B 之和打印在一行中。‎

Sample Input
+A -A
+1A 12
1A -9
-1A -12
1A -AA

Sample Output
0
2C
11
-2C
-90
思路:
两个十六进制数使用%llx输入并相加,若为和负数,则需要输出它的反,并在前面添加负号。(注:16进制数长度小于15位,所以换算成2进制位的话小于64(16*4)位,需用长整形%llx。)

代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	long long a,b,s;//16进制数长度小于15位,所以换算成2进制位的话小于64(16*4)位,需用长整形。
	while(scanf("%llX%llX",&a,&b)!=EOF)	
	{
		s=a+b;
		if(s<0)     //若为负数,则输出-s,添加负号 
			printf("-%llX\n",-s);			
		else
		 	printf("%llX\n",s);
	}		    
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值