强悍的%x 十六进制输入输出

来源:互联网 发布:淘宝店铺怎么转 编辑:程序博客网 时间:2024/06/05 22:50

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

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

代码是同一个:

简单的想哭。。。想了好复杂;

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

2057要用%I64X;

在这里 你要明白的是 计算机存入的数据是二进制 0 1  所以

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

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

而在计算b=a/15-273 的时候 计算机是用它们各自表示的二进制来计算的 因此事实上得到的b存在计算机里是以二进制存在的 只是当

你输出时候利用强制转换输出才变成我们想要的十进制或者十六进制 比如: 在b输出时候用十六进制输出 也就是printf("%x",b);


在c++中;默认状态下,数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。

int i, j, k, l;
cout<<”Input i(oct), j(hex), k(hex), l(dec):”<<endl;
cin>>oct>>i; //输入为八进制数
cin>>hex>>j; //输入为十六进制数
cin>>k; //输入仍为十六进制数
cin>>dec>>l; //输入为十进制数
cout<<”hex:”<<”i=”<<hex<<i<<endl;
cout<<”dec:”<<”j=”<<dec<<j<<′\t′<<”k=”<<k<<endl;
cout<<”oct:”<<”l=”<<oct<<l;
cout<<dec<<endl; //恢复十进制输出状态


输出十六进制:

cout<<setiosflags(ios::uppercase)<<a<<endl;

原创粉丝点击