A + B Again【题解】附上不同进制数从键盘输入输出格式要求(1)

#include

using namespace std;

typedef long long ll;

int main()

{

ll a,b;

while(~scanf(“%llX%llX”,&a,&b))

{

if(a+b>=0)

printf(“%llX”,a+b);

else

printf(“-%llX”,-(a+b));

cout<<endl;

}

return 0;

}

【C++】:

#include

#include

using namespace std;

typedef long long ll;

int main()

{

ll a,b;

while(cin>>hex>>a>>b)

{

if(a+b>=0)

cout<<hex<<uppercase<<a+b<<endl;

else

cout<<hex<<uppercase<<‘-’<<-(a+b)<<endl;

}

return 0;

}

可以通过字符串来处理:但是我失败了;有一个朋友成功了,附上代码:

#include<stdio.h>

#include<string.h>

long long fun1(char *a)

{

long long b=0,len,i=0;

len=strlen(a);

if(a[0]‘-’||a[0]‘+’)

{

i=1;

}

while(i!=len)

{

if(a[i]<‘0’||(a[i]>‘9’&&a[i]<‘A’)||a[i]>‘Z’)

i++;

b=b*16;

switch(a[i])

{

case ‘A’:b=b+10;break;

case ‘B’:b=b+11;break;

case ‘C’:b=b+12;break;

case ‘D’:b=b+13;break;

case ‘E’:b=b+14;break;

case ‘F’:b=b+15;break;

default:b=b+a[i]-48;

}

i++;

}

if(a[0]==‘-’)

b=b*(-1);

return b;

}

void fun2(long long num)

{

char b[17];

int i,j;

i=-1;

if(num<0)

{ printf(“-”);

num=num*(-1);

}

if(num==0)

printf(“0\n”);

else

{

while(num/16)

{i++;

switch(num%16)

{

case 10:b[i]=‘A’;break;

case 11:b[i]=‘B’;break;

case 12:b[i]=‘C’;break;

case 13:b[i]=‘D’;break;

case 14:b[i]=‘E’;break;

case 15:b[i]=‘F’;break;

default:b[i]=num%16+48;

}

num=num/16;

}

if(num%16!=0)

{i++;

switch(num%16)

{

case 10:b[i]=‘A’;break;

case 11:b[i]=‘B’;break;

case 12:b[i]=‘C’;break;

case 13:b[i]=‘D’;break;

case 14:b[i]=‘E’;break;

case 15:b[i]=‘F’;break;

default:b[i]=num%16+48;

}

}

for(;i>=0;i–)

printf(“%c”,b[i]);

printf(“\n”);

}

}

int main()

{

char a[16],b[16];

while(~scanf(“%s %s”,a,b))

{

long long num;

num=fun1(a)+fun1(b);

fun2(num);

}

return 0;

}

不得不说这个大佬的基本功,太强了;

下面附加不同进制数从键盘输入:

【c++】:

======

默认进制

cin or cout在默认情况下按照十进制输入输出

八进制

要使输入为八进制数,首先切换至八进制输入

cin >> oct;

//接下里就可以输入八进制数了

cin >> a; // a 是八进制数

十六进制

要使输入为十六进制数,首先切换至十六进制输入

cin >> hex;

//接下里就可以输入十六进制数了

cin >> a; // a 是十六进制数

转换回十进制

要使输入为十进制数,首先切换至十进制输入

cin >> dec;

//接下里就可以输入十进制数了

cin >> a; // a 是十进制数

最后附加代码验证:

// 八进制:

#include

#include

using namespace std;

typedef long long ll;

int main()

{

ll a,b;

while(cin>>oct>>a>>b)

{

cout<<oct<<a+b<<endl;

}

return 0;

}

4 6

12

4 7

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值