用c++实现输入两个十六进制数相加或相减,输出其二进制数相加或相减,结果为十进制数

如:输入:A+3AAA+BBB输出:0000000001010+0000000000011=130101010101010+0101110111011=5733(二进制数... 如:输入:A+3
AAA+BBB
输出:0000000001010 + 0000000000011 = 13
0101010101010 + 0101110111011 = 5733(二进制数为13位)
展开
 我来答
游戏放松小助手
高粉答主

2020-03-28 · 我是游戏小达人,乐于助人
游戏放松小助手
采纳数:32 获赞数:76904

向TA提问 私信TA
展开全部

1、首先,定义一个整型数组,保存所有的整数。

2、定义一个自定义函数,判断两个数的大小。自定义函数中,如果两个整数不相同,则判断它们的大小。

3、主函数中,先定义两个整型变量,保存数值的个数和有无相同数值的判断。

4、输入数值的个数,保存在变量n中。输入所有的数值,保存在数组num中。

5、将数组中的所有数值按从小到大的顺序排列,如下图所示。

6、用for循环语句判断每个数值,是否有相同的数。如果一个数有相同的数值,则输出所有相同数,用while语句实现所有数的判断。

cdyzxy
2018-04-12 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3775万
展开全部
#include<iostream>
using namespace std;
int gethex(char *s) { int r=0;
  while ( *s ) {
    r*=16;
    if ( *s>='0' && *s<='9' ) r+=*s-'0';
    else if ( *s>='a' && *s<='f' ) r+=*s-'a'+10;
    else if ( *s>='A' && *s<='F' ) r+=*s-'A'+10;
    s++;
  }
  return r;
}
void main() { int i,b,bb,x,y,z; char str[80];
  while ( 1 ) {
    cin>>str;
    i=0; b=-1; 
    while ( str[i] ) { if ( str[i]=='+' || str[i]=='-' ) { b=i; break; } else i++; }
    if ( b>=0 ) {
      bb=( str[b]=='+' )?(0):(1); str[b]=0;
      x=gethex(str); y=gethex(str+b+1); z=x; z+=( bb )?(-y):(y);
      for ( i=0,b=0x1000;i<13;i++,b>>=1 ) cout<<(( x&b )?(1):(0));
      cout<<' '<<(( bb )?('-'):('+'))<<' ';
      for ( i=0,b=0x1000;i<13;i++,b>>=1 ) cout<<(( y&b )?(1):(0));
      cout<<" = "<<z<<endl;
    } else break;
  }
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式