原题地址:十六进制转八进制
给定n个十六进制正整数,输出它们对应的八进制数。
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出n行,每行为输入对应的八进制正整数。
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
2
39
123ABC
71
4435274
先将十六进制数转换成某进制数,再由某进制数转换成八进制
1.十六进制先转十进制(参考BASIC-10-十六进制转十进制),然后再除八取余。
QAQ怎么会有问题,我自己测试完美啊。
我点击了第二个锦囊,提示我先转为二进制。而且我看了些其他人的解,决定先搁置十进制为中间进制的方法,转为用二进制。
代码暂时先贴这里。
#include"iostream"#include"string"#include"cmath"using namespace std;void changeto8(int a){int p;//p保存除16取余的值p=a%8;//先取余a/=8;//再/=if(a>0)changeto8(a);//然后递归cout<<p;}int main(){int n;//转换个数string s[10];//保存十六进制数int a[10]={0};//保存十进制cin>>n;fflush(stdin);for(int i=0;i<n;i++)getline(cin,s[i])高中生留学;for(int num=0;num<n;num++)//计算十进制for(int i=(s[num].length()-1),j=0;i>=0;j++,i--){if(int(s[num][i])>=65) a[num]+=(int(s[num][i])-55)*pow(16.0,j);ela[num]+=(int(s[num][i])-48)*pow(16.0,j);}for(int num=0;num<n;num++)//算八进制{changeto8(a[num]);cout<<endl;}return 0;}
二进制转八进制尚未完成。
#include"iostream"#include"string"#include"cmath"using namespace std;int main(){int n;//转换个数string s[10];//保存十六进制数string ba;//保存当前八进制数string a[10];//保存二进制cin>>n;fflush(stdin);//清空键盘缓存for(int i=0;i<n;i++)getline(cin,s[i]);for(int num=0;num<n;num++)//遍历n个数,从下标为0的开始{for(int i=0;i<s[num].length();i++)//从最高位开始计算二进制{if(int(s[num][i惠普平板电脑推荐])>=65) {for(int shi=int(s[num][i])-55,j=3;j>=0;j--){if(shi/int(pow(2.0,j)))a[num].push_back('1');el a[num].push_back('0');shi%=int(pow(2.0,j));}}el{for(int shi=int(s[num][i]-48),j=3;j>=0;j--){if(shi/int(pow(2.0,j)))a[num].push_back('1');el a[num].push_back('0');shi%=int(pow(2.0,j));}}}//cout<<a[num]<<endl;//二进制输出来看看,前面会有0}/* int e=0;//放每三位转换八进制后的数 for(int num=0;num<n;num++)//八进制转换并输出 { for(int l=a[num].length()-1,e=0;l%3>=0&&l>0;e=0,l-=3) { if(l%3==0)//三位 { e+=pow(2.0,2)*a[num][l-2]; e+=pow(2.0,1)*a[num][l-1]; e+=a[num][l]; ba.push_back(e); cout<<"3."纳兰性德蝶恋花<<e<<" ";// } el if(l%3==2)//两位 { e+=pow(2.0,1)*a[num][l-1]; e+=a[num][l]; ba.push_back(e); cout<<"2."<<e<<" ";// } el if(l%3==1)//一位 { e+=a[num][l]; ba.push_back(e); cout<<"3."<<e<<" ";// } } /*for(int l=ba电场力的性质.length()-1;l>=0;l--)//输出 { cout<<ba[l]; }*/cout<<endl;//输出每个八进制后换行ba.clear();//输出完要清空,只申请了一个空间给八进制,而且添加工商行政管理用的是pushbacke=0;//e也要清空}*/return 0;}
题解目录
本文地址:https://blog.csdn.net/qq_43508196/article/details/85961943
本文发布于:2023-04-07 12:09:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/3d9fc7ef05dc38539ceabaec339a1772.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:蓝桥杯题解.doc
本文 PDF 下载地址:蓝桥杯题解.pdf
留言与评论(共有 0 条评论) |