金山笔试题 "写一个函数,对给定整数的二进制表示进行描述"
4. 写一个函数,对给定整数的二进制表示进行描述
如:给定整数131,其二进制表示为10000011,要求函数输出以下结果:
1: 2
0: 5
1: 1
表示从最低位开始,包含2个1,5个0,1个1。
参考上一题,确定本函数的名字,入口出口及返回值,并实现本函数
// js.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; void ParseInt(int n); int _tmain(int argc, _TCHAR* argv[]) { int n; cin >> n; ParseInt(n); system("pause"); return 0; } void ParseInt(int n) { int cnt =0; int temp =-1; for(int i=0;i<8;++i) { if(n&(1<<i)) { if(temp < 0) //第一次 { temp=1; ++cnt; } else if(temp != 1)//遇到不同的数 { cout << "0:" << cnt << endl; //打印上一段的结果 temp=1; cnt=1; } else { cnt++; } } else { if(temp < 0) { temp =0; ++cnt; } else if(temp != 0) { cout << "1:" << cnt << endl; //打印上一段的结果 temp=0; cnt=1; } else { cnt++; } } } cout<<temp<<':'<<cnt << endl; }