解题思路:
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语言训练-斐波纳契数列 (C语言代码)浏览:2826 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:1031 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:653 |
ASCII帮了大忙浏览:749 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:902 |
数组输出 (C语言代码)--此题的题目描述有问题浏览:1817 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:600 |
【偶数求和】 (C语言代码)浏览:646 |
1113题解浏览:789 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:600 |