金山笔试题 "写一个函数,对给定整数的二进制表示进行描述"

4.      写一个函数,对给定整数的二进制表示进行描述
如:给定整数131,其二进制表示为10000011,要求函数输出以下结果:

1: 2

0: 5

1: 1

表示从最低位开始,包含215011

 

 

参考上一题,确定本函数的名字,入口出口及返回值,并实现本函数



 

// 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;
}


 

 

posted @ 2013-06-08 20:52  爱生活,爱编程  阅读(240)  评论(0编辑  收藏  举报