原题链接:十->二进制转换
解题思路:
1.先直接输入n,如果n=0了,直接输出0-->0,如果n>0,进行进制转换运算,如果n<0,先输出一个负号(-)然后n取反,再进行进制转换运算。
2.期间利用了vector,不过感觉在这里用起来反而更加麻烦。
for(vector<int>::reverse_iterator it=ss.rbegin(); it!=ss.rend(); it++) {
cout<<*it;
}
这一句话主要是逆序迭代器,然后利用迭代器来进行输出,指针就是间接指向最末端的值,再依次后移而已(后移是往前面取值,因为reverse_iterator,逆序迭代器了,当然可以不逆序迭代器直接用it--而不是it++的方式进行前移)
3.ss.push_back(n%2);是输入,也可以直接ss[i]=n%2的方式进行输入
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
while(cin>>n) {
cout<<n<<"-->";
vector<int> ss;
if(n==0)
cout<<'0'<<endl;
else if(n>0) {
bug:
while(n>0) {
ss.push_back(n%2);
n=n/2;
}
for(vector<int>::reverse_iterator it=ss.rbegin(); it!=ss.rend(); it++) {
cout<<*it;
}
cout<<endl;
} else {
n=-n;
cout<<'-';
goto bug;
}
}
return 0;
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复