杭电ACM1720+2057 十六进制的输入输出

具体题目

http://acm.hdu.edu.cn/showproblem.php?pid=2057

http://acm.hdu.edu.cn/showproblem.php?pid=1720

转载地址:

https://blog.csdn.net/xujinsmile/article/details/7836413

https://blog.csdn.net/i_fuqiang/article/details/8262844

代码:C语言 1720+2057

#include<stdio.h>
int main()
{
	int a,b;
	while(scanf("%x%x",&a,&b)!=EOF)
	{
		printf("%d\n",a+b);//对于2057 修改为 printf("%x\n",a+b);
	}
	return 0;
}

代码:C++ 1720+2057

#include<iostream>

#include<iomanip>

using namespace std;

int main(){
	__int64 a,b,c;
	while(cin>>hex>>a>>b){
		int c=0;
		c=a+b;
		if(c<0){
			cout<<"-";
			c=-c;
		}
		cout<<dec<<uppercase<<c<<endl;//2057:cout<<hex<<uppercase<<c<<endl;
	}
	return 0;
} 

注意事项:你要明白的是 计算机存入的数据是二进制 0 1  所以

scanf("%d",&a);就是你输入的一个十进制 比如 你输入10(这边是十进制数) 他也代表10(十六进制) 计算机存储是 10000

scanf("%x",&a);就是你输入的一个十六进制 比如 你输入10(是这边是十六进制数) 他也代表8(十进制) 计算机存储是 1000

而在计算b=a/15-273 的时候 计算机是用它们各自表示的二进制来计算的 因此事实上得到的b存在计算机里是以二进制存在的 只是当你输出时候利用强制转换输出才变成我们想要的十进制或者十六进制 比如: 在b输出时候用十六进制输出 也就是printf("%x",b);


C++也提供十六进制加法

头文件:#include <iomanip>
说明:是I/O流控制头文件,就像C里面的格式化输出一样

         控   制   符                             作           用                                     
 dec   设置整数为十进制
 hex  设置整数为十六进制
 oct  设置整数为八进制
 setbase(n)  设置整数为n进制(n=8,10,16)
 setfill(n)

 设置字符填充,c可以是字符常或符变量

 setprecision(n)  设置浮点数的有效数字为n位
 setw(n)  设置字段宽度为n位
 setiosflags(ios::fixed)  设置浮点数以固定的小数位数显示
 setiosflags(ios::scientific)    设置浮点数以科学计数法表示
 setiosflags(ios::left)  输出左对齐
 setiosflags(ios::right)  输出右对齐
 setiosflags(ios::skipws)  忽略前导空格
 setiosflags(ios::uppercase)  在以科学计数法输出E与十六进制输出X以大写输出,否则小写。
 setiosflags(ios::showpos)  输出正数时显示"+"号
 setiosflags(ios::showpoint)  强制显示小数点
 resetiosflags() 

 终止已经设置的输出格式状态,在括号中应指定内


hex的输出中字母默认为小写,需要加上uppercase

十六进制负数在计算机里表示为补码形式,要显示出带正负号的十六进制形式来就要对其取反加负号,-c即可!

阿呆

2057
#include<iostream>
#include<iomanip>
using namespace std;

int main(){
	__int64 a,b,c;
	while(cin>>hex>>a>>b){
		int c=0;
		c=a+b;
		if(c<0){
			cout<<"-";
			c=-c;
		}
		cout<<hex<<uppercase<<c<<endl;
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_40728285/article/details/80036671