您的位置:首页 > 移动开发 > Cocos引擎

题目244-16进制的简单运算

2017-08-10 00:44 267 查看


16进制的简单运算

时间限制:1000 ms  |  内存限制:65535 KB
难度:1

描述现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果。

输入第一行输入一个正整数T(0<T<100000)

接下来有T行,每行输入一个字符串s(长度小于15)字符串中有两个数和一个加号或者一个减号,且表达式合法并且所有运算的数都小于31位
输出每个表达式输出占一行,输出表达式8进制的结果。
样例输入
3
29+4823
18be+6784
4ae1-3d6c


样例输出
44114
100102
6565


//代码:

[html] view
plain copy

 print?

#include<stdio.h>   

int main(){  

    int T,x,y;  

    char ch;  

    scanf("%d",&T);  

    while(T--){  

        scanf("%x%c%x",&x,&ch,&y);  

        if(ch=='+')  

        printf("%o\n",x+y);  

        else  

        printf("%o\n",x-y);  

    }  

    return 0;  

}  

//最开始把问题想复杂了,用字符串数组模拟的,忘记用数据的基本格式类型就可以转化!!!!C语言的基本知识还是需要强化!!!!

格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。 

格式字符有d,o,x,u,c,s,f,e,g等。 


%d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
scanf(控制字符,地址列表) 

格式字符的含义同printf函数,地址列表是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。如scanf("%d%c%s",&a,&b,str);

另外一种做法,可以顺便学习C++的输入输出

#include<iostream>
#include<iomanip>
#include<cstdio>
using namespace std;
int main(){
ios::sync_with_stdio(false);
int t;cin>>t;
while(t--) {
int x,y;
char op;
cin>>hex>>x>>op>>y;
if(op == '+')cout<<setbase(8)<<(x+y)<<endl;
else cout<<setbase(8)<<(x-y)<<endl;
}
return 0;
}


▲setbase(int n) : 将数字转换为 n 进制.
   如 cout<<setbase(8)<<setw(5)<<255<<endl;
    cout<<setbase(10)<<setw(5)<<255<<endl;
    cout<<setbase(16)<<255<<endl;
   结果是:
   (空格)(空格)377
   (空格)(空格) 255
   (空格)(空格) ff

hex 是16进制,oct是8进制,dec是10进制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ cocos2d-x 进制转换