您的位置:首页 > 其它

输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。

2015-07-08 21:05 281 查看

//输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。

#include<iostream>

using namespace std;

int getResult(int n)

{

 if(n==0)

  return -1;

 int count=0;

 char str[100];

 int i=0;

 while(n)

 {

  str[i++]=n%2+'0';

  n/=2;

 }

 str[i]='\0';

 for(int k=i-1;k>=0;k++)

 {

  if(str[i]=='0')

  {

   str[i]='\0';

   count++;

  }

  else

   break;

 }

 int len=i-count;

 for(int k=0;k<len/2;k++)

 {

  char t=str[k];

  str[k]=str[i-k-1];

  str[i-k-1]=t;

 }

 int sum=0;

 for(int i=0;i<len;i++)

 {

  if(str[i]=='0')

   sum++;

 }

 return sum;

}

  

void main()

{

 int n;

 cin>>n;

 cout<<getResult(n)<<endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: