admin管理员组文章数量:1794759
蓝桥杯练习(进制转换)
进制转换非常常见,如十进制转化为十六进制(n进制),八进制转划为十六进制,这里写几种进制转化,其余类似套用即可
一 . 十进制转化为其他进制(n进制)
十进制转化为n进制,则是将数不停对n求余,余数倒序输出,这非常符合栈stack这种结构,数据先进后出
附上十进制转化为十六进制的代码
#include<iostream> #include<stack> using namespace std; int main() { int n,m; char c; stack<int> s; //定义一个栈结构 cin>>n; if(n==0) cout<<0; //0的情况一定不要忘记 else{ while(n) {//循环里的16可以替换 m=n%16; //m表示余数 s.push(m); //将余数压入栈 n=n/16; } while(!s.empty()) //当栈不为空时,就输出结果 { if(s.top()>=10) { //若栈顶大于十,则根据ACII码输出对应字母 ,还有第二钟方法 char c=s.top()-9+64; cout<<c; } else cout<<s.top(); s.pop(); //将已经用过的数弹出栈 } } return 0; }法二:
#include<iostream> #include<stack> using namespace std; int main(){ char s[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; //避免后期的ACII转码,比较方便 int n; stack<char> s; //字符型 cin>>n; if(n==0) cout<<0; else{ while(n) { s.push(s[n%16]); n /= 16; } while(!s.empty()) { cout<<s.top(); s.pop(); } } return 0; }十六进制转为十进制
#include<iostream> #include<string> using namespace std; int main() { string s; while(cin>>s) { long long sum=0; for(int i=0; i<s.length(); i++) { if(s[i]>='A'&&s[i]<='F') sum=sum*16+s[i]-'A'+10; else sum=sum*16+s[i]-'0'; } cout<<sum<<endl; } return 0; }这两种转化是基础,其余都是在此上变化组合
如八进制转化为十六进制,就是将值先转化为十进制,再转为十六进制,两者结合即可
本文标签: 蓝桥杯
版权声明:本文标题:蓝桥杯练习(进制转换) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686579640a84013.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论